mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-28 21:57:17 +00:00
Fix direct shares.
This commit is contained in:
@@ -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
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user