Share to signal from CallSheet.

This commit is contained in:
Alex Hart
2023-08-14 16:47:13 -03:00
committed by Cody Henthorne
parent 5fa9a27ee0
commit 99abfd0d98
6 changed files with 63 additions and 19 deletions

View File

@@ -1,6 +1,7 @@
package org.thoughtcrime.securesms.sharing.v2
import android.app.Activity
import android.content.Context
import android.content.Intent
import android.net.Uri
import android.os.Bundle
@@ -12,6 +13,7 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.activity.viewModels
import androidx.core.content.ContextCompat
import androidx.core.content.pm.ShortcutManagerCompat
import com.google.android.material.appbar.MaterialToolbar
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
import io.reactivex.rxjava3.kotlin.subscribeBy
import org.signal.core.util.Result
@@ -38,12 +40,24 @@ import org.thoughtcrime.securesms.sharing.MultiShareSender.MultiShareSendResultC
import org.thoughtcrime.securesms.sharing.interstitial.ShareInterstitialActivity
import org.thoughtcrime.securesms.util.ConversationUtil
import org.thoughtcrime.securesms.util.DynamicNoActionBarTheme
import org.thoughtcrime.securesms.util.visible
import java.util.Optional
class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.Callback {
companion object {
private val TAG = Log.tag(ShareActivity::class.java)
private const val EXTRA_TITLE = "ShareActivity.extra.title"
private const val EXTRA_NAVIGATION = "ShareActivity.extra.navigation"
fun sendSimpleText(context: Context, text: String): Intent {
return Intent(context, ShareActivity::class.java)
.setAction(Intent.ACTION_SEND)
.putExtra(Intent.EXTRA_TEXT, text)
.putExtra(EXTRA_TITLE, R.string.MediaReviewFragment__send_to)
.putExtra(EXTRA_NAVIGATION, true)
}
}
private val dynamicTheme = DynamicNoActionBarTheme()
@@ -89,6 +103,16 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
}
}
val toolbar = findViewById<MaterialToolbar>(R.id.toolbar)
if (intent?.getBooleanExtra(EXTRA_NAVIGATION, false) == true) {
toolbar.setTitle(getTitleFromExtras())
toolbar.setNavigationIcon(R.drawable.symbol_arrow_left_24)
toolbar.setNavigationOnClickListener { finish() }
} else {
toolbar.visible = false
}
lifecycleDisposable.bindTo(this)
lifecycleDisposable += viewModel.events.subscribe { shareEvent ->
when (shareEvent) {
@@ -210,7 +234,7 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
MultiselectForwardFragmentArgs(
canSendToNonPush = resolvedShareData.isMmsOrSmsSupported,
multiShareArgs = listOf(resolvedShareData.toMultiShareArgs()),
title = R.string.MultiselectForwardFragment__share_with,
title = getTitleFromExtras(),
forceDisableAddMessage = true,
forceSelectionOnly = true
)
@@ -311,6 +335,10 @@ class ShareActivity : PassphraseRequiredActivity(), MultiselectForwardFragment.C
Toast.makeText(this, R.string.ShareActivity__could_not_get_share_data_from_intent, Toast.LENGTH_LONG).show()
}
private fun getTitleFromExtras(): Int {
return intent?.getIntExtra(EXTRA_TITLE, R.string.MultiselectForwardFragment__share_with) ?: R.string.MultiselectForwardFragment__share_with
}
/**
* Represents an error with the intent when trying to extract the unresolved share data.
*/