Add reset confirmation dialog and copy to group link management screen.

This commit is contained in:
Alan Evans 2020-08-27 11:29:44 -03:00
parent 1425b651d4
commit 01d7694108
3 changed files with 56 additions and 3 deletions

View file

@ -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);
}
}

View file

@ -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" />
</LinearLayout>
@ -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" />
</LinearLayout>
@ -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" />
</LinearLayout>
@ -200,4 +204,30 @@
</LinearLayout>
<LinearLayout
android:id="@+id/shareable_group_link_display_row2"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginEnd="60dp"
android:background="?selectableItemBackground"
android:orientation="horizontal"
android:paddingStart="12dp"
android:paddingEnd="12dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/shareable_group_link_approve_new_members_row">
<TextView
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_gravity="center_horizontal"
android:layout_weight="1"
android:enabled="false"
android:gravity="center_vertical|start"
android:text="@string/ShareableGroupLinkDialogFragment__require_an_admin_to_approve_new_members_joining_via_the_group_link"
android:textAlignment="viewStart"
android:textAppearance="@style/TextAppearance.Signal.Body2"
android:textColor="?title_text_color_secondary" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -675,6 +675,8 @@
<string name="ShareableGroupLinkDialogFragment__disabled">Disabled</string>
<string name="ShareableGroupLinkDialogFragment__default">Default</string>
<string name="ShareableGroupLinkDialogFragment__group_link_reset">Group link reset</string>
<string name="ShareableGroupLinkDialogFragment__require_an_admin_to_approve_new_members_joining_via_the_group_link">Require an admin to approve new members joining via the group link.</string>
<string name="ShareableGroupLinkDialogFragment__are_you_sure_you_want_to_reset_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.</string>
<!-- GroupLinkShareQrDialogFragment -->
<string name="GroupLinkShareQrDialogFragment__qr_code">QR code</string>