Mercury-IM/app/src/main/java/org/mercury_im/messenger/android/di/component/AppComponent.java

123 lines
4.8 KiB
Java

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.android.ui.account.detail.AndroidAccountDetailsViewModel;
import org.mercury_im.messenger.android.ui.account.login.AndroidIkeyInfoViewModel;
import org.mercury_im.messenger.android.ui.account.login.EnterAccountDetailsFragment;
import org.mercury_im.messenger.android.ui.account.login.AndroidIkeySetupViewModel;
import org.mercury_im.messenger.android.ui.contacts.AndroidContactListViewModel;
import org.mercury_im.messenger.android.crypto.ikey.AndroidIkeyBackupCreationViewModel;
import org.mercury_im.messenger.core.di.module.IkeyModule;
import org.mercury_im.messenger.core.di.module.OpenPgpModule;
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.StanzaIdSourceFactoryModule;
import org.mercury_im.messenger.core.di.module.XmppTcpConnectionFactoryModule;
import org.mercury_im.messenger.core.viewmodel.account.detail.AccountDetailsViewModel;
import org.mercury_im.messenger.core.viewmodel.account.list.AccountListViewModel;
import org.mercury_im.messenger.core.viewmodel.chat.ChatViewModel;
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.MercuryForegroundService;
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.list.AndroidAccountListViewModel;
import org.mercury_im.messenger.android.ui.account.login.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.AndroidChatListViewModel;
import org.mercury_im.messenger.android.ui.contacts.detail.ContactDetailActivity;
import org.mercury_im.messenger.android.ui.contacts.detail.ContactDetailViewModel;
import org.mercury_im.messenger.core.viewmodel.account.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,
OpenPgpModule.class,
IkeyModule.class,
RxMercuryRosterStoreFactoryModule.class,
StanzaIdSourceFactoryModule.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);
void inject(EnterAccountDetailsFragment enterAccountDetailsFragment);
// ViewModels
void inject(AndroidContactListViewModel contactListViewModel);
void inject(AndroidChatViewModel androidChatViewModel);
void inject(ChatViewModel chatViewModel);
void inject(ChatInputViewModel chatInputViewModel);
void inject(AndroidLoginViewModel androidLoginViewModel);
void inject(AndroidAccountListViewModel androidAccountsViewModel);
void inject(AndroidChatListViewModel chatListViewModel);
void inject(ContactDetailViewModel contactDetailViewModel);
void inject(AccountDetailsViewModel accountDetailsViewModel);
void inject(AndroidAccountDetailsViewModel accountDetailsViewModel);
void inject(AndroidIkeyBackupCreationViewModel androidIkeyBackupCreationViewModel);
void inject(AndroidIkeySetupViewModel androidIkeySetupViewModel);
// void inject(AndroidOxSecretKeyBackupRestoreViewModel androidOxSecretKeyBackupRestoreViewModel);
void inject(AndroidIkeyInfoViewModel androidIkeyInfoViewModel);
// Common VMs
void inject(LoginViewModel loginViewModel);
void inject(AccountListViewModel accountsViewModel);
// Services
void inject(MercuryForegroundService service);
void inject(MercuryEntityCapsStore store);
}