kopia lustrzana https://github.com/ryukoposting/Signal-Android
Fix direct shares.
rodzic
4282f3eb6d
commit
a3a5bb8177
|
@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
||||
|
|
Ładowanie…
Reference in New Issue