package org.mercury_im.messenger.android.di.component; import org.mercury_im.messenger.android.MercuryImApplication; import org.mercury_im.messenger.android.di.module.AndroidDatabaseModule; import org.mercury_im.messenger.android.di.module.AndroidSchedulersModule; import org.mercury_im.messenger.core.di.module.RxMercuryMessageStoreFactoryModule; import org.mercury_im.messenger.core.di.module.RxMercuryRosterStoreFactoryModule; import org.mercury_im.messenger.core.di.module.XmppTcpConnectionFactoryModule; import org.mercury_im.messenger.data.di.RepositoryModule; import org.mercury_im.messenger.android.di.module.AppModule; import org.mercury_im.messenger.core.di.module.ViewModelModule; import org.mercury_im.messenger.android.service.MercuryConnectionService; import org.mercury_im.messenger.core.store.caps.MercuryEntityCapsStore; import org.mercury_im.messenger.android.ui.MainActivity; import org.mercury_im.messenger.android.ui.account.AndroidAccountsViewModel; import org.mercury_im.messenger.android.ui.account.AndroidLoginViewModel; import org.mercury_im.messenger.android.ui.chat.ChatActivity; import org.mercury_im.messenger.android.ui.chat.ChatInputFragment; import org.mercury_im.messenger.android.ui.chat.ChatInputViewModel; import org.mercury_im.messenger.android.ui.chat.AndroidChatViewModel; import org.mercury_im.messenger.android.ui.chatlist.ChatListViewModel; import org.mercury_im.messenger.android.ui.roster.contacts.ContactListViewModel; import org.mercury_im.messenger.android.ui.roster.contacts.detail.ContactDetailActivity; import org.mercury_im.messenger.android.ui.roster.contacts.detail.ContactDetailViewModel; import org.mercury_im.messenger.core.viewmodel.accounts.AccountsViewModel; import org.mercury_im.messenger.core.viewmodel.accounts.LoginViewModel; import javax.inject.Singleton; import dagger.Component; /** * Main Application Component that binds together all the modules needed for the Android * application. */ @Singleton @Component( modules = { AppModule.class, AndroidDatabaseModule.class, AndroidSchedulersModule.class, RepositoryModule.class, ViewModelModule.class, XmppTcpConnectionFactoryModule.class, RxMercuryMessageStoreFactoryModule.class, RxMercuryRosterStoreFactoryModule.class }) public interface AppComponent { // Application void inject(MercuryImApplication mercuryImApplication); // Views void inject(MainActivity mainActivity); void inject(ChatActivity chatActivity); void inject(ChatInputFragment chatInputFragment); void inject(ContactDetailActivity contactDetailActivity); // ViewModels void inject(ContactListViewModel contactListViewModel); void inject(AndroidChatViewModel androidChatViewModel); void inject(ChatInputViewModel chatInputViewModel); void inject(AndroidLoginViewModel androidLoginViewModel); void inject(AndroidAccountsViewModel androidAccountsViewModel); void inject(ChatListViewModel chatListViewModel); void inject(ContactDetailViewModel contactDetailViewModel); // Common VMs void inject(LoginViewModel loginViewModel); void inject(AccountsViewModel accountsViewModel); // Services void inject(MercuryConnectionService service); void inject(MercuryEntityCapsStore store); }