mirror of
https://github.com/oxen-io/session-android.git
synced 2025-06-09 04:28:34 +00:00
Refactor group leave dialog out of conversation.
This commit is contained in:
parent
e02e4d52b4
commit
04bb4b351a
@ -149,7 +149,7 @@ import org.thoughtcrime.securesms.database.model.StickerRecord;
|
||||
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;
|
||||
@ -1118,25 +1118,10 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
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() {
|
||||
|
@ -50,10 +50,8 @@ public final class GroupManager {
|
||||
}
|
||||
|
||||
@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 {
|
||||
|
@ -153,9 +153,10 @@ final class V1GroupManager {
|
||||
}
|
||||
|
||||
@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 {
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user