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 2fbd28fe5932451ad294aaa2696ae82f4a51f683..ce97b3984723c406bd8d1bac78de0f04dd0fe461 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 42feaeb80f885a64f79e4b77989746d9114a9fef..31db8d176701c65e6f8b30744e3c773d0950abc9 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 db9c955bbcc61198ce10d6507e8cb82cd79904c3..9ab5680f83040f90a544a8dce0ed8a320e64a251 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>