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 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)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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>
|
||||||
|
|
Ładowanie…
Reference in New Issue