From fd1e47888aef66cb39b8028e936c0b3e32acead0 Mon Sep 17 00:00:00 2001 From: Michelle Tang Date: Tue, 28 Jan 2025 16:41:30 -0500 Subject: [PATCH] Adjust strings for media and calls. --- .../conversation/v2/ConversationFragment.kt | 27 ++++++++++++------- .../model/GroupCallUpdateMessageFactory.java | 23 +++++++++++----- .../securesms/mediaoverview/MediaActions.java | 2 +- .../mediapreview/MediaPreviewV2Fragment.kt | 6 +++-- .../scribbles/ImageEditorFragment.java | 2 +- .../securesms/util/SaveAttachmentTask.java | 4 +-- .../securesms/util/SaveAttachmentUtil.kt | 4 +-- app/src/main/res/values/strings.xml | 9 ++++++- 8 files changed, 51 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt index 00ee756dae..1f4db95494 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/v2/ConversationFragment.kt @@ -2381,7 +2381,7 @@ class ConversationFragment : val attachments = SaveAttachmentUtil.getAttachmentsForRecord(record) - SaveAttachmentUtil.showWarningDialogIfNecessary(requireContext()) { + SaveAttachmentUtil.showWarningDialogIfNecessary(requireContext(), attachments.size) { if (StorageUtil.canWriteToMediaStore()) { performAttachmentSave(attachments) } else { @@ -2482,13 +2482,14 @@ class ConversationFragment : override fun isSwipeAvailable(conversationMessage: ConversationMessage): Boolean { val recipient = viewModel.recipientSnapshot ?: return false - return actionMode == null && MenuState.canReplyToMessage( - recipient, - MenuState.isActionMessage(conversationMessage.messageRecord), - conversationMessage.messageRecord, - viewModel.hasMessageRequestState, - conversationGroupViewModel.isNonAdminInAnnouncementGroup() - ) + return actionMode == null && + MenuState.canReplyToMessage( + recipient, + MenuState.isActionMessage(conversationMessage.messageRecord), + conversationMessage.messageRecord, + viewModel.hasMessageRequestState, + conversationGroupViewModel.isNonAdminInAnnouncementGroup() + ) } } @@ -3934,7 +3935,10 @@ class ConversationFragment : //region Compose + Send Callbacks - private inner class SendButtonListener : View.OnClickListener, OnEditorActionListener, SendButton.ScheduledSendListener { + private inner class SendButtonListener : + View.OnClickListener, + OnEditorActionListener, + SendButton.ScheduledSendListener { override fun onClick(v: View) { sendMessage() } @@ -4262,7 +4266,10 @@ class ConversationFragment : override fun create(): Fragment = KeyboardPagerFragment() } - private inner class KeyboardEvents : OnBackPressedCallback(false), InputAwareConstraintLayout.Listener, InsetAwareConstraintLayout.KeyboardStateListener { + private inner class KeyboardEvents : + OnBackPressedCallback(false), + InputAwareConstraintLayout.Listener, + InsetAwareConstraintLayout.KeyboardStateListener { override fun handleOnBackPressed() { container.hideInput() } diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupCallUpdateMessageFactory.java b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupCallUpdateMessageFactory.java index 866b4c5654..b152bd50e4 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupCallUpdateMessageFactory.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/model/GroupCallUpdateMessageFactory.java @@ -93,13 +93,22 @@ public class GroupCallUpdateMessageFactory implements UpdateDescription.Spannabl : context.getString(R.string.MessageRecord_s_is_in_the_call, describe(joinedMembers.get(0))); } case 2: - return withTime ? context.getString(R.string.MessageRecord_s_and_s_are_in_the_call_s1, - describe(joinedMembers.get(0)), - describe(joinedMembers.get(1)), - time) - : context.getString(R.string.MessageRecord_s_and_s_are_in_the_call, - describe(joinedMembers.get(0)), - describe(joinedMembers.get(1))); + boolean includesSelf = joinedMembers.contains(selfAci); + if (includesSelf) { + return withTime ? context.getString(R.string.MessageRecord_s_and_you_are_in_the_call_s1, + describe(joinedMembers.get(0)), + time) + : context.getString(R.string.MessageRecord_s_and_you_are_in_the_call, + describe(joinedMembers.get(0))); + } else { + return withTime ? context.getString(R.string.MessageRecord_s_and_s_are_in_the_call_s1, + describe(joinedMembers.get(0)), + describe(joinedMembers.get(1)), + time) + : context.getString(R.string.MessageRecord_s_and_s_are_in_the_call, + describe(joinedMembers.get(0)), + describe(joinedMembers.get(1))); + } default: int others = joinedMembers.size() - 2; return withTime ? context.getResources().getQuantityString(R.plurals.MessageRecord_s_s_and_d_others_are_in_the_call_s, diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaActions.java b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaActions.java index b0fc247415..726b9846a3 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaActions.java +++ b/app/src/main/java/org/thoughtcrime/securesms/mediaoverview/MediaActions.java @@ -44,7 +44,7 @@ final class MediaActions { return; } - SaveAttachmentTask.showWarningDialogIfNecessary(context, () -> Permissions.with(fragment) + SaveAttachmentTask.showWarningDialogIfNecessary(context, mediaRecords.size(), () -> Permissions.with(fragment) .request(Manifest.permission.WRITE_EXTERNAL_STORAGE) .ifNecessary() .withPermanentDenialDialog(fragment.getString(R.string.MediaPreviewActivity_signal_needs_the_storage_permission_in_order_to_write_to_external_storage_but_it_has_been_permanently_denied)) diff --git a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt index b483e533d5..3c01229446 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/mediapreview/MediaPreviewV2Fragment.kt @@ -78,7 +78,9 @@ import java.util.Locale import java.util.concurrent.TimeUnit import kotlin.math.roundToInt -class MediaPreviewV2Fragment : LoggingFragment(R.layout.fragment_media_preview_v2), MediaPreviewFragment.Events { +class MediaPreviewV2Fragment : + LoggingFragment(R.layout.fragment_media_preview_v2), + MediaPreviewFragment.Events { private val lifecycleDisposable = LifecycleDisposable() private val binding by ViewBinderDelegate(FragmentMediaPreviewV2Binding::bind) @@ -557,7 +559,7 @@ class MediaPreviewV2Fragment : LoggingFragment(R.layout.fragment_media_preview_v } private fun saveToDisk(mediaItem: MediaTable.MediaRecord) { - SaveAttachmentTask.showWarningDialogIfNecessary(requireContext()) { + SaveAttachmentTask.showWarningDialogIfNecessary(requireContext(), 1) { if (StorageUtil.canWriteToMediaStore()) { performSaveToDisk(mediaItem) return@showWarningDialogIfNecessary diff --git a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java index 48f244f5f2..39ec306f44 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/scribbles/ImageEditorFragment.java @@ -653,7 +653,7 @@ public final class ImageEditorFragment extends Fragment implements ImageEditorHu @Override public void onSave() { - SaveAttachmentTask.showWarningDialogIfNecessary(requireContext(), () -> { + SaveAttachmentTask.showWarningDialogIfNecessary(requireContext(), 1, () -> { if (StorageUtil.canWriteToMediaStore()) { performSaveToDisk(); return; diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java index 92bc60efd7..fe2c8ddc8d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentTask.java @@ -435,7 +435,7 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask { CheckBox checkbox = ((AlertDialog) dialog).findViewById(R.id.checkbox); if (checkbox.isChecked()) { diff --git a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentUtil.kt b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentUtil.kt index 507a5ec1bb..a5d4c3f3e7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentUtil.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/util/SaveAttachmentUtil.kt @@ -54,7 +54,7 @@ object SaveAttachmentUtil { private val TAG = Log.tag(SaveAttachmentUtil::class.java) - fun showWarningDialogIfNecessary(context: Context, onSave: () -> Unit) { + fun showWarningDialogIfNecessary(context: Context, count: Int, onSave: () -> Unit) { if (SignalStore.uiHints.hasDismissedSaveStorageWarning()) { onSave() } else { @@ -62,7 +62,7 @@ object SaveAttachmentUtil { .setView(R.layout.dialog_save_attachment) .setTitle(R.string.ConversationFragment__save_to_phone) .setCancelable(true) - .setMessage(R.string.ConversationFragment__this_media_will_be_saved) + .setMessage(context.resources.getQuantityString(R.plurals.ConversationFragment__this_media_will_be_saved, count, count)) .setPositiveButton(R.string.save) { dialog, _ -> val checkbox = (dialog as AlertDialog).findViewById(R.id.checkbox)!! if (checkbox.isChecked) { diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 382183863e..275fc33bcb 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -589,7 +589,10 @@ Save to phone? - This media will be saved to your phone\'s storage. Other apps may be able to access it depending on your phone\'s permissions. + + This media will be saved to your phone\'s storage. Other apps may be able to access it depending on your phone\'s permissions. + This media will be saved to your phone\'s storage. Other apps may be able to access it depending on your phone\'s permissions. + Don\'t show again Pending… @@ -1971,12 +1974,16 @@ %1$s is in the call · %2$s You are in the call · %1$s + + %1$s and you are in the call · %2$s %1$s and %2$s are in the call · %3$s %1$s is in the call You are in the call + + %1$s and you are in the call %1$s and %2$s are in the call