mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 04:33:36 +00:00
Exclude remote megaphones from local backups.
This commit is contained in:
@@ -38,6 +38,7 @@ import org.thoughtcrime.securesms.database.OneTimePreKeyTable;
|
||||
import org.thoughtcrime.securesms.database.PendingRetryReceiptTable;
|
||||
import org.thoughtcrime.securesms.database.ReactionTable;
|
||||
import org.thoughtcrime.securesms.database.RemappedRecordTables;
|
||||
import org.thoughtcrime.securesms.database.RemoteMegaphoneTable;
|
||||
import org.thoughtcrime.securesms.database.SearchTable;
|
||||
import org.thoughtcrime.securesms.database.SenderKeyTable;
|
||||
import org.thoughtcrime.securesms.database.SenderKeySharedTable;
|
||||
@@ -95,7 +96,8 @@ public class FullBackupExporter extends FullBackupBase {
|
||||
PendingRetryReceiptTable.TABLE_NAME,
|
||||
AvatarPickerDatabase.TABLE_NAME,
|
||||
RemappedRecordTables.Recipients.TABLE_NAME,
|
||||
RemappedRecordTables.Threads.TABLE_NAME
|
||||
RemappedRecordTables.Threads.TABLE_NAME,
|
||||
RemoteMegaphoneTable.TABLE_NAME
|
||||
);
|
||||
|
||||
public static BackupEvent export(@NonNull Context context,
|
||||
|
||||
@@ -168,11 +168,12 @@ public class FullBackupImporter extends FullBackupBase {
|
||||
return;
|
||||
}
|
||||
|
||||
boolean isForMmsFtsSecretTable = statement.statement.contains(SearchTable.FTS_TABLE_NAME + "_");
|
||||
boolean isForEmojiSecretTable = statement.statement.contains(EmojiSearchTable.TABLE_NAME + "_");
|
||||
boolean isForSqliteSecretTable = statement.statement.toLowerCase().startsWith("create table sqlite_");
|
||||
boolean isForMmsFtsSecretTable = statement.statement.contains(SearchTable.FTS_TABLE_NAME + "_");
|
||||
boolean isForEmojiSecretTable = statement.statement.contains(EmojiSearchTable.TABLE_NAME + "_");
|
||||
boolean isForSqliteSecretTable = statement.statement.toLowerCase().startsWith("create table sqlite_");
|
||||
boolean isForRemoteMegaphoneTable = statement.statement.toLowerCase().startsWith("insert into remote_megaphone");
|
||||
|
||||
if (isForMmsFtsSecretTable || isForEmojiSecretTable || isForSqliteSecretTable) {
|
||||
if (isForMmsFtsSecretTable || isForEmojiSecretTable || isForSqliteSecretTable || isForRemoteMegaphoneTable) {
|
||||
Log.i(TAG, "Ignoring import for statement: " + statement.statement);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -29,7 +29,7 @@ class RemoteMegaphoneTable(context: Context, databaseHelper: SignalDatabase) : D
|
||||
companion object {
|
||||
private val TAG = Log.tag(RemoteMegaphoneTable::class.java)
|
||||
|
||||
private const val TABLE_NAME = "remote_megaphone"
|
||||
const val TABLE_NAME = "remote_megaphone"
|
||||
private const val ID = "_id"
|
||||
private const val UUID = "uuid"
|
||||
private const val COUNTRIES = "countries"
|
||||
|
||||
@@ -323,10 +323,10 @@ class RetrieveRemoteAnnouncementsJob private constructor(private val force: Bool
|
||||
if (megaphonesToDelete.isNotEmpty()) {
|
||||
Log.i(TAG, "Clearing ${megaphonesToDelete.size} stale megaphones ${megaphonesToDelete.keys}")
|
||||
for ((uuid, megaphone) in megaphonesToDelete) {
|
||||
SignalDatabase.remoteMegaphones.clear(uuid)
|
||||
if (megaphone.imageUri != null) {
|
||||
BlobProvider.getInstance().delete(context, megaphone.imageUri)
|
||||
}
|
||||
SignalDatabase.remoteMegaphones.clear(uuid)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -47,12 +47,12 @@ object RemoteMegaphoneRepository {
|
||||
}
|
||||
|
||||
private val finish: Action = Action { context, controller, remote ->
|
||||
if (remote.imageUri != null) {
|
||||
BlobProvider.getInstance().delete(context, remote.imageUri)
|
||||
}
|
||||
controller.onMegaphoneSnooze(Megaphones.Event.REMOTE_MEGAPHONE)
|
||||
SignalExecutors.BOUNDED_IO.execute {
|
||||
db.markFinished(remote.uuid)
|
||||
if (remote.imageUri != null) {
|
||||
BlobProvider.getInstance().delete(context, remote.imageUri)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user