From b573755b2008f4dbd6539a86febd25d74db27ee2 Mon Sep 17 00:00:00 2001 From: moezbhatti Date: Fri, 25 Oct 2019 00:50:36 -0400 Subject: [PATCH] Use Long for subject instead of RealmObject --- .../com/moez/QKSMS/repository/SyncRepositoryImpl.kt | 11 ----------- .../com/moez/QKSMS/feature/compose/ComposeActivity.kt | 8 +++----- .../com/moez/QKSMS/feature/compose/ComposeView.kt | 8 +++----- .../moez/QKSMS/feature/compose/ComposeViewModel.kt | 4 ++++ .../com/moez/QKSMS/feature/compose/MessagesAdapter.kt | 11 +++++------ .../com/moez/QKSMS/feature/compose/part/FileBinder.kt | 2 +- .../moez/QKSMS/feature/compose/part/MediaBinder.kt | 2 +- .../com/moez/QKSMS/feature/compose/part/PartBinder.kt | 2 +- .../moez/QKSMS/feature/compose/part/PartsAdapter.kt | 2 +- .../moez/QKSMS/feature/compose/part/VCardBinder.kt | 2 +- .../conversationinfo/ConversationInfoPresenter.kt | 2 -- 11 files changed, 20 insertions(+), 34 deletions(-) diff --git a/data/src/main/java/com/moez/QKSMS/repository/SyncRepositoryImpl.kt b/data/src/main/java/com/moez/QKSMS/repository/SyncRepositoryImpl.kt index b9e1787e..882f3033 100644 --- a/data/src/main/java/com/moez/QKSMS/repository/SyncRepositoryImpl.kt +++ b/data/src/main/java/com/moez/QKSMS/repository/SyncRepositoryImpl.kt @@ -58,17 +58,6 @@ class SyncRepositoryImpl @Inject constructor( private val rxPrefs: RxSharedPreferences ) : SyncRepository { - /** - * Holds data that should be persisted across full syncs - */ - private data class PersistedData( - val id: Long, - val archived: Boolean, - val blocked: Boolean, - val pinned: Boolean, - val name: String - ) - override val syncProgress: Subject = BehaviorSubject.createDefault(SyncRepository.SyncProgress.Idle()) diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt index 9bdc5618..92b6e2b6 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeActivity.kt @@ -54,8 +54,6 @@ import com.moez.QKSMS.common.util.extensions.setVisible import com.moez.QKSMS.common.util.extensions.showKeyboard import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact -import com.moez.QKSMS.model.Message -import com.moez.QKSMS.model.MmsPart import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable import dagger.android.AndroidInjection @@ -91,10 +89,10 @@ class ComposeActivity : QkThemedActivity(), ComposeView { override val menuReadyIntent: Observable = menu.map { Unit } override val optionsItemIntent: Subject = PublishSubject.create() override val sendAsGroupIntent by lazy { sendAsGroupBackground.clicks() } - override val messageClickIntent: Subject by lazy { messageAdapter.clicks } - override val messagePartClickIntent: Subject by lazy { messageAdapter.partClicks } + override val messageClickIntent: Subject by lazy { messageAdapter.clicks } + override val messagePartClickIntent: Subject by lazy { messageAdapter.partClicks } override val messagesSelectedIntent by lazy { messageAdapter.selectionChanges } - override val cancelSendingIntent: Subject by lazy { messageAdapter.cancelSending } + override val cancelSendingIntent: Subject by lazy { messageAdapter.cancelSending } override val attachmentDeletedIntent: Subject by lazy { attachmentAdapter.attachmentDeleted } override val textChangedIntent by lazy { message.textChanges() } override val attachIntent by lazy { Observable.merge(attach.clicks(), attachingBackground.clicks()) } diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt index fd60d41b..849eb510 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeView.kt @@ -24,8 +24,6 @@ import androidx.core.view.inputmethod.InputContentInfoCompat import com.moez.QKSMS.common.base.QkView import com.moez.QKSMS.model.Attachment import com.moez.QKSMS.model.Contact -import com.moez.QKSMS.model.Message -import com.moez.QKSMS.model.MmsPart import io.reactivex.Observable import io.reactivex.subjects.Subject @@ -40,10 +38,10 @@ interface ComposeView : QkView { val menuReadyIntent: Observable val optionsItemIntent: Observable val sendAsGroupIntent: Observable<*> - val messageClickIntent: Subject - val messagePartClickIntent: Subject + val messageClickIntent: Subject + val messagePartClickIntent: Subject val messagesSelectedIntent: Observable> - val cancelSendingIntent: Subject + val cancelSendingIntent: Subject val attachmentDeletedIntent: Subject val textChangedIntent: Observable val attachIntent: Observable diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt index 20410cbf..803ed68d 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/ComposeViewModel.kt @@ -420,6 +420,7 @@ class ComposeViewModel @Inject constructor( // Retry sending view.messageClickIntent + .mapNotNull(messageRepo::getMessage) .filter { message -> message.isFailedMessage() } .doOnNext { message -> retrySending.execute(message) } .autoDisposable(view.scope()) @@ -427,12 +428,14 @@ class ComposeViewModel @Inject constructor( // Media attachment clicks view.messagePartClickIntent + .mapNotNull(messageRepo::getPart) .filter { part -> part.isImage() || part.isVideo() } .autoDisposable(view.scope()) .subscribe { part -> navigator.showMedia(part.id) } // Non-media attachment clicks view.messagePartClickIntent + .mapNotNull(messageRepo::getPart) .filter { part -> !part.isImage() && !part.isVideo() } .autoDisposable(view.scope()) .subscribe { part -> @@ -451,6 +454,7 @@ class ComposeViewModel @Inject constructor( // Cancel sending a message view.cancelSendingIntent + .mapNotNull(messageRepo::getMessage) .doOnNext { message -> view.setDraft(message.getText()) } .autoDisposable(view.scope()) .subscribe { message -> cancelMessage.execute(message.id) } diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt index da9601bd..9443fb34 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/MessagesAdapter.kt @@ -53,7 +53,6 @@ import com.moez.QKSMS.feature.compose.BubbleUtils.getBubble import com.moez.QKSMS.feature.compose.part.PartsAdapter import com.moez.QKSMS.model.Conversation import com.moez.QKSMS.model.Message -import com.moez.QKSMS.model.MmsPart import com.moez.QKSMS.model.Recipient import com.moez.QKSMS.util.PhoneNumberUtils import com.moez.QKSMS.util.Preferences @@ -88,9 +87,9 @@ class MessagesAdapter @Inject constructor( } - val clicks: Subject = PublishSubject.create() - val partClicks: Subject = PublishSubject.create() - val cancelSending: Subject = PublishSubject.create() + val clicks: Subject = PublishSubject.create() + val partClicks: Subject = PublishSubject.create() + val cancelSending: Subject = PublishSubject.create() var data: Pair>? = null set(value) { @@ -167,7 +166,7 @@ class MessagesAdapter @Inject constructor( when (toggleSelection(message.id, false)) { true -> view.isActivated = isSelected(message.id) false -> { - clicks.onNext(message) + clicks.onNext(message.id) expanded[message.id] = view.status.visibility != View.VISIBLE notifyItemChanged(adapterPosition) } @@ -195,7 +194,7 @@ class MessagesAdapter @Inject constructor( view.findViewById(R.id.cancel)?.let { cancel -> val isCancellable = message.isSending() && message.date > System.currentTimeMillis() cancel.setVisible(isCancellable) - cancel.clicks().subscribe { cancelSending.onNext(message) } + cancel.clicks().subscribe { cancelSending.onNext(message.id) } cancel.progress = 2 if (isCancellable) { diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/FileBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/FileBinder.kt index 58051c4c..73d9ab83 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/FileBinder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/FileBinder.kt @@ -56,7 +56,7 @@ class FileBinder @Inject constructor(colors: Colors, private val context: Contex BubbleUtils.getBubble(false, canGroupWithPrevious, canGroupWithNext, message.isMe()) .let(view.fileBackground::setBackgroundResource) - view.setOnClickListener { clicks.onNext(part) } + view.setOnClickListener { clicks.onNext(part.id) } Observable.just(part.getUri()) .map(context.contentResolver::openInputStream) diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt index 14f98f24..dafece1c 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/MediaBinder.kt @@ -47,7 +47,7 @@ class MediaBinder @Inject constructor(colors: Colors, private val context: Conte canGroupWithNext: Boolean ) { view.video.setVisible(part.isVideo()) - view.setOnClickListener { clicks.onNext(part) } + view.setOnClickListener { clicks.onNext(part.id) } view.thumbnail.bubbleStyle = when { !canGroupWithPrevious && canGroupWithNext -> if (message.isMe()) BubbleImageView.Style.OUT_FIRST else BubbleImageView.Style.IN_FIRST diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartBinder.kt index cadcdfbe..fc3fb7fc 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartBinder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartBinder.kt @@ -27,7 +27,7 @@ import io.reactivex.subjects.Subject abstract class PartBinder { - val clicks: Subject = PublishSubject.create() + val clicks: Subject = PublishSubject.create() abstract val partLayout: Int diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt index 8c365f5e..31c67aee 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/PartsAdapter.kt @@ -49,7 +49,7 @@ class PartsAdapter @Inject constructor( partBinders.forEach { binder -> binder.theme = value } } - val clicks = Observable.merge(partBinders.map { it.clicks }) + val clicks: Observable = Observable.merge(partBinders.map { it.clicks }) private lateinit var message: Message private var previous: Message? = null diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/VCardBinder.kt b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/VCardBinder.kt index 9569b845..205437d4 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/VCardBinder.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/compose/part/VCardBinder.kt @@ -56,7 +56,7 @@ class VCardBinder @Inject constructor(colors: Colors, private val context: Conte BubbleUtils.getBubble(false, canGroupWithPrevious, canGroupWithNext, message.isMe()) .let(view.vCardBackground::setBackgroundResource) - view.setOnClickListener { clicks.onNext(part) } + view.setOnClickListener { clicks.onNext(part.id) } Observable.just(part.getUri()) .map(context.contentResolver::openInputStream) diff --git a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoPresenter.kt b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoPresenter.kt index 36c614ea..5e23e5b1 100644 --- a/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoPresenter.kt +++ b/presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoPresenter.kt @@ -18,7 +18,6 @@ */ package com.moez.QKSMS.feature.conversationinfo -import android.content.Context import androidx.lifecycle.Lifecycle import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkPresenter @@ -46,7 +45,6 @@ class ConversationInfoPresenter @Inject constructor( @Named("threadId") threadId: Long, messageRepo: MessageRepository, private val contactAddedListener: ContactAddedListener, - private val context: Context, private val conversationRepo: ConversationRepository, private val deleteConversations: DeleteConversations, private val markArchived: MarkArchived,