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