From 01d769410831fb57a904c8e89153ab900b90913e Mon Sep 17 00:00:00 2001 From: Alan Evans Date: Thu, 27 Aug 2020 11:29:44 -0300 Subject: [PATCH] Add reset confirmation dialog and copy to group link management screen. --- .../ShareableGroupLinkDialogFragment.java | 25 +++++++++++++-- .../shareable_group_link_dialog_fragment.xml | 32 ++++++++++++++++++- app/src/main/res/values/strings.xml | 2 ++ 3 files changed, 56 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/ShareableGroupLinkDialogFragment.java b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/ShareableGroupLinkDialogFragment.java index 909b642a65..538edba88d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/ShareableGroupLinkDialogFragment.java +++ b/app/src/main/java/org/thoughtcrime/securesms/recipients/ui/sharablegrouplink/ShareableGroupLinkDialogFragment.java @@ -1,5 +1,6 @@ package org.thoughtcrime.securesms.recipients.ui.sharablegrouplink; +import android.app.AlertDialog; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -85,14 +86,19 @@ public final class ShareableGroupLinkDialogFragment extends DialogFragment { viewModel.getGroupLink().observe(getViewLifecycleOwner(), groupLink -> { shareableGroupLinkSwitch.setChecked(groupLink.isEnabled()); approveNewMembersSwitch.setChecked(groupLink.isRequiresApproval()); - shareableGroupLinkDisplay.setText(groupLink.getUrl()); + shareableGroupLinkDisplay.setText(formatForFullWidthWrapping(groupLink.getUrl())); }); shareRow.setOnClickListener(v -> GroupLinkBottomSheetDialogFragment.show(requireFragmentManager(), groupId)); shareableGroupLinkRow.setOnClickListener(v -> viewModel.onToggleGroupLink(requireContext())); approveNewMembersRow.setOnClickListener(v -> viewModel.onToggleApproveMembers(requireContext())); - resetLinkRow.setOnClickListener(v -> viewModel.onResetLink(requireContext())); + resetLinkRow.setOnClickListener(v -> + new AlertDialog.Builder(requireContext()) + .setMessage(R.string.ShareableGroupLinkDialogFragment__are_you_sure_you_want_to_reset_the_group_link) + .setPositiveButton(R.string.ShareableGroupLinkDialogFragment__reset_link, (dialog, which) -> viewModel.onResetLink(requireContext())) + .setNegativeButton(android.R.string.cancel, null) + .show()); viewModel.getToasts().observe(getViewLifecycleOwner(), t -> Toast.makeText(requireContext(), t, Toast.LENGTH_SHORT).show()); @@ -109,4 +115,19 @@ public final class ShareableGroupLinkDialogFragment extends DialogFragment { } }); } + + /** + * Inserts zero width space characters between each character in the original ensuring it takes + * the full width of the TextView. + */ + private static CharSequence formatForFullWidthWrapping(@NonNull String url) { + char[] chars = new char[url.length() * 2]; + + for (int i = 0; i < url.length(); i++) { + chars[i * 2] = url.charAt(i); + chars[i * 2 + 1] = '\u200B'; + } + + return new String(chars); + } } diff --git a/app/src/main/res/layout/shareable_group_link_dialog_fragment.xml b/app/src/main/res/layout/shareable_group_link_dialog_fragment.xml index 485872ca6f..241df3f256 100644 --- a/app/src/main/res/layout/shareable_group_link_dialog_fragment.xml +++ b/app/src/main/res/layout/shareable_group_link_dialog_fragment.xml @@ -69,6 +69,7 @@ android:id="@+id/shareable_group_link_display_row" android:layout_width="match_parent" android:layout_height="wrap_content" + android:layout_marginEnd="60dp" android:background="?selectableItemBackground" android:clickable="true" android:focusable="true" @@ -89,7 +90,8 @@ android:text="@string/ShareableGroupLinkDialogFragment__share" android:textAlignment="viewStart" android:textAppearance="@style/TextAppearance.Signal.Body2" - tools:text="https://signal.org/7836478267" /> + android:textColor="?title_text_color_secondary" + tools:text="https://signal.group/#CjQKIKUBM1ER-gTjdWwktuuHJk4t-2Iujh0zkXl2VBB3bASIEhDwi34i-5OMAl5sFYt9VElW" /> @@ -118,6 +120,7 @@ android:text="@string/ShareableGroupLinkDialogFragment__share" android:textAlignment="viewStart" android:textAppearance="@style/TextAppearance.Signal.Body2" + android:textColor="?title_text_color_primary" app:drawableStartCompat="?share_icon" /> @@ -147,6 +150,7 @@ android:text="@string/ShareableGroupLinkDialogFragment__reset_link" android:textAlignment="viewStart" android:textAppearance="@style/TextAppearance.Signal.Body2" + android:textColor="?title_text_color_primary" app:drawableStartCompat="?reset_link_icon" /> @@ -200,4 +204,30 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cfa2c1fcd3..1669cd0e50 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -675,6 +675,8 @@ Disabled Default Group link reset + Require an admin to approve new members joining via the group link. + Are you sure you want to reset the group link? People will no longer be able to join the group using the current link. QR code