Add option to hide save storage warning.

This commit is contained in:
Michelle Tang
2025-01-23 14:17:58 -05:00
committed by GitHub
parent 83af313305
commit f128df7d95
9 changed files with 84 additions and 36 deletions

View File

@@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.util;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.DialogInterface.OnClickListener;
import android.database.Cursor;
import android.media.MediaScannerConnection;
import android.net.Uri;
@@ -11,6 +10,7 @@ import android.os.Build;
import android.os.Environment;
import android.provider.MediaStore;
import android.webkit.MimeTypeMap;
import android.widget.CheckBox;
import android.widget.Toast;
import androidx.annotation.NonNull;
@@ -24,6 +24,7 @@ import org.signal.core.util.StreamUtil;
import org.signal.core.util.logging.Log;
import org.signal.libsignal.protocol.util.Pair;
import org.thoughtcrime.securesms.R;
import org.thoughtcrime.securesms.keyvalue.SignalStore;
import org.thoughtcrime.securesms.mms.PartAuthority;
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask;
@@ -434,20 +435,25 @@ public class SaveAttachmentTask extends ProgressDialogAsyncTask<SaveAttachmentTa
}
}
public static void showWarningDialog(Context context, OnClickListener onAcceptListener) {
showWarningDialog(context, onAcceptListener, 1);
}
public static void showWarningDialog(Context context, OnClickListener onAcceptListener, int count) {
AlertDialog.Builder builder = new MaterialAlertDialogBuilder(context);
builder.setTitle(R.string.ConversationFragment_save_to_sd_card);
builder.setIcon(R.drawable.symbol_error_triangle_fill_24);
builder.setCancelable(true);
builder.setMessage(context.getResources().getQuantityString(R.plurals.ConversationFragment_saving_n_media_to_storage_warning,
count, count));
builder.setPositiveButton(R.string.yes, onAcceptListener);
builder.setNegativeButton(R.string.no, null);
builder.show();
public static void showWarningDialogIfNecessary(Context context, Runnable onSave) {
if (SignalStore.uiHints().hasDismissedSaveStorageWarning()) {
onSave.run();
} else {
new MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_save_attachment)
.setTitle(R.string.ConversationFragment__save_to_phone)
.setCancelable(true)
.setMessage(R.string.ConversationFragment__this_media_will_be_saved)
.setPositiveButton(R.string.save, ((dialog, i) -> {
CheckBox checkbox = ((AlertDialog) dialog).findViewById(R.id.checkbox);
if (checkbox.isChecked()) {
SignalStore.uiHints().markDismissedSaveStorageWarning();
}
onSave.run();
}))
.setNegativeButton(android.R.string.cancel, null)
.show();
}
}
}

View File

@@ -9,7 +9,6 @@ import android.annotation.SuppressLint
import android.content.ContentResolver
import android.content.ContentValues
import android.content.Context
import android.content.DialogInterface.OnClickListener
import android.database.Cursor
import android.media.MediaScannerConnection
import android.net.Uri
@@ -17,8 +16,10 @@ import android.os.Build
import android.os.Environment
import android.provider.MediaStore
import android.webkit.MimeTypeMap
import android.widget.CheckBox
import android.widget.Toast
import androidx.annotation.WorkerThread
import androidx.appcompat.app.AlertDialog
import androidx.core.content.contentValuesOf
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import io.reactivex.rxjava3.core.Single
@@ -28,6 +29,7 @@ import org.signal.core.util.orNull
import org.thoughtcrime.securesms.R
import org.thoughtcrime.securesms.database.model.MmsMessageRecord
import org.thoughtcrime.securesms.dependencies.AppDependencies
import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.mms.PartAuthority
import java.io.File
import java.io.FileOutputStream
@@ -52,15 +54,25 @@ object SaveAttachmentUtil {
private val TAG = Log.tag(SaveAttachmentUtil::class.java)
fun showWarningDialog(context: Context, count: Int, onAcceptListener: OnClickListener) {
MaterialAlertDialogBuilder(context)
.setTitle(R.string.ConversationFragment_save_to_sd_card)
.setIcon(R.drawable.symbol_error_triangle_fill_24)
.setCancelable(true)
.setMessage(context.resources.getQuantityString(R.plurals.ConversationFragment_saving_n_media_to_storage_warning, count, count))
.setPositiveButton(R.string.yes, onAcceptListener)
.setNegativeButton(R.string.no, null)
.show()
fun showWarningDialogIfNecessary(context: Context, onSave: () -> Unit) {
if (SignalStore.uiHints.hasDismissedSaveStorageWarning()) {
onSave()
} else {
MaterialAlertDialogBuilder(context)
.setView(R.layout.dialog_save_attachment)
.setTitle(R.string.ConversationFragment__save_to_phone)
.setCancelable(true)
.setMessage(R.string.ConversationFragment__this_media_will_be_saved)
.setPositiveButton(R.string.save) { dialog, _ ->
val checkbox = (dialog as AlertDialog).findViewById<CheckBox>(R.id.checkbox)!!
if (checkbox.isChecked) {
SignalStore.uiHints.markDismissedSaveStorageWarning()
}
onSave()
}
.setNegativeButton(android.R.string.cancel, null)
.show()
}
}
fun getAttachmentsForRecord(record: MmsMessageRecord): Set<SaveAttachment> {