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

60 lines
2.3 KiB
Java
Raw Normal View History

2019-11-23 21:16:03 +01:00
package org.mercury_im.messenger.data.di;
import org.mercury_im.messenger.data.repository.AccountRepository;
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.EntityCapsRepository;
import org.mercury_im.messenger.data.repository.XmppAccountRepository;
import org.mercury_im.messenger.data.repository.XmppDirectChatRepository;
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-06 15:52:50 +01:00
@Module(includes = MappingModule.class)
2019-11-23 21:16:03 +01:00
public class RepositoryModule {
@Provides
@Singleton
2019-12-01 19:56:13 +01:00
public static AccountRepository provideAccountRepository(
ReactiveEntityStore<Persistable> data,
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
2019-11-23 21:16:03 +01:00
return new XmppAccountRepository(data, ioScheduler, uiScheduler);
}
@Provides
@Singleton
2019-12-01 19:56:13 +01:00
public static DirectChatRepository provideChatRepository(
ReactiveEntityStore<Persistable> data,
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
2019-11-23 21:16:03 +01:00
return new XmppDirectChatRepository(data, ioScheduler, uiScheduler);
}
@Provides
@Singleton
2019-12-01 19:56:13 +01:00
public static EntityCapsRepository provideCapsRepository(
ReactiveEntityStore<Persistable> data,
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
2019-11-23 21:16:03 +01:00
return new EntityCapsRepository(data, ioScheduler, uiScheduler);
}
@Provides
@Singleton
public static PeerRepository provideRosterRepository(
2019-12-01 19:56:13 +01:00
ReactiveEntityStore<Persistable> data,
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
return new XmppPeerRepository(data, ioScheduler, uiScheduler);
2019-11-23 21:16:03 +01:00
}
}