Add reset confirmation dialog and copy to group link management screen.
This commit is contained in:
parent
1425b651d4
commit
01d7694108
3 changed files with 56 additions and 3 deletions
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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>
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Reference in a new issue