mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 18:00:02 +01:00
Clear aep from clipboard after 60 seconds.
This commit is contained in:
committed by
Cody Henthorne
parent
ae4c0d1242
commit
9d1960f065
@@ -43,6 +43,7 @@ class MessageBackupsFlowFragment : ComposeFragment(), InAppPaymentCheckoutDelega
|
||||
|
||||
@VisibleForTesting
|
||||
const val TIER = "tier"
|
||||
const val CLIPBOARD_TIMEOUT_SECONDS = 60
|
||||
|
||||
fun create(messageBackupTier: MessageBackupTier?): MessageBackupsFlowFragment {
|
||||
return MessageBackupsFlowFragment().apply {
|
||||
@@ -115,7 +116,7 @@ class MessageBackupsFlowFragment : ComposeFragment(), InAppPaymentCheckoutDelega
|
||||
onNavigationClick = viewModel::goToPreviousStage,
|
||||
onNextClick = viewModel::goToNextStage,
|
||||
onCopyToClipboardClick = {
|
||||
Util.copyToClipboard(context, it)
|
||||
Util.copyToClipboard(context, it, CLIPBOARD_TIMEOUT_SECONDS)
|
||||
}
|
||||
)
|
||||
}
|
||||
|
||||
@@ -16,12 +16,17 @@ import org.thoughtcrime.securesms.util.Util
|
||||
* Fragment which only displays the backup key to the user.
|
||||
*/
|
||||
class BackupKeyDisplayFragment : ComposeFragment() {
|
||||
|
||||
companion object {
|
||||
const val CLIPBOARD_TIMEOUT_SECONDS = 60
|
||||
}
|
||||
|
||||
@Composable
|
||||
override fun FragmentContent() {
|
||||
MessageBackupsKeyRecordScreen(
|
||||
backupKey = SignalStore.account.accountEntropyPool.displayValue,
|
||||
onNavigationClick = { findNavController().popBackStack() },
|
||||
onCopyToClipboardClick = { Util.copyToClipboard(requireContext(), it) },
|
||||
onCopyToClipboardClick = { Util.copyToClipboard(requireContext(), it, CLIPBOARD_TIMEOUT_SECONDS) },
|
||||
onNextClick = { findNavController().popBackStack() }
|
||||
)
|
||||
}
|
||||
|
||||
@@ -5,6 +5,7 @@ import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.os.Build;
|
||||
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
@@ -18,6 +19,10 @@ public class ClearClipboardAlarmReceiver extends BroadcastReceiver {
|
||||
Log.d(TAG, "onReceive: clearing clipboard");
|
||||
|
||||
ClipboardManager clipboardManager = ServiceUtil.getClipboardManager(context);
|
||||
clipboardManager.setPrimaryClip(ClipData.newPlainText(context.getString(R.string.app_name), " "));
|
||||
if (Build.VERSION.SDK_INT >= 28) {
|
||||
clipboardManager.clearPrimaryClip();
|
||||
} else {
|
||||
clipboardManager.setPrimaryClip(ClipData.newPlainText(context.getString(R.string.app_name), " "));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,9 +18,12 @@ package org.thoughtcrime.securesms.util;
|
||||
|
||||
import android.annotation.SuppressLint;
|
||||
import android.app.ActivityManager;
|
||||
import android.app.AlarmManager;
|
||||
import android.app.PendingIntent;
|
||||
import android.content.ClipData;
|
||||
import android.content.ClipboardManager;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.content.pm.PackageManager;
|
||||
import android.graphics.Typeface;
|
||||
import android.net.Uri;
|
||||
@@ -40,11 +43,13 @@ import com.google.i18n.phonenumbers.PhoneNumberUtil;
|
||||
import com.google.i18n.phonenumbers.Phonenumber;
|
||||
|
||||
import org.signal.core.util.Base64;
|
||||
import org.signal.core.util.PendingIntentFlags;
|
||||
import org.signal.core.util.logging.Log;
|
||||
import org.thoughtcrime.securesms.BuildConfig;
|
||||
import org.thoughtcrime.securesms.R;
|
||||
import org.thoughtcrime.securesms.components.ComposeText;
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore;
|
||||
import org.thoughtcrime.securesms.payments.backup.phrase.ClearClipboardAlarmReceiver;
|
||||
|
||||
import java.io.ByteArrayOutputStream;
|
||||
import java.io.IOException;
|
||||
@@ -440,6 +445,18 @@ public class Util {
|
||||
ServiceUtil.getClipboardManager(context).setPrimaryClip(ClipData.newPlainText(COPY_LABEL, text));
|
||||
}
|
||||
|
||||
public static void copyToClipboard(@NonNull Context context, @NonNull CharSequence text, int expiresInSeconds) {
|
||||
ClipboardManager clipboardManager = ServiceUtil.getClipboardManager(context);
|
||||
clipboardManager.setPrimaryClip(ClipData.newPlainText(context.getString(R.string.app_name), text));
|
||||
|
||||
AlarmManager alarmManager = ServiceUtil.getAlarmManager(context);
|
||||
Intent alarmIntent = new Intent(context, ClearClipboardAlarmReceiver.class);
|
||||
PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(context, 0, alarmIntent, PendingIntentFlags.mutable());
|
||||
|
||||
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + TimeUnit.SECONDS.toMillis(expiresInSeconds), pendingAlarmIntent);
|
||||
}
|
||||
|
||||
|
||||
public static int parseInt(String integer, int defaultValue) {
|
||||
try {
|
||||
return Integer.parseInt(integer);
|
||||
|
||||
Reference in New Issue
Block a user