60 lines
2.3 KiB
Java
60 lines
2.3 KiB
Java
package org.mercury_im.messenger.data.di;
|
|
|
|
import org.mercury_im.messenger.data.repository.AccountRepository;
|
|
import org.mercury_im.messenger.data.repository.PeerRepository;
|
|
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;
|
|
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;
|
|
|
|
@Module
|
|
public class RepositoryModule {
|
|
|
|
@Provides
|
|
@Singleton
|
|
public static AccountRepository provideAccountRepository(
|
|
ReactiveEntityStore<Persistable> data,
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
|
|
return new XmppAccountRepository(data, ioScheduler, uiScheduler);
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
public static DirectChatRepository provideChatRepository(
|
|
ReactiveEntityStore<Persistable> data,
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
|
|
return new XmppDirectChatRepository(data, ioScheduler, uiScheduler);
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
public static EntityCapsRepository provideCapsRepository(
|
|
ReactiveEntityStore<Persistable> data,
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
|
|
return new EntityCapsRepository(data, ioScheduler, uiScheduler);
|
|
}
|
|
|
|
@Provides
|
|
@Singleton
|
|
public static PeerRepository provideRosterRepository(
|
|
ReactiveEntityStore<Persistable> data,
|
|
@Named(value = ThreadUtils.SCHEDULER_IO) Scheduler ioScheduler,
|
|
@Named(value = ThreadUtils.SCHEDULER_UI) Scheduler uiScheduler) {
|
|
return new XmppPeerRepository(data, ioScheduler, uiScheduler);
|
|
}
|
|
}
|