From a3a5bb81770d92a72d79f9851fb2ec1fd81b919d Mon Sep 17 00:00:00 2001 From: Alex Hart <alex@signal.org> Date: Fri, 22 Apr 2022 16:35:26 -0300 Subject: [PATCH] Fix direct shares. --- .../securesms/sharing/v2/ShareActivity.kt | 14 ++++++++++++-- .../securesms/sharing/v2/ShareViewModel.kt | 12 +++--------- app/src/main/res/xml/shortcuts.xml | 2 +- 3 files changed, 16 insertions(+), 12 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt index 2fbd28fe59..ce97b39847 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt @@ -38,7 +38,7 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C private lateinit var finishOnOkResultLauncher: ActivityResultLauncher<Intent> private val viewModel: ShareViewModel by viewModels { - ShareViewModel.Factory(getUnresolvedShareData(), directShareTarget, ShareRepository(this)) + ShareViewModel.Factory(getUnresolvedShareData(), ShareRepository(this)) } private val directShareTarget: RecipientId? @@ -72,7 +72,17 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C ShareState.ShareDataLoadState.Init -> Unit ShareState.ShareDataLoadState.Failed -> finish() is ShareState.ShareDataLoadState.Loaded -> { - ensureFragment(shareState.loadState.resolvedShareData) + val directShareTarget = this.directShareTarget + if (directShareTarget != null) { + openConversation( + ShareEvent.OpenConversation( + shareState.loadState.resolvedShareData, + ContactSearchKey.RecipientSearchKey.KnownRecipient(directShareTarget) + ) + ) + } else { + ensureFragment(shareState.loadState.resolvedShareData) + } } } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareViewModel.kt index 42feaeb80f..31db8d1767 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareViewModel.kt @@ -10,13 +10,11 @@ import io.reactivex.rxjava3.kotlin.subscribeBy import io.reactivex.rxjava3.subjects.PublishSubject import org.signal.core.util.logging.Log import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey -import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.sharing.InterstitialContentType import org.thoughtcrime.securesms.util.rx.RxStore class ShareViewModel( unresolvedShareData: UnresolvedShareData, - directShareTarget: RecipientId?, shareRepository: ShareRepository ) : ViewModel() { @@ -34,13 +32,10 @@ class ShareViewModel( init { disposables += shareRepository.resolve(unresolvedShareData).subscribeBy( onSuccess = { data -> - when { - data == ResolvedShareData.Failure -> { + when (data) { + ResolvedShareData.Failure -> { moveToFailedState() } - directShareTarget != null -> { - eventSubject.onNext(ShareEvent.OpenConversation(data, ContactSearchKey.RecipientSearchKey.KnownRecipient(directShareTarget))) - } else -> { store.update { it.copy(loadState = ShareState.ShareDataLoadState.Loaded(data)) } } @@ -86,11 +81,10 @@ class ShareViewModel( class Factory( private val unresolvedShareData: UnresolvedShareData, - private val directShareTarget: RecipientId?, private val shareRepository: ShareRepository ) : ViewModelProvider.Factory { override fun <T : ViewModel?> create(modelClass: Class<T>): T { - return modelClass.cast(ShareViewModel(unresolvedShareData, directShareTarget, shareRepository)) as T + return modelClass.cast(ShareViewModel(unresolvedShareData, shareRepository)) as T } } } diff --git a/app/src/main/res/xml/shortcuts.xml b/app/src/main/res/xml/shortcuts.xml index db9c955bbc..9ab5680f83 100644 --- a/app/src/main/res/xml/shortcuts.xml +++ b/app/src/main/res/xml/shortcuts.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="utf-8"?> <shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> - <share-target android:targetClass="org.thoughtcrime.securesms.sharing.ShareActivity"> + <share-target android:targetClass="org.thoughtcrime.securesms.sharing.v2.ShareActivity"> <data android:mimeType="*/*" /> <category android:name="org.thoughtcrime.securesms.sharing.CATEGORY_SHARE_TARGET" /> </share-target> -- GitLab