That fuck shit the fascists are using
at master 193 lines 9.7 kB view raw
1package org.tm.archive; 2 3import android.content.Context; 4import android.content.res.Resources; 5 6import androidx.annotation.NonNull; 7import androidx.annotation.Nullable; 8import androidx.annotation.WorkerThread; 9import androidx.appcompat.app.AlertDialog; 10import androidx.lifecycle.Lifecycle; 11 12import com.google.android.material.dialog.MaterialAlertDialogBuilder; 13 14import org.signal.core.util.concurrent.SimpleTask; 15import org.signal.storageservice.protos.groups.local.DecryptedPendingMember; 16import org.tm.archive.database.SignalDatabase; 17import org.tm.archive.database.model.GroupRecord; 18import org.tm.archive.recipients.Recipient; 19import org.whispersystems.signalservice.api.groupsv2.DecryptedGroupUtil; 20import org.whispersystems.signalservice.api.push.ServiceId; 21 22import java.util.List; 23import java.util.Optional; 24 25import okio.ByteString; 26 27/** 28 * This should be used whenever we want to prompt the user to block/unblock a recipient. 29 */ 30public final class BlockUnblockDialog { 31 32 private BlockUnblockDialog() {} 33 34 public static void showReportSpamFor(@NonNull Context context, 35 @NonNull Lifecycle lifecycle, 36 @NonNull Recipient recipient, 37 @NonNull Runnable onReportSpam, 38 @Nullable Runnable onBlockAndReportSpam) 39 { 40 SimpleTask.run(lifecycle, 41 () -> buildReportSpamFor(context, recipient, onReportSpam, onBlockAndReportSpam), 42 AlertDialog.Builder::show); 43 } 44 45 public static void showBlockFor(@NonNull Context context, 46 @NonNull Lifecycle lifecycle, 47 @NonNull Recipient recipient, 48 @NonNull Runnable onBlock) 49 { 50 SimpleTask.run(lifecycle, 51 () -> buildBlockFor(context, recipient, onBlock, null), 52 AlertDialog.Builder::show); 53 } 54 55 public static void showBlockAndReportSpamFor(@NonNull Context context, 56 @NonNull Lifecycle lifecycle, 57 @NonNull Recipient recipient, 58 @NonNull Runnable onBlock, 59 @NonNull Runnable onBlockAndReportSpam) 60 { 61 SimpleTask.run(lifecycle, 62 () -> buildBlockFor(context, recipient, onBlock, onBlockAndReportSpam), 63 AlertDialog.Builder::show); 64 } 65 66 public static void showUnblockFor(@NonNull Context context, 67 @NonNull Lifecycle lifecycle, 68 @NonNull Recipient recipient, 69 @NonNull Runnable onUnblock) 70 { 71 SimpleTask.run(lifecycle, 72 () -> buildUnblockFor(context, recipient, onUnblock), 73 AlertDialog.Builder::show); 74 } 75 76 @WorkerThread 77 private static AlertDialog.Builder buildBlockFor(@NonNull Context context, 78 @NonNull Recipient recipient, 79 @NonNull Runnable onBlock, 80 @Nullable Runnable onBlockAndReportSpam) 81 { 82 recipient = recipient.resolve(); 83 84 AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context); 85 Resources resources = context.getResources(); 86 87 if (recipient.isGroup()) { 88 if (SignalDatabase.groups().isActive(recipient.requireGroupId())) { 89 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_block_and_leave_s, recipient.getDisplayName(context))); 90 builder.setMessage(R.string.BlockUnblockDialog_you_will_no_longer_receive_messages_or_updates); 91 builder.setPositiveButton(R.string.BlockUnblockDialog_block_and_leave, ((dialog, which) -> onBlock.run())); 92 builder.setNegativeButton(android.R.string.cancel, null); 93 } else { 94 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_block_s, recipient.getDisplayName(context))); 95 builder.setMessage(R.string.BlockUnblockDialog_group_members_wont_be_able_to_add_you); 96 builder.setPositiveButton(R.string.RecipientPreferenceActivity_block, ((dialog, which) -> onBlock.run())); 97 builder.setNegativeButton(android.R.string.cancel, null); 98 } 99 } else if (recipient.isReleaseNotes()) { 100 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_block_s, recipient.getDisplayName(context))); 101 builder.setMessage(R.string.BlockUnblockDialog_block_getting_signal_updates_and_news); 102 builder.setPositiveButton(R.string.BlockUnblockDialog_block, ((dialog, which) -> onBlock.run())); 103 builder.setNegativeButton(android.R.string.cancel, null); 104 } else { 105 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_block_s, recipient.getDisplayName(context))); 106 builder.setMessage(recipient.isRegistered() ? R.string.BlockUnblockDialog_blocked_people_wont_be_able_to_call_you_or_send_you_messages 107 : R.string.BlockUnblockDialog_blocked_people_wont_be_able_to_send_you_messages); 108 109 if (onBlockAndReportSpam != null) { 110 builder.setNeutralButton(android.R.string.cancel, null); 111 builder.setNegativeButton(R.string.BlockUnblockDialog_report_spam_and_block, (d, w) -> onBlockAndReportSpam.run()); 112 builder.setPositiveButton(R.string.BlockUnblockDialog_block, (d, w) -> onBlock.run()); 113 } else { 114 builder.setPositiveButton(R.string.BlockUnblockDialog_block, ((dialog, which) -> onBlock.run())); 115 builder.setNegativeButton(android.R.string.cancel, null); 116 } 117 } 118 119 return builder; 120 } 121 122 @WorkerThread 123 private static AlertDialog.Builder buildUnblockFor(@NonNull Context context, 124 @NonNull Recipient recipient, 125 @NonNull Runnable onUnblock) 126 { 127 recipient = recipient.resolve(); 128 129 AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context); 130 Resources resources = context.getResources(); 131 132 if (recipient.isGroup()) { 133 if (SignalDatabase.groups().isActive(recipient.requireGroupId())) { 134 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_unblock_s, recipient.getDisplayName(context))); 135 builder.setMessage(R.string.BlockUnblockDialog_group_members_will_be_able_to_add_you); 136 builder.setPositiveButton(R.string.RecipientPreferenceActivity_unblock, ((dialog, which) -> onUnblock.run())); 137 builder.setNegativeButton(android.R.string.cancel, null); 138 } else { 139 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_unblock_s, recipient.getDisplayName(context))); 140 builder.setMessage(R.string.BlockUnblockDialog_group_members_will_be_able_to_add_you); 141 builder.setPositiveButton(R.string.RecipientPreferenceActivity_unblock, ((dialog, which) -> onUnblock.run())); 142 builder.setNegativeButton(android.R.string.cancel, null); 143 } 144 } else if (recipient.isReleaseNotes()) { 145 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_unblock_s, recipient.getDisplayName(context))); 146 builder.setMessage(R.string.BlockUnblockDialog_resume_getting_signal_updates_and_news); 147 148 builder.setPositiveButton(R.string.RecipientPreferenceActivity_unblock, ((dialog, which) -> onUnblock.run())); 149 builder.setNegativeButton(android.R.string.cancel, null); 150 } else { 151 builder.setTitle(resources.getString(R.string.BlockUnblockDialog_unblock_s, recipient.getDisplayName(context))); 152 builder.setMessage(recipient.isRegistered() ? R.string.BlockUnblockDialog_you_will_be_able_to_call_and_message_each_other 153 : R.string.BlockUnblockDialog_you_will_be_able_to_message_each_other); 154 builder.setPositiveButton(R.string.RecipientPreferenceActivity_unblock, ((dialog, which) -> onUnblock.run())); 155 builder.setNegativeButton(android.R.string.cancel, null); 156 } 157 158 return builder; 159 } 160 161 @WorkerThread 162 private static AlertDialog.Builder buildReportSpamFor(@NonNull Context context, 163 @NonNull Recipient recipient, 164 @NonNull Runnable onReportSpam, 165 @Nullable Runnable onBlockAndReportSpam) 166 { 167 recipient = recipient.resolve(); 168 169 AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context) 170 .setTitle(R.string.BlockUnblockDialog_report_spam_title) 171 .setPositiveButton(R.string.BlockUnblockDialog_report_spam, (d, w) -> onReportSpam.run()); 172 173 if (onBlockAndReportSpam != null) { 174 builder.setNeutralButton(android.R.string.cancel, null) 175 .setNegativeButton(R.string.BlockUnblockDialog_report_spam_and_block, (d, w) -> onBlockAndReportSpam.run()); 176 } else { 177 builder.setNegativeButton(android.R.string.cancel, null); 178 } 179 180 if (recipient.isGroup()) { 181 Recipient adder = SignalDatabase.groups().getGroupInviter(recipient.requireGroupId()); 182 if (adder != null) { 183 builder.setMessage(context.getString(R.string.BlockUnblockDialog_report_spam_group_named_adder, adder.getDisplayName(context))); 184 } else { 185 builder.setMessage(R.string.BlockUnblockDialog_report_spam_group_unknown_adder); 186 } 187 } else { 188 builder.setMessage(R.string.BlockUnblockDialog_report_spam_description); 189 } 190 191 return builder; 192 } 193}