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

123 lines
4.8 KiB
Java
Raw Normal View History

2020-06-06 18:45:20 +02:00
package org.mercury_im.messenger.android.di.component;
2019-05-13 03:19:17 +02:00
2020-06-06 18:45:20 +02:00
import org.mercury_im.messenger.android.MercuryImApplication;
2020-06-09 21:52:53 +02:00
import org.mercury_im.messenger.android.di.module.AndroidDatabaseModule;
import org.mercury_im.messenger.android.di.module.AndroidSchedulersModule;
2020-07-13 18:49:29 +02:00
import org.mercury_im.messenger.android.ui.account.detail.AndroidAccountDetailsViewModel;
2020-11-19 23:36:49 +01:00
import org.mercury_im.messenger.android.ui.account.login.AndroidIkeyInfoViewModel;
2020-11-09 15:23:22 +01:00
import org.mercury_im.messenger.android.ui.account.login.EnterAccountDetailsFragment;
2020-11-19 23:36:49 +01:00
import org.mercury_im.messenger.android.ui.account.login.AndroidIkeySetupViewModel;
import org.mercury_im.messenger.android.ui.contacts.AndroidContactListViewModel;
2020-11-09 15:23:22 +01:00
import org.mercury_im.messenger.android.crypto.ikey.AndroidIkeyBackupCreationViewModel;
import org.mercury_im.messenger.core.di.module.IkeyModule;
2020-07-18 14:11:04 +02:00
import org.mercury_im.messenger.core.di.module.OpenPgpModule;
2020-06-09 21:52:53 +02:00
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;
2020-06-06 18:54:56 +02:00
import org.mercury_im.messenger.core.di.module.XmppTcpConnectionFactoryModule;
2020-07-13 18:49:29 +02:00
import org.mercury_im.messenger.core.viewmodel.account.detail.AccountDetailsViewModel;
import org.mercury_im.messenger.core.viewmodel.account.list.AccountListViewModel;
2020-07-13 01:39:26 +02:00
import org.mercury_im.messenger.core.viewmodel.chat.ChatViewModel;
2019-12-06 15:52:50 +01:00
import org.mercury_im.messenger.data.di.RepositoryModule;
2020-06-06 18:45:20 +02:00
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;
2020-06-09 21:52:53 +02:00
import org.mercury_im.messenger.core.store.caps.MercuryEntityCapsStore;
2020-06-06 18:45:20 +02:00
import org.mercury_im.messenger.android.ui.MainActivity;
2020-07-13 18:49:29 +02:00
import org.mercury_im.messenger.android.ui.account.list.AndroidAccountListViewModel;
import org.mercury_im.messenger.android.ui.account.login.AndroidLoginViewModel;
2020-06-06 18:45:20 +02:00
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;
2020-06-09 21:52:53 +02:00
import org.mercury_im.messenger.android.ui.chat.AndroidChatViewModel;
2020-07-13 18:49:29 +02:00
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;
2020-07-13 18:49:29 +02:00
import org.mercury_im.messenger.core.viewmodel.account.LoginViewModel;
2019-05-13 03:19:17 +02:00
import javax.inject.Singleton;
2019-09-23 23:20:43 +02:00
import dagger.Component;
2019-08-04 04:22:08 +02:00
/**
* Main Application Component that binds together all the modules needed for the Android
* application.
*/
2019-05-13 03:19:17 +02:00
@Singleton
@Component(
modules = {
AppModule.class,
2020-06-09 21:52:53 +02:00
AndroidDatabaseModule.class,
AndroidSchedulersModule.class,
RepositoryModule.class,
2020-06-06 18:54:56 +02:00
ViewModelModule.class,
2020-06-09 21:52:53 +02:00
XmppTcpConnectionFactoryModule.class,
RxMercuryMessageStoreFactoryModule.class,
2020-07-18 14:11:04 +02:00
OpenPgpModule.class,
2020-11-09 15:23:22 +01:00
IkeyModule.class,
RxMercuryRosterStoreFactoryModule.class,
StanzaIdSourceFactoryModule.class
})
2019-05-13 03:19:17 +02:00
public interface AppComponent {
// Application
void inject(MercuryImApplication mercuryImApplication);
2019-06-03 01:16:49 +02:00
2019-05-13 03:19:17 +02:00
// Views
void inject(MainActivity mainActivity);
void inject(ChatActivity chatActivity);
void inject(ChatInputFragment chatInputFragment);
void inject(ContactDetailActivity contactDetailActivity);
2020-11-09 15:23:22 +01:00
void inject(EnterAccountDetailsFragment enterAccountDetailsFragment);
2019-06-03 01:16:49 +02:00
2019-05-13 03:19:17 +02:00
// ViewModels
2020-07-13 01:39:26 +02:00
void inject(AndroidContactListViewModel contactListViewModel);
2019-05-13 03:19:17 +02:00
2020-06-09 21:52:53 +02:00
void inject(AndroidChatViewModel androidChatViewModel);
2019-05-13 03:19:17 +02:00
2020-07-13 01:39:26 +02:00
void inject(ChatViewModel chatViewModel);
2019-05-13 03:19:17 +02:00
void inject(ChatInputViewModel chatInputViewModel);
void inject(AndroidLoginViewModel androidLoginViewModel);
2019-05-13 03:19:17 +02:00
2020-07-13 18:49:29 +02:00
void inject(AndroidAccountListViewModel androidAccountsViewModel);
2019-06-03 01:16:49 +02:00
2020-07-13 18:49:29 +02:00
void inject(AndroidChatListViewModel chatListViewModel);
void inject(ContactDetailViewModel contactDetailViewModel);
void inject(AccountDetailsViewModel accountDetailsViewModel);
void inject(AndroidAccountDetailsViewModel accountDetailsViewModel);
2020-11-09 15:23:22 +01:00
void inject(AndroidIkeyBackupCreationViewModel androidIkeyBackupCreationViewModel);
2020-11-19 23:36:49 +01:00
void inject(AndroidIkeySetupViewModel androidIkeySetupViewModel);
2020-11-09 15:23:22 +01:00
// void inject(AndroidOxSecretKeyBackupRestoreViewModel androidOxSecretKeyBackupRestoreViewModel);
2020-07-09 02:10:47 +02:00
2020-11-19 23:36:49 +01:00
void inject(AndroidIkeyInfoViewModel androidIkeyInfoViewModel);
2019-06-03 01:16:49 +02:00
2020-11-09 15:23:22 +01:00
// Common VMs
void inject(LoginViewModel loginViewModel);
2020-07-13 18:49:29 +02:00
void inject(AccountListViewModel accountsViewModel);
2019-05-13 03:19:17 +02:00
// Services
void inject(MercuryForegroundService service);
2019-05-27 21:34:11 +02:00
2020-01-06 03:41:37 +01:00
void inject(MercuryEntityCapsStore store);
2020-11-09 15:23:22 +01:00
2019-05-13 03:19:17 +02:00
}