Fix direct shares.

fork-5.53.8
Alex Hart 2022-04-22 16:35:26 -03:00
rodzic 4282f3eb6d
commit a3a5bb8177
3 zmienionych plików z 16 dodań i 12 usunięć

Wyświetl plik

@ -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)
}
}
}
}

Wyświetl plik

@ -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
}
}
}

Wyświetl plik

@ -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>