From 99abfd0d982a9df181aec8961b622be2a4c010d0 Mon Sep 17 00:00:00 2001 From: Alex Hart Date: Mon, 14 Aug 2023 16:47:13 -0300 Subject: [PATCH] Share to signal from CallSheet. --- .../securesms/calls/links/CallLinks.kt | 2 +- ...CreateCallLinkBottomSheetDialogFragment.kt | 17 ++++------- .../conversation/ConversationItem.java | 10 +++++++ .../securesms/sharing/v2/ShareActivity.kt | 30 ++++++++++++++++++- app/src/main/res/layout/share_activity_v2.xml | 21 +++++++++---- app/src/main/res/values/strings.xml | 2 ++ 6 files changed, 63 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinks.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinks.kt index 5f02b068ae..ffa3525510 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinks.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/links/CallLinks.kt @@ -54,7 +54,7 @@ object CallLinks { @JvmStatic fun isCallLink(url: String): Boolean { - if (FeatureFlags.adHocCalling()) { + if (!FeatureFlags.adHocCalling()) { return false } diff --git a/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt index 62de03c17e..185191903b 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/calls/links/create/CreateCallLinkBottomSheetDialogFragment.kt @@ -46,12 +46,10 @@ import org.thoughtcrime.securesms.calls.links.CallLinks import org.thoughtcrime.securesms.calls.links.EditCallLinkNameDialogFragment import org.thoughtcrime.securesms.calls.links.SignalCallRow import org.thoughtcrime.securesms.compose.ComposeBottomSheetDialogFragment -import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragment -import org.thoughtcrime.securesms.conversation.mutiselect.forward.MultiselectForwardFragmentArgs import org.thoughtcrime.securesms.database.CallLinkTable import org.thoughtcrime.securesms.service.webrtc.links.CreateCallLinkResult import org.thoughtcrime.securesms.service.webrtc.links.UpdateCallLinkResult -import org.thoughtcrime.securesms.sharing.MultiShareArgs +import org.thoughtcrime.securesms.sharing.v2.ShareActivity import org.thoughtcrime.securesms.util.CommunicationActions import org.thoughtcrime.securesms.util.Util @@ -212,15 +210,10 @@ class CreateCallLinkBottomSheetDialogFragment : ComposeBottomSheetDialogFragment lifecycleDisposable += viewModel.commitCallLink().subscribeBy(onSuccess = { when (it) { is EnsureCallLinkCreatedResult.Success -> { - MultiselectForwardFragment.showFullScreen( - childFragmentManager, - MultiselectForwardFragmentArgs( - canSendToNonPush = false, - multiShareArgs = listOf( - MultiShareArgs.Builder() - .withDraftText(CallLinks.url(viewModel.linkKeyBytes)) - .build() - ) + startActivity( + ShareActivity.sendSimpleText( + requireContext(), + getString(R.string.CreateCallLink__use_this_link_to_join_a_signal_call, CallLinks.url(viewModel.linkKeyBytes)) ) ) } diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java index 4f560b42bd..48d4f3c6c1 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/ConversationItem.java @@ -1095,6 +1095,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); if (callToActionStub.resolved()) callToActionStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); revealableStub.get().setMessage((MmsMessageRecord) messageRecord, hasWallpaper); @@ -1113,6 +1114,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); sharedContactStub.get().setContact(((MediaMmsMessageRecord) messageRecord).getSharedContacts().get(0), glideRequests, locale); @@ -1134,6 +1136,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); //noinspection ConstantConditions @@ -1195,6 +1198,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); audioViewStub.get().setAudio(Objects.requireNonNull(((MediaMmsMessageRecord) messageRecord).getSlideDeck().getAudioSlide()), new AudioViewCallbacks(), showControls, true); @@ -1222,6 +1226,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); //noinspection ConstantConditions @@ -1250,6 +1255,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); if (hasSticker(messageRecord)) { @@ -1281,6 +1287,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); List thumbnailSlides = ((MmsMessageRecord) messageRecord).getSlideDeck().getThumbnailSlides(); @@ -1335,6 +1342,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (linkPreviewStub.resolved()) linkPreviewStub.get().setVisibility(GONE); if (stickerStub.resolved()) stickerStub.get().setVisibility(GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); MmsMessageRecord mmsMessageRecord = (MmsMessageRecord) messageRecord; @@ -1351,6 +1359,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); MediaMmsMessageRecord mediaMmsMessageRecord = (MediaMmsMessageRecord) messageRecord; @@ -1367,6 +1376,7 @@ public final class ConversationItem extends RelativeLayout implements BindableCo if (stickerStub.resolved()) stickerStub.get().setVisibility(View.GONE); if (revealableStub.resolved()) revealableStub.get().setVisibility(View.GONE); if (giftViewStub.resolved()) giftViewStub.get().setVisibility(View.GONE); + if (joinCallLinkStub.resolved()) joinCallLinkStub.get().setVisibility(View.GONE); paymentViewStub.setVisibility(View.GONE); ViewUtil.updateLayoutParams(bodyText, ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); diff --git a/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt b/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt index 77b175252d..da3abdcac7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/sharing/v2/ShareActivity.kt @@ -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(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. */ diff --git a/app/src/main/res/layout/share_activity_v2.xml b/app/src/main/res/layout/share_activity_v2.xml index 0c34f0b82b..b1e79cc1cb 100644 --- a/app/src/main/res/layout/share_activity_v2.xml +++ b/app/src/main/res/layout/share_activity_v2.xml @@ -1,14 +1,25 @@ - + android:layout_height="match_parent" + android:orientation="vertical" + tools:viewBindingIgnore="true"> + + + android:layout_height="0dp" + android:layout_weight="1" /> - + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ad6c8f49ce..4ffe0946aa 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -6158,6 +6158,8 @@ Create a Call Link Share a link for a Signal call + + Use this link to join a Signal call: %1$s