Loading presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingController.kt +8 −9 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.moez.QKSMS.feature.blocking import android.view.View import androidx.core.view.isVisible import com.bluelinelabs.conductor.RouterTransaction import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R Loading @@ -28,6 +27,7 @@ import com.moez.QKSMS.common.base.QkController import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.extensions.animateLayoutChanges import com.moez.QKSMS.feature.blocking.manager.BlockingManagerController import com.moez.QKSMS.feature.blocking.messages.BlockedMessagesController import com.moez.QKSMS.injection.appComponent import kotlinx.android.synthetic.main.blocking_controller.* import kotlinx.android.synthetic.main.settings_switch_widget.view.* Loading @@ -36,10 +36,9 @@ import javax.inject.Inject class BlockingController : QkController<BlockingView, BlockingState, BlockingPresenter>(), BlockingView { override val blockingManagerIntent by lazy { blockingManager.clicks() } override val blockedMessagesIntent by lazy { blockedNumbers.clicks() } override val dropClickedIntent by lazy { drop.clicks() } override val conversationClicks by lazy { blockingAdapter.clicks } @Inject lateinit var blockingAdapter: BlockingAdapter @Inject lateinit var colors: Colors @Inject override lateinit var presenter: BlockingPresenter Loading @@ -51,10 +50,6 @@ class BlockingController : QkController<BlockingView, BlockingState, BlockingPre override fun onViewCreated() { super.onViewCreated() blockingAdapter.emptyView = empty conversations.adapter = blockingAdapter parent.postDelayed({ parent?.animateLayoutChanges = true }, 100) } Loading @@ -68,8 +63,12 @@ class BlockingController : QkController<BlockingView, BlockingState, BlockingPre override fun render(state: BlockingState) { blockingManager.summary = state.blockingManager drop.checkbox.isChecked = state.dropEnabled blockedLabel.isVisible = state.data?.isNotEmpty() == true blockingAdapter.updateData(state.data) } override fun openBlockedMessages() { router.pushController(RouterTransaction.with(BlockedMessagesController()) .pushChangeHandler(QkChangeHandler()) .popChangeHandler(QkChangeHandler())) } override fun openBlockingManager() { Loading presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingPresenter.kt +4 −20 Original line number Diff line number Diff line Loading @@ -20,10 +20,7 @@ package com.moez.QKSMS.feature.blocking import android.content.Context import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkPresenter import com.moez.QKSMS.extensions.asObservable import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.util.Preferences import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable Loading @@ -32,15 +29,10 @@ import javax.inject.Inject class BlockingPresenter @Inject constructor( context: Context, conversationRepo: ConversationRepository, private val navigator: Navigator, private val prefs: Preferences ) : QkPresenter<BlockingView, BlockingState>(BlockingState()) { init { val blockedConversations = conversationRepo.getBlockedConversations() newState { copy(data = blockedConversations) } disposables += prefs.blockingManager.asObservable() .map { client -> when (client) { Loading @@ -54,14 +46,6 @@ class BlockingPresenter @Inject constructor( disposables += prefs.drop.asObservable() .subscribe { enabled -> newState { copy(dropEnabled = enabled) } } // Trigger a refresh if we go between having some/no blocked conversations, otherwise the header won't update disposables += blockedConversations .asObservable() .filter { it.isValid && it.isLoaded } .map { it.isEmpty() } .distinctUntilChanged() .subscribe { newState { copy() } } } override fun bindIntents(view: BlockingView) { Loading @@ -71,13 +55,13 @@ class BlockingPresenter @Inject constructor( .autoDisposable(view.scope()) .subscribe { view.openBlockingManager() } view.dropClickedIntent view.blockedMessagesIntent .autoDisposable(view.scope()) .subscribe { prefs.drop.set(!prefs.drop.get()) } .subscribe { view.openBlockedMessages() } view.conversationClicks view.dropClickedIntent .autoDisposable(view.scope()) .subscribe { threadId -> navigator.showConversation(threadId) } .subscribe { prefs.drop.set(!prefs.drop.get()) } } } presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingState.kt +2 −6 Original line number Diff line number Diff line Loading @@ -18,11 +18,7 @@ */ package com.moez.QKSMS.feature.blocking import com.moez.QKSMS.model.Conversation import io.realm.RealmResults data class BlockingState( val blockingManager: String = "", val dropEnabled: Boolean = false, val data: RealmResults<Conversation>? = null val dropEnabled: Boolean = false ) presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingView.kt +2 −1 Original line number Diff line number Diff line Loading @@ -24,8 +24,9 @@ import io.reactivex.Observable interface BlockingView : QkViewContract<BlockingState> { val blockingManagerIntent: Observable<*> val blockedMessagesIntent: Observable<*> val dropClickedIntent: Observable<*> val conversationClicks: Observable<Long> fun openBlockingManager() fun openBlockedMessages() } presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingAdapter.kt→presentation/src/main/java/com/moez/QKSMS/feature/blocking/messages/BlockedMessagesAdapter.kt +3 −3 Original line number Diff line number Diff line /* * Copyright (C) 2017 Moez Bhatti <moez.bhatti@gmail.com> * Copyright (C) 2019 Moez Bhatti <moez.bhatti@gmail.com> * * This file is part of QKSMS. * Loading @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with QKSMS. If not, see <http://www.gnu.org/licenses/>. */ package com.moez.QKSMS.feature.blocking package com.moez.QKSMS.feature.blocking.messages import android.view.LayoutInflater import android.view.ViewGroup Loading @@ -28,7 +28,7 @@ import io.reactivex.subjects.PublishSubject import kotlinx.android.synthetic.main.blocked_list_item.view.* import javax.inject.Inject class BlockingAdapter @Inject constructor() : QkRealmAdapter<Conversation>() { class BlockedMessagesAdapter @Inject constructor() : QkRealmAdapter<Conversation>() { val clicks: PublishSubject<Long> = PublishSubject.create() Loading Loading
presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingController.kt +8 −9 Original line number Diff line number Diff line Loading @@ -19,7 +19,6 @@ package com.moez.QKSMS.feature.blocking import android.view.View import androidx.core.view.isVisible import com.bluelinelabs.conductor.RouterTransaction import com.jakewharton.rxbinding2.view.clicks import com.moez.QKSMS.R Loading @@ -28,6 +27,7 @@ import com.moez.QKSMS.common.base.QkController import com.moez.QKSMS.common.util.Colors import com.moez.QKSMS.common.util.extensions.animateLayoutChanges import com.moez.QKSMS.feature.blocking.manager.BlockingManagerController import com.moez.QKSMS.feature.blocking.messages.BlockedMessagesController import com.moez.QKSMS.injection.appComponent import kotlinx.android.synthetic.main.blocking_controller.* import kotlinx.android.synthetic.main.settings_switch_widget.view.* Loading @@ -36,10 +36,9 @@ import javax.inject.Inject class BlockingController : QkController<BlockingView, BlockingState, BlockingPresenter>(), BlockingView { override val blockingManagerIntent by lazy { blockingManager.clicks() } override val blockedMessagesIntent by lazy { blockedNumbers.clicks() } override val dropClickedIntent by lazy { drop.clicks() } override val conversationClicks by lazy { blockingAdapter.clicks } @Inject lateinit var blockingAdapter: BlockingAdapter @Inject lateinit var colors: Colors @Inject override lateinit var presenter: BlockingPresenter Loading @@ -51,10 +50,6 @@ class BlockingController : QkController<BlockingView, BlockingState, BlockingPre override fun onViewCreated() { super.onViewCreated() blockingAdapter.emptyView = empty conversations.adapter = blockingAdapter parent.postDelayed({ parent?.animateLayoutChanges = true }, 100) } Loading @@ -68,8 +63,12 @@ class BlockingController : QkController<BlockingView, BlockingState, BlockingPre override fun render(state: BlockingState) { blockingManager.summary = state.blockingManager drop.checkbox.isChecked = state.dropEnabled blockedLabel.isVisible = state.data?.isNotEmpty() == true blockingAdapter.updateData(state.data) } override fun openBlockedMessages() { router.pushController(RouterTransaction.with(BlockedMessagesController()) .pushChangeHandler(QkChangeHandler()) .popChangeHandler(QkChangeHandler())) } override fun openBlockingManager() { Loading
presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingPresenter.kt +4 −20 Original line number Diff line number Diff line Loading @@ -20,10 +20,7 @@ package com.moez.QKSMS.feature.blocking import android.content.Context import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkPresenter import com.moez.QKSMS.extensions.asObservable import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.util.Preferences import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable Loading @@ -32,15 +29,10 @@ import javax.inject.Inject class BlockingPresenter @Inject constructor( context: Context, conversationRepo: ConversationRepository, private val navigator: Navigator, private val prefs: Preferences ) : QkPresenter<BlockingView, BlockingState>(BlockingState()) { init { val blockedConversations = conversationRepo.getBlockedConversations() newState { copy(data = blockedConversations) } disposables += prefs.blockingManager.asObservable() .map { client -> when (client) { Loading @@ -54,14 +46,6 @@ class BlockingPresenter @Inject constructor( disposables += prefs.drop.asObservable() .subscribe { enabled -> newState { copy(dropEnabled = enabled) } } // Trigger a refresh if we go between having some/no blocked conversations, otherwise the header won't update disposables += blockedConversations .asObservable() .filter { it.isValid && it.isLoaded } .map { it.isEmpty() } .distinctUntilChanged() .subscribe { newState { copy() } } } override fun bindIntents(view: BlockingView) { Loading @@ -71,13 +55,13 @@ class BlockingPresenter @Inject constructor( .autoDisposable(view.scope()) .subscribe { view.openBlockingManager() } view.dropClickedIntent view.blockedMessagesIntent .autoDisposable(view.scope()) .subscribe { prefs.drop.set(!prefs.drop.get()) } .subscribe { view.openBlockedMessages() } view.conversationClicks view.dropClickedIntent .autoDisposable(view.scope()) .subscribe { threadId -> navigator.showConversation(threadId) } .subscribe { prefs.drop.set(!prefs.drop.get()) } } }
presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingState.kt +2 −6 Original line number Diff line number Diff line Loading @@ -18,11 +18,7 @@ */ package com.moez.QKSMS.feature.blocking import com.moez.QKSMS.model.Conversation import io.realm.RealmResults data class BlockingState( val blockingManager: String = "", val dropEnabled: Boolean = false, val data: RealmResults<Conversation>? = null val dropEnabled: Boolean = false )
presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingView.kt +2 −1 Original line number Diff line number Diff line Loading @@ -24,8 +24,9 @@ import io.reactivex.Observable interface BlockingView : QkViewContract<BlockingState> { val blockingManagerIntent: Observable<*> val blockedMessagesIntent: Observable<*> val dropClickedIntent: Observable<*> val conversationClicks: Observable<Long> fun openBlockingManager() fun openBlockedMessages() }
presentation/src/main/java/com/moez/QKSMS/feature/blocking/BlockingAdapter.kt→presentation/src/main/java/com/moez/QKSMS/feature/blocking/messages/BlockedMessagesAdapter.kt +3 −3 Original line number Diff line number Diff line /* * Copyright (C) 2017 Moez Bhatti <moez.bhatti@gmail.com> * Copyright (C) 2019 Moez Bhatti <moez.bhatti@gmail.com> * * This file is part of QKSMS. * Loading @@ -16,7 +16,7 @@ * You should have received a copy of the GNU General Public License * along with QKSMS. If not, see <http://www.gnu.org/licenses/>. */ package com.moez.QKSMS.feature.blocking package com.moez.QKSMS.feature.blocking.messages import android.view.LayoutInflater import android.view.ViewGroup Loading @@ -28,7 +28,7 @@ import io.reactivex.subjects.PublishSubject import kotlinx.android.synthetic.main.blocked_list_item.view.* import javax.inject.Inject class BlockingAdapter @Inject constructor() : QkRealmAdapter<Conversation>() { class BlockedMessagesAdapter @Inject constructor() : QkRealmAdapter<Conversation>() { val clicks: PublishSubject<Long> = PublishSubject.create() Loading