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 lateinit var finishOnOkResultLauncher: ActivityResultLauncher<Intent>
private val viewModel: ShareViewModel by viewModels { private val viewModel: ShareViewModel by viewModels {
ShareViewModel.Factory(getUnresolvedShareData(), directShareTarget, ShareRepository(this)) ShareViewModel.Factory(getUnresolvedShareData(), ShareRepository(this))
} }
private val directShareTarget: RecipientId? private val directShareTarget: RecipientId?
@ -72,7 +72,17 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
ShareState.ShareDataLoadState.Init -> Unit ShareState.ShareDataLoadState.Init -> Unit
ShareState.ShareDataLoadState.Failed -> finish() ShareState.ShareDataLoadState.Failed -> finish()
is ShareState.ShareDataLoadState.Loaded -> { 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 io.reactivex.rxjava3.subjects.PublishSubject
import org.signal.core.util.logging.Log import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey import org.thoughtcrime.securesms.contacts.paged.ContactSearchKey
import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.sharing.InterstitialContentType import org.thoughtcrime.securesms.sharing.InterstitialContentType
import org.thoughtcrime.securesms.util.rx.RxStore import org.thoughtcrime.securesms.util.rx.RxStore
class ShareViewModel( class ShareViewModel(
unresolvedShareData: UnresolvedShareData, unresolvedShareData: UnresolvedShareData,
directShareTarget: RecipientId?,
shareRepository: ShareRepository shareRepository: ShareRepository
) : ViewModel() { ) : ViewModel() {
@ -34,13 +32,10 @@ class ShareViewModel(
init { init {
disposables += shareRepository.resolve(unresolvedShareData).subscribeBy( disposables += shareRepository.resolve(unresolvedShareData).subscribeBy(
onSuccess = { data -> onSuccess = { data ->
when { when (data) {
data == ResolvedShareData.Failure -> { ResolvedShareData.Failure -> {
moveToFailedState() moveToFailedState()
} }
directShareTarget != null -> {
eventSubject.onNext(ShareEvent.OpenConversation(data, ContactSearchKey.RecipientSearchKey.KnownRecipient(directShareTarget)))
}
else -> { else -> {
store.update { it.copy(loadState = ShareState.ShareDataLoadState.Loaded(data)) } store.update { it.copy(loadState = ShareState.ShareDataLoadState.Loaded(data)) }
} }
@ -86,11 +81,10 @@ class ShareViewModel(
class Factory( class Factory(
private val unresolvedShareData: UnresolvedShareData, private val unresolvedShareData: UnresolvedShareData,
private val directShareTarget: RecipientId?,
private val shareRepository: ShareRepository private val shareRepository: ShareRepository
) : ViewModelProvider.Factory { ) : ViewModelProvider.Factory {
override fun <T : ViewModel?> create(modelClass: Class<T>): T { 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"?> <?xml version="1.0" encoding="utf-8"?>
<shortcuts xmlns:android="http://schemas.android.com/apk/res/android"> <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="*/*" /> <data android:mimeType="*/*" />
<category android:name="org.thoughtcrime.securesms.sharing.CATEGORY_SHARE_TARGET" /> <category android:name="org.thoughtcrime.securesms.sharing.CATEGORY_SHARE_TARGET" />
</share-target> </share-target>