Loading presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoController.kt +3 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,9 @@ class ConversationInfoController( showBackButton(true) } override fun contactClicks(): Observable<Long> = recipientAdapter.contactClicks override fun recipientClicks(): Observable<Long> = recipientAdapter.recipientClicks override fun recipientLongClicks(): Observable<Long> = recipientAdapter.recipientLongClicks override fun themeClicks(): Observable<Long> = recipientAdapter.themeClicks Loading presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoPresenter.kt +18 −1 Original line number Diff line number Diff line Loading @@ -18,9 +18,13 @@ */ package com.moez.QKSMS.feature.conversationinfo import android.content.Context import androidx.lifecycle.Lifecycle import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkPresenter import com.moez.QKSMS.common.util.ClipboardUtils import com.moez.QKSMS.common.util.extensions.makeToast import com.moez.QKSMS.extensions.asObservable import com.moez.QKSMS.extensions.mapNotNull import com.moez.QKSMS.interactor.DeleteConversations Loading @@ -32,6 +36,7 @@ import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.rxkotlin.plusAssign import io.reactivex.rxkotlin.withLatestFrom import io.reactivex.subjects.BehaviorSubject Loading @@ -42,6 +47,7 @@ import javax.inject.Named class ConversationInfoPresenter @Inject constructor( @Named("threadId") threadId: Long, messageRepo: MessageRepository, private val context: Context, private val conversationRepo: ConversationRepository, private val deleteConversations: DeleteConversations, private val markArchived: MarkArchived, Loading Loading @@ -100,7 +106,7 @@ class ConversationInfoPresenter @Inject constructor( super.bindIntents(view) // Add or display the contact view.contactClicks() view.recipientClicks() .mapNotNull(conversationRepo::getRecipient) .doOnNext { recipient -> recipient.contact?.lookupKey?.let(navigator::showContact) Loading @@ -109,6 +115,17 @@ class ConversationInfoPresenter @Inject constructor( .autoDisposable(view.scope(Lifecycle.Event.ON_DESTROY)) // ... this should be the default .subscribe() // Copy phone number view.recipientLongClicks() .mapNotNull(conversationRepo::getRecipient) .map { recipient -> recipient.address } .observeOn(AndroidSchedulers.mainThread()) .autoDisposable(view.scope()) .subscribe { address -> ClipboardUtils.copy(context, address) context.makeToast(R.string.info_copied_address) } // Show the theme settings for the conversation view.themeClicks() .autoDisposable(view.scope()) Loading presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoView.kt +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ import io.reactivex.Observable interface ConversationInfoView : QkViewContract<ConversationInfoState> { fun contactClicks(): Observable<Long> fun recipientClicks(): Observable<Long> fun recipientLongClicks(): Observable<Long> fun themeClicks(): Observable<Long> fun nameClicks(): Observable<*> fun nameChanges(): Observable<String> Loading presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationRecipientAdapter.kt +9 −2 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ class ConversationRecipientAdapter @Inject constructor( private val colors: Colors ) : QkRealmAdapter<Recipient>() { val contactClicks: Subject<Long> = PublishSubject.create() val recipientClicks: Subject<Long> = PublishSubject.create() val recipientLongClicks: Subject<Long> = PublishSubject.create() val themeClicks: Subject<Long> = PublishSubject.create() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QkViewHolder { Loading @@ -45,7 +46,13 @@ class ConversationRecipientAdapter @Inject constructor( return QkViewHolder(view).apply { view.setOnClickListener { val recipient = getItem(adapterPosition) ?: return@setOnClickListener contactClicks.onNext(recipient.id) recipientClicks.onNext(recipient.id) } view.setOnLongClickListener { val recipient = getItem(adapterPosition) ?: return@setOnLongClickListener false recipientLongClicks.onNext(recipient.id) return@setOnLongClickListener true } view.theme.setOnClickListener { Loading presentation/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,7 @@ <string name="message_status_failed">Failed to send. Tap to try again</string> <string name="info_title">Details</string> <string name="info_copied_address">Address copied</string> <string name="info_name">Conversation title</string> <string name="info_notifications">Notifications</string> <string name="info_theme">Theme</string> Loading Loading
presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoController.kt +3 −1 Original line number Diff line number Diff line Loading @@ -90,7 +90,9 @@ class ConversationInfoController( showBackButton(true) } override fun contactClicks(): Observable<Long> = recipientAdapter.contactClicks override fun recipientClicks(): Observable<Long> = recipientAdapter.recipientClicks override fun recipientLongClicks(): Observable<Long> = recipientAdapter.recipientLongClicks override fun themeClicks(): Observable<Long> = recipientAdapter.themeClicks Loading
presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoPresenter.kt +18 −1 Original line number Diff line number Diff line Loading @@ -18,9 +18,13 @@ */ package com.moez.QKSMS.feature.conversationinfo import android.content.Context import androidx.lifecycle.Lifecycle import com.moez.QKSMS.R import com.moez.QKSMS.common.Navigator import com.moez.QKSMS.common.base.QkPresenter import com.moez.QKSMS.common.util.ClipboardUtils import com.moez.QKSMS.common.util.extensions.makeToast import com.moez.QKSMS.extensions.asObservable import com.moez.QKSMS.extensions.mapNotNull import com.moez.QKSMS.interactor.DeleteConversations Loading @@ -32,6 +36,7 @@ import com.moez.QKSMS.repository.ConversationRepository import com.moez.QKSMS.repository.MessageRepository import com.uber.autodispose.android.lifecycle.scope import com.uber.autodispose.autoDisposable import io.reactivex.android.schedulers.AndroidSchedulers import io.reactivex.rxkotlin.plusAssign import io.reactivex.rxkotlin.withLatestFrom import io.reactivex.subjects.BehaviorSubject Loading @@ -42,6 +47,7 @@ import javax.inject.Named class ConversationInfoPresenter @Inject constructor( @Named("threadId") threadId: Long, messageRepo: MessageRepository, private val context: Context, private val conversationRepo: ConversationRepository, private val deleteConversations: DeleteConversations, private val markArchived: MarkArchived, Loading Loading @@ -100,7 +106,7 @@ class ConversationInfoPresenter @Inject constructor( super.bindIntents(view) // Add or display the contact view.contactClicks() view.recipientClicks() .mapNotNull(conversationRepo::getRecipient) .doOnNext { recipient -> recipient.contact?.lookupKey?.let(navigator::showContact) Loading @@ -109,6 +115,17 @@ class ConversationInfoPresenter @Inject constructor( .autoDisposable(view.scope(Lifecycle.Event.ON_DESTROY)) // ... this should be the default .subscribe() // Copy phone number view.recipientLongClicks() .mapNotNull(conversationRepo::getRecipient) .map { recipient -> recipient.address } .observeOn(AndroidSchedulers.mainThread()) .autoDisposable(view.scope()) .subscribe { address -> ClipboardUtils.copy(context, address) context.makeToast(R.string.info_copied_address) } // Show the theme settings for the conversation view.themeClicks() .autoDisposable(view.scope()) Loading
presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationInfoView.kt +2 −1 Original line number Diff line number Diff line Loading @@ -23,7 +23,8 @@ import io.reactivex.Observable interface ConversationInfoView : QkViewContract<ConversationInfoState> { fun contactClicks(): Observable<Long> fun recipientClicks(): Observable<Long> fun recipientLongClicks(): Observable<Long> fun themeClicks(): Observable<Long> fun nameClicks(): Observable<*> fun nameChanges(): Observable<String> Loading
presentation/src/main/java/com/moez/QKSMS/feature/conversationinfo/ConversationRecipientAdapter.kt +9 −2 Original line number Diff line number Diff line Loading @@ -36,7 +36,8 @@ class ConversationRecipientAdapter @Inject constructor( private val colors: Colors ) : QkRealmAdapter<Recipient>() { val contactClicks: Subject<Long> = PublishSubject.create() val recipientClicks: Subject<Long> = PublishSubject.create() val recipientLongClicks: Subject<Long> = PublishSubject.create() val themeClicks: Subject<Long> = PublishSubject.create() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): QkViewHolder { Loading @@ -45,7 +46,13 @@ class ConversationRecipientAdapter @Inject constructor( return QkViewHolder(view).apply { view.setOnClickListener { val recipient = getItem(adapterPosition) ?: return@setOnClickListener contactClicks.onNext(recipient.id) recipientClicks.onNext(recipient.id) } view.setOnLongClickListener { val recipient = getItem(adapterPosition) ?: return@setOnLongClickListener false recipientLongClicks.onNext(recipient.id) return@setOnLongClickListener true } view.theme.setOnClickListener { Loading
presentation/src/main/res/values/strings.xml +1 −0 Original line number Diff line number Diff line Loading @@ -145,6 +145,7 @@ <string name="message_status_failed">Failed to send. Tap to try again</string> <string name="info_title">Details</string> <string name="info_copied_address">Address copied</string> <string name="info_name">Conversation title</string> <string name="info_notifications">Notifications</string> <string name="info_theme">Theme</string> Loading