mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 09:49:30 +01:00
Fully delete remotely deleted stories after sending or on receive.
This commit is contained in:
@@ -189,6 +189,7 @@ public abstract class MessageDatabase extends Database implements MmsSmsColumns,
|
||||
abstract void deleteThreads(@NonNull Set<Long> threadIds);
|
||||
abstract void deleteAllThreads();
|
||||
abstract void deleteAbandonedMessages();
|
||||
public abstract void deleteRemotelyDeletedStory(long messageId);
|
||||
|
||||
public abstract List<MessageRecord> getMessagesInThreadAfterInclusive(long threadId, long timestamp, long limit);
|
||||
|
||||
|
||||
@@ -2668,6 +2668,17 @@ public class MmsDatabase extends MessageDatabase {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRemotelyDeletedStory(long messageId) {
|
||||
try (Cursor cursor = getMessageCursor(messageId)) {
|
||||
if (cursor.moveToFirst() && CursorUtil.requireBoolean(cursor, REMOTE_DELETED)) {
|
||||
deleteMessage(messageId);
|
||||
} else {
|
||||
Log.i(TAG, "Unable to delete remotely deleted story: " + messageId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MessageRecord> getMessagesInThreadAfterInclusive(long threadId, long timestamp, long limit) {
|
||||
String where = TABLE_NAME + "." + MmsSmsColumns.THREAD_ID + " = ? AND " +
|
||||
|
||||
@@ -1647,6 +1647,11 @@ public class SmsDatabase extends MessageDatabase {
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void deleteRemotelyDeletedStory(long messageId) {
|
||||
throw new UnsupportedOperationException();
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<MessageRecord> getMessagesInThreadAfterInclusive(long threadId, long timestamp, long limit) {
|
||||
String where = TABLE_NAME + "." + MmsSmsColumns.THREAD_ID + " = ? AND " +
|
||||
|
||||
@@ -357,7 +357,10 @@ class StorySendsDatabase(context: Context, databaseHelper: SignalDatabase) : Dat
|
||||
}
|
||||
|
||||
val messagesWithoutAnyReceivers = localRows.map { it.messageId }.distinct() - remoteRows.map { it.messageId }.distinct()
|
||||
messagesWithoutAnyReceivers.forEach { SignalDatabase.mms.markAsRemoteDelete(it) }
|
||||
messagesWithoutAnyReceivers.forEach {
|
||||
SignalDatabase.mms.markAsRemoteDelete(it)
|
||||
SignalDatabase.mms.deleteRemotelyDeletedStory(it)
|
||||
}
|
||||
|
||||
writableDatabase.setTransactionSuccessful()
|
||||
} finally {
|
||||
|
||||
Reference in New Issue
Block a user