mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-21 09:20:19 +01:00
Add additional delete sync support.
This commit is contained in:
committed by
Greyson Parrelli
parent
d22d18da47
commit
c80ccd70ec
@@ -10,6 +10,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
import org.thoughtcrime.securesms.database.model.MessageRecord
|
||||
import org.thoughtcrime.securesms.jobs.MultiDeviceDeleteSendSyncJob
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
import org.thoughtcrime.securesms.recipients.Recipient
|
||||
import org.thoughtcrime.securesms.sms.MessageSender
|
||||
import org.thoughtcrime.securesms.util.task.ProgressDialogAsyncTask
|
||||
|
||||
@@ -45,13 +46,24 @@ object DeleteDialog {
|
||||
if (forceRemoteDelete) {
|
||||
builder.setPositiveButton(R.string.ConversationFragment_delete_for_everyone) { _, _ -> deleteForEveryone(messageRecords, emitter) }
|
||||
} else {
|
||||
builder.setPositiveButton(if (isNoteToSelfDelete) R.string.ConversationFragment_delete_on_this_device else R.string.ConversationFragment_delete_for_me) { _, _ ->
|
||||
val deleteSyncEnabled = Recipient.self().deleteSyncCapability.isSupported
|
||||
|
||||
val positiveButton = if (isNoteToSelfDelete) {
|
||||
if (deleteSyncEnabled) R.string.ConversationFragment_delete else R.string.ConversationFragment_delete_on_this_device
|
||||
} else {
|
||||
R.string.ConversationFragment_delete_for_me
|
||||
}
|
||||
|
||||
builder.setPositiveButton(positiveButton) { _, _ ->
|
||||
DeleteProgressDialogAsyncTask(context, messageRecords) {
|
||||
emitter.onSuccess(Pair(true, it))
|
||||
}.executeOnExecutor(SignalExecutors.BOUNDED)
|
||||
}
|
||||
|
||||
if (MessageConstraintsUtil.isValidRemoteDeleteSend(messageRecords, System.currentTimeMillis()) && (!isNoteToSelfDelete || TextSecurePreferences.isMultiDevice(context))) {
|
||||
val canDeleteForEveryone = MessageConstraintsUtil.isValidRemoteDeleteSend(messageRecords, System.currentTimeMillis()) && !isNoteToSelfDelete
|
||||
val canDeleteForEveryoneInNoteToSelf = isNoteToSelfDelete && TextSecurePreferences.isMultiDevice(context) && !deleteSyncEnabled
|
||||
|
||||
if (canDeleteForEveryone || canDeleteForEveryoneInNoteToSelf) {
|
||||
builder.setNeutralButton(if (isNoteToSelfDelete) R.string.ConversationFragment_delete_everywhere else R.string.ConversationFragment_delete_for_everyone) { _, _ -> handleDeleteForEveryone(context, messageRecords, emitter) }
|
||||
}
|
||||
}
|
||||
@@ -109,7 +121,7 @@ object DeleteDialog {
|
||||
}
|
||||
}
|
||||
|
||||
if (RemoteConfig.deleteSyncEnabled) {
|
||||
if (Recipient.self().deleteSyncCapability.isSupported) {
|
||||
MultiDeviceDeleteSendSyncJob.enqueueMessageDeletes(messageRecords)
|
||||
}
|
||||
|
||||
|
||||
@@ -98,7 +98,7 @@ public final class IdentityUtil {
|
||||
} catch (MmsException e) {
|
||||
throw new AssertionError(e);
|
||||
}
|
||||
SignalDatabase.threads().update(threadId, true);
|
||||
SignalDatabase.threads().update(threadId, true, true);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -129,7 +129,7 @@ public final class IdentityUtil {
|
||||
} catch (MmsException e) {
|
||||
throw new AssertionError();
|
||||
}
|
||||
SignalDatabase.threads().update(threadId, true);
|
||||
SignalDatabase.threads().update(threadId, true, true);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -10,6 +10,8 @@ import org.signal.core.util.mebiBytes
|
||||
import org.thoughtcrime.securesms.BuildConfig
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
import org.thoughtcrime.securesms.groups.SelectionLimits
|
||||
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob
|
||||
import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob
|
||||
import org.thoughtcrime.securesms.jobs.RemoteConfigRefreshJob
|
||||
import org.thoughtcrime.securesms.jobs.Svr3MirrorJob
|
||||
import org.thoughtcrime.securesms.keyvalue.SignalStore
|
||||
@@ -1070,12 +1072,13 @@ object RemoteConfig {
|
||||
)
|
||||
|
||||
/** Whether or not to delete syncing is enabled. */
|
||||
@JvmStatic
|
||||
@get:JvmName("deleteSyncEnabled")
|
||||
val deleteSyncEnabled: Boolean by remoteBoolean(
|
||||
key = "android.deleteSyncSendReceive",
|
||||
key = "android.deleteSyncEnabled",
|
||||
defaultValue = false,
|
||||
hotSwappable = true
|
||||
hotSwappable = true,
|
||||
onChangeListener = {
|
||||
AppDependencies.jobManager.startChain(RefreshAttributesJob()).then(RefreshOwnProfileJob()).enqueue()
|
||||
}
|
||||
)
|
||||
|
||||
/** Which phase we're in for the SVR3 migration */
|
||||
|
||||
Reference in New Issue
Block a user