Loading presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivityModule.kt +6 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import dagger.Module import dagger.Provides import dagger.multibindings.IntoMap import io.reactivex.disposables.CompositeDisposable import javax.inject.Named @Module class MainActivityModule { Loading @@ -33,6 +34,11 @@ class MainActivityModule { @ActivityScope fun provideCompositeDiposableLifecycle(): CompositeDisposable = CompositeDisposable() @Provides @Named("threadId") fun provideThreadId(activity: MainActivity): Long = activity.intent.extras?.getLong("threadId") ?: 0L @Provides @IntoMap @ViewModelKey(MainViewModel::class) Loading presentation/src/main/java/com/moez/QKSMS/feature/main/MainViewModel.kt +44 −18 Original line number Diff line number Diff line Loading @@ -51,16 +51,17 @@ import io.realm.Realm import java.util.* import java.util.concurrent.TimeUnit import javax.inject.Inject import javax.inject.Named class MainViewModel @Inject constructor( @Named("threadId") private val threadId: Long, markAllSeen: MarkAllSeen, migratePreferences: MigratePreferences, syncRepository: SyncRepository, private val contactAddedListener: ContactAddedListener, private val changelogManager: ChangelogManager, private val conversationRepo: ConversationRepository, private val deleteConversations: DeleteConversations, private val markArchived: MarkArchived, private val markBlocked: MarkBlocked, private val markPinned: MarkPinned, private val markRead: MarkRead, private val markUnarchived: MarkUnarchived, Loading @@ -69,7 +70,8 @@ class MainViewModel @Inject constructor( private val navigator: Navigator, private val permissionManager: PermissionManager, private val prefs: Preferences, private val syncMessages: SyncMessages private val syncMessages: SyncMessages, private val syncContacts: ContactSync ) : QkViewModel<MainView, MainState>(MainState(page = Inbox(data = conversationRepo.getConversations()))) { init { Loading Loading @@ -388,6 +390,30 @@ class MainViewModel @Inject constructor( } .autoDisposable(view.scope()) .subscribe() view.backPressedIntent .withLatestFrom(state) { _, state -> when { state.drawerOpen -> newState { copy(drawerOpen = false) } state.page is Searching -> view.clearSearch() state.page is Inbox && state.page.selected > 0 -> view.clearSelection() state.page is Archived && state.page.selected > 0 -> view.clearSelection() state.page !is Inbox -> newState { copy(page = Inbox(data = conversationRepo.getConversations())) } else -> newState { copy(hasError = true) } } } .autoDisposable(view.scope()) .subscribe() if (threadId == 0L) { syncContacts.execute(Unit) } } } Loading
presentation/src/main/java/com/moez/QKSMS/feature/main/MainActivityModule.kt +6 −0 Original line number Diff line number Diff line Loading @@ -25,6 +25,7 @@ import dagger.Module import dagger.Provides import dagger.multibindings.IntoMap import io.reactivex.disposables.CompositeDisposable import javax.inject.Named @Module class MainActivityModule { Loading @@ -33,6 +34,11 @@ class MainActivityModule { @ActivityScope fun provideCompositeDiposableLifecycle(): CompositeDisposable = CompositeDisposable() @Provides @Named("threadId") fun provideThreadId(activity: MainActivity): Long = activity.intent.extras?.getLong("threadId") ?: 0L @Provides @IntoMap @ViewModelKey(MainViewModel::class) Loading
presentation/src/main/java/com/moez/QKSMS/feature/main/MainViewModel.kt +44 −18 Original line number Diff line number Diff line Loading @@ -51,16 +51,17 @@ import io.realm.Realm import java.util.* import java.util.concurrent.TimeUnit import javax.inject.Inject import javax.inject.Named class MainViewModel @Inject constructor( @Named("threadId") private val threadId: Long, markAllSeen: MarkAllSeen, migratePreferences: MigratePreferences, syncRepository: SyncRepository, private val contactAddedListener: ContactAddedListener, private val changelogManager: ChangelogManager, private val conversationRepo: ConversationRepository, private val deleteConversations: DeleteConversations, private val markArchived: MarkArchived, private val markBlocked: MarkBlocked, private val markPinned: MarkPinned, private val markRead: MarkRead, private val markUnarchived: MarkUnarchived, Loading @@ -69,7 +70,8 @@ class MainViewModel @Inject constructor( private val navigator: Navigator, private val permissionManager: PermissionManager, private val prefs: Preferences, private val syncMessages: SyncMessages private val syncMessages: SyncMessages, private val syncContacts: ContactSync ) : QkViewModel<MainView, MainState>(MainState(page = Inbox(data = conversationRepo.getConversations()))) { init { Loading Loading @@ -388,6 +390,30 @@ class MainViewModel @Inject constructor( } .autoDisposable(view.scope()) .subscribe() view.backPressedIntent .withLatestFrom(state) { _, state -> when { state.drawerOpen -> newState { copy(drawerOpen = false) } state.page is Searching -> view.clearSearch() state.page is Inbox && state.page.selected > 0 -> view.clearSelection() state.page is Archived && state.page.selected > 0 -> view.clearSelection() state.page !is Inbox -> newState { copy(page = Inbox(data = conversationRepo.getConversations())) } else -> newState { copy(hasError = true) } } } .autoDisposable(view.scope()) .subscribe() if (threadId == 0L) { syncContacts.execute(Unit) } } }