2019-11-23 21:16:03 +01:00
|
|
|
package org.mercury_im.messenger.data.di;
|
|
|
|
|
2019-12-06 20:25:33 +01:00
|
|
|
import org.mercury_im.messenger.data.mapping.AccountMapping;
|
|
|
|
import org.mercury_im.messenger.data.mapping.DirectChatMapping;
|
2020-01-06 03:41:37 +01:00
|
|
|
import org.mercury_im.messenger.data.mapping.EntityCapsMapping;
|
2019-12-06 20:25:33 +01:00
|
|
|
import org.mercury_im.messenger.data.mapping.GroupChatMapping;
|
2019-12-07 02:04:31 +01:00
|
|
|
import org.mercury_im.messenger.data.mapping.MessageMapping;
|
2019-12-06 20:25:33 +01:00
|
|
|
import org.mercury_im.messenger.data.mapping.PeerMapping;
|
2019-11-23 21:16:03 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.AccountRepository;
|
2020-01-06 03:41:37 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.EntityCapsRepository;
|
2019-12-06 20:25:33 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.GroupChatRepository;
|
2019-12-07 02:04:31 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.MessageRepository;
|
2019-12-02 00:37:35 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.PeerRepository;
|
2019-11-23 21:16:03 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.DirectChatRepository;
|
2019-12-21 00:27:48 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.XmppEntityCapsRepository;
|
2019-12-09 15:49:59 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.Repositories;
|
2019-11-23 21:16:03 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.XmppAccountRepository;
|
|
|
|
import org.mercury_im.messenger.data.repository.XmppDirectChatRepository;
|
2019-12-06 20:25:33 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.XmppGroupChatRepository;
|
2019-12-07 02:04:31 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.XmppMessageRepository;
|
2019-12-02 00:37:35 +01:00
|
|
|
import org.mercury_im.messenger.data.repository.XmppPeerRepository;
|
2019-11-23 21:16:03 +01:00
|
|
|
import org.mercury_im.messenger.util.ThreadUtils;
|
|
|
|
|
|
|
|
import javax.inject.Named;
|
|
|
|
import javax.inject.Singleton;
|
|
|
|
|
|
|
|
import dagger.Module;
|
|
|
|
import dagger.Provides;
|
|
|
|
import io.reactivex.Scheduler;
|
|
|
|
import io.requery.Persistable;
|
|
|
|
import io.requery.reactivex.ReactiveEntityStore;
|
|
|
|
|
2019-12-08 18:27:34 +01:00
|
|
|
@Module(includes = {
|
|
|
|
MappingModule.class,
|
|
|
|
DaoModule.class
|
|
|
|
})
|
2019-11-23 21:16:03 +01:00
|
|
|
public class RepositoryModule {
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
@Singleton
|
2019-12-08 18:27:34 +01:00
|
|
|
static AccountRepository provideAccountRepository(
|
2019-12-01 19:56:13 +01:00
|
|
|
ReactiveEntityStore<Persistable> data,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
2019-12-06 20:25:33 +01:00
|
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler,
|
|
|
|
AccountMapping accountMapping) {
|
|
|
|
return new XmppAccountRepository(data, ioScheduler, uiScheduler, accountMapping);
|
2019-11-23 21:16:03 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
@Singleton
|
2019-12-08 18:27:34 +01:00
|
|
|
static PeerRepository providePeerRepository(
|
2019-12-01 19:56:13 +01:00
|
|
|
ReactiveEntityStore<Persistable> data,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
2019-12-06 20:25:33 +01:00
|
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler,
|
2019-12-21 16:30:14 +01:00
|
|
|
PeerMapping peerMapping,
|
|
|
|
AccountRepository accountRepository) {
|
|
|
|
return new XmppPeerRepository(data, ioScheduler, uiScheduler, peerMapping, accountRepository);
|
2019-11-23 21:16:03 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
@Singleton
|
2019-12-08 18:27:34 +01:00
|
|
|
static DirectChatRepository provideDirectChatRepository(
|
2019-12-01 19:56:13 +01:00
|
|
|
ReactiveEntityStore<Persistable> data,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
2019-12-06 20:25:33 +01:00
|
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler,
|
|
|
|
DirectChatMapping directChatMapping) {
|
2019-12-08 18:27:34 +01:00
|
|
|
return new XmppDirectChatRepository(data, ioScheduler, uiScheduler, directChatMapping);
|
2019-11-23 21:16:03 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@Provides
|
|
|
|
@Singleton
|
2019-12-08 18:27:34 +01:00
|
|
|
static GroupChatRepository provideGroupChatRepository(
|
2019-12-06 20:25:33 +01:00
|
|
|
ReactiveEntityStore<Persistable> data,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler,
|
|
|
|
GroupChatMapping groupChatMapping) {
|
|
|
|
return new XmppGroupChatRepository(data, ioScheduler, uiScheduler, groupChatMapping);
|
|
|
|
}
|
|
|
|
|
2019-12-07 02:04:31 +01:00
|
|
|
@Provides
|
|
|
|
@Singleton
|
2019-12-08 18:27:34 +01:00
|
|
|
static MessageRepository provideMessageRepository(
|
2019-12-07 02:04:31 +01:00
|
|
|
ReactiveEntityStore<Persistable> data,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler,
|
|
|
|
MessageMapping messageMapping,
|
|
|
|
DirectChatMapping directChatMapping,
|
2019-12-08 22:49:42 +01:00
|
|
|
GroupChatMapping groupChatMapping) {
|
|
|
|
return new XmppMessageRepository(data, ioScheduler, uiScheduler,
|
|
|
|
messageMapping, directChatMapping, groupChatMapping);
|
2019-12-07 02:04:31 +01:00
|
|
|
}
|
|
|
|
|
2019-12-06 20:25:33 +01:00
|
|
|
@Provides
|
|
|
|
@Singleton
|
2020-01-06 03:41:37 +01:00
|
|
|
static EntityCapsRepository provideCapsRepository(
|
2019-12-01 19:56:13 +01:00
|
|
|
ReactiveEntityStore<Persistable> data,
|
|
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
2020-01-06 03:41:37 +01:00
|
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler,
|
|
|
|
EntityCapsMapping entityCapsMapping) {
|
|
|
|
return new XmppEntityCapsRepository(data, ioScheduler, uiScheduler, entityCapsMapping);
|
2019-11-23 21:16:03 +01:00
|
|
|
}
|
2019-12-09 15:49:59 +01:00
|
|
|
|
|
|
|
@Provides
|
|
|
|
@Singleton
|
|
|
|
static Repositories provideRepositories(
|
|
|
|
AccountRepository accountRepository,
|
|
|
|
DirectChatRepository directChatRepository,
|
|
|
|
GroupChatRepository groupChatRepository,
|
|
|
|
MessageRepository messageRepository,
|
2020-01-06 03:41:37 +01:00
|
|
|
PeerRepository peerRepository,
|
|
|
|
XmppEntityCapsRepository entityCapsRepository) {
|
2019-12-09 15:49:59 +01:00
|
|
|
return new Repositories(accountRepository, directChatRepository, groupChatRepository,
|
2020-01-06 03:41:37 +01:00
|
|
|
messageRepository, peerRepository, entityCapsRepository);
|
2019-12-09 15:49:59 +01:00
|
|
|
}
|
2019-11-23 21:16:03 +01:00
|
|
|
}
|