Skip to content

Commit

Permalink
Refactor group leave dialog out of conversation.
Browse files Browse the repository at this point in the history
  • Loading branch information
alan-signal authored and greyson-signal committed Apr 3, 2020
1 parent e02e4d5 commit 04bb4b3
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 27 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies;
import org.thoughtcrime.securesms.events.ReminderUpdateEvent;
import org.thoughtcrime.securesms.giph.ui.GiphyActivity;
import org.thoughtcrime.securesms.groups.GroupManager;
import org.thoughtcrime.securesms.groups.ui.LeaveGroupDialog;
import org.thoughtcrime.securesms.insights.InsightsLauncher;
import org.thoughtcrime.securesms.invites.InviteReminderModel;
import org.thoughtcrime.securesms.invites.InviteReminderRepository;
Expand Down Expand Up @@ -1118,25 +1118,10 @@ private void handleLeavePushGroup() {
return;
}

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(getString(R.string.ConversationActivity_leave_group));
builder.setIconAttribute(R.attr.dialog_info_icon);
builder.setCancelable(true);
builder.setMessage(getString(R.string.ConversationActivity_are_you_sure_you_want_to_leave_this_group));
builder.setPositiveButton(R.string.yes, (dialog, which) ->
SimpleTask.run(
getLifecycle(),
() -> GroupManager.leaveGroup(ConversationActivity.this, getRecipient()),
(success) -> {
if (success) {
initializeEnabledCheck();
} else {
Toast.makeText(ConversationActivity.this, R.string.ConversationActivity_error_leaving_group, Toast.LENGTH_LONG).show();
}
}));

builder.setNegativeButton(R.string.no, null);
builder.show();
LeaveGroupDialog.handleLeavePushGroup(ConversationActivity.this,
getLifecycle(),
getRecipient().requireGroupId().requirePush(),
this::initializeEnabledCheck);
}

private void handleEditPushGroup() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,10 +50,8 @@ private static Set<RecipientId> getMemberIds(Collection<Recipient> recipients) {
}

@WorkerThread
public static boolean leaveGroup(@NonNull Context context, @NonNull Recipient groupRecipient) {
GroupId groupId = groupRecipient.requireGroupId();

return V1GroupManager.leaveGroup(context, groupId.requireV1(), groupRecipient);
public static boolean leaveGroup(@NonNull Context context, @NonNull GroupId.Push groupId) {
return V1GroupManager.leaveGroup(context, groupId.requireV1());
}

public static class GroupActionResult {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -153,9 +153,10 @@ private static GroupActionResult sendGroupUpdate(@NonNull Context cont
}

@WorkerThread
static boolean leaveGroup(@NonNull Context context, @NonNull GroupId.V1 groupId, @NonNull Recipient groupRecipient) {
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(groupRecipient);
Optional<OutgoingGroupMediaMessage> leaveMessage = GroupUtil.createGroupLeaveMessage(context, groupRecipient);
static boolean leaveGroup(@NonNull Context context, @NonNull GroupId.V1 groupId) {
Recipient groupRecipient = Recipient.externalGroup(context, groupId);
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(groupRecipient);
Optional<OutgoingGroupMediaMessage> leaveMessage = GroupUtil.createGroupLeaveMessage(context, groupRecipient);

if (threadId != -1 && leaveMessage.isPresent()) {
try {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
package org.thoughtcrime.securesms.groups.ui;

import android.content.Context;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.lifecycle.Lifecycle;

import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.groups.GroupId;
import org.thoughtcrime.securesms.groups.GroupManager;
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;

public final class LeaveGroupDialog {

private LeaveGroupDialog() {
}

public static void handleLeavePushGroup(@NonNull Context context,
@NonNull Lifecycle lifecycle,
@NonNull GroupId.Push groupId,
@Nullable Runnable onSuccess)
{
new AlertDialog.Builder(context)
.setTitle(context.getString(R.string.ConversationActivity_leave_group))
.setIconAttribute(R.attr.dialog_info_icon)
.setCancelable(true)
.setMessage(context.getString(R.string.ConversationActivity_are_you_sure_you_want_to_leave_this_group))
.setPositiveButton(R.string.yes, (dialog, which) ->
SimpleTask.run(
lifecycle,
() -> GroupManager.leaveGroup(context, groupId),
(success) -> {
if (success) {
if (onSuccess != null) onSuccess.run();
} else {
Toast.makeText(context, R.string.ConversationActivity_error_leaving_group, Toast.LENGTH_LONG).show();
}
}))
.setNegativeButton(R.string.no, null)
.show();
}
}

0 comments on commit 04bb4b3

Please sign in to comment.