75 lines
3.1 KiB
Java
75 lines
3.1 KiB
Java
package org.thoughtcrime.securesms.pin;
|
|
|
|
import android.content.Context;
|
|
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.StringRes;
|
|
import androidx.appcompat.app.AlertDialog;
|
|
|
|
import org.thoughtcrime.securesms.R;
|
|
import org.thoughtcrime.securesms.logging.Log;
|
|
import org.thoughtcrime.securesms.util.ThemeUtil;
|
|
import org.thoughtcrime.securesms.util.concurrent.SimpleTask;
|
|
import org.thoughtcrime.securesms.util.views.SimpleProgressDialog;
|
|
import org.whispersystems.signalservice.internal.contacts.crypto.UnauthenticatedResponseException;
|
|
|
|
import java.io.IOException;
|
|
|
|
public final class PinOptOutDialog {
|
|
|
|
private static final String TAG = Log.tag(PinOptOutDialog.class);
|
|
|
|
public static void showForSkip(@NonNull Context context, @NonNull Runnable onSuccess, @NonNull Runnable onFailed) {
|
|
show(context,
|
|
true,
|
|
onSuccess,
|
|
onFailed);
|
|
}
|
|
|
|
public static void showForOptOut(@NonNull Context context, @NonNull Runnable onSuccess, @NonNull Runnable onFailed) {
|
|
show(context,
|
|
false,
|
|
onSuccess,
|
|
onFailed);
|
|
}
|
|
|
|
private static void show(@NonNull Context context,
|
|
boolean isForSkip,
|
|
@NonNull Runnable onSuccess,
|
|
@NonNull Runnable onFailed)
|
|
{
|
|
AlertDialog dialog = new AlertDialog.Builder(context)
|
|
.setTitle(R.string.PinOptOutDialog_warning)
|
|
.setMessage(R.string.PinOptOutDialog_if_you_disable_the_pin_you_will_lose_all_data)
|
|
.setCancelable(true)
|
|
.setPositiveButton(R.string.PinOptOutDialog_disable_pin, (d, which) -> {
|
|
d.dismiss();
|
|
AlertDialog progress = SimpleProgressDialog.show(context);
|
|
|
|
SimpleTask.run(() -> {
|
|
if (isForSkip) {
|
|
PinState.onPinCreationSkipped();
|
|
} else {
|
|
PinState.onPinOptOut();
|
|
}
|
|
return true;
|
|
}, success -> {
|
|
if (success) {
|
|
onSuccess.run();
|
|
} else {
|
|
onFailed.run();
|
|
}
|
|
progress.dismiss();
|
|
});
|
|
})
|
|
.setNegativeButton(android.R.string.cancel, (d, which) -> d.dismiss())
|
|
.create();
|
|
|
|
dialog.setOnShowListener(dialogInterface -> {
|
|
dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ThemeUtil.getThemedColor(context, R.attr.dangerous_button_color));
|
|
});
|
|
|
|
dialog.show();
|
|
}
|
|
}
|