Mercury-IM/data/src/main/java/org/mercury_im/messenger/data/di/RepositoryModule.java

116 lines
4.9 KiB
Java
Raw Normal View History

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;
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;
import org.mercury_im.messenger.data.repository.MessageRepository;
import org.mercury_im.messenger.data.repository.PeerRepository;
2019-11-23 21:16:03 +01:00
import org.mercury_im.messenger.data.repository.DirectChatRepository;
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;
import org.mercury_im.messenger.data.repository.XmppMessageRepository;
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);
}
@Provides
@Singleton
2019-12-08 18:27:34 +01:00
static MessageRepository provideMessageRepository(
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-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
}