Ensure reactions are deleted for 'delete for everyone'.
This commit is contained in:
parent
4984cc8eb4
commit
c2f953b097
4 changed files with 22 additions and 1 deletions
|
@ -850,9 +850,11 @@ public class MmsDatabase extends MessageDatabase {
|
|||
deletedAttachments = SignalDatabase.attachments().deleteAttachmentsForMessage(messageId);
|
||||
SignalDatabase.mentions().deleteMentionsForMessage(messageId);
|
||||
SignalDatabase.messageLog().deleteAllRelatedToMessage(messageId, true);
|
||||
SignalDatabase.reactions().deleteReactions(new MessageId(messageId, true));
|
||||
|
||||
threadId = getThreadIdForMessage(messageId);
|
||||
SignalDatabase.threads().update(threadId, false);
|
||||
|
||||
db.setTransactionSuccessful();
|
||||
} finally {
|
||||
db.endTransaction();
|
||||
|
|
|
@ -168,6 +168,10 @@ class ReactionDatabase(context: Context, databaseHelper: SignalDatabase) : Datab
|
|||
ApplicationDependencies.getDatabaseObserver().notifyMessageUpdateObservers(messageId)
|
||||
}
|
||||
|
||||
fun deleteReactions(messageId: MessageId) {
|
||||
writableDatabase.delete(TABLE_NAME, "$MESSAGE_ID = ? AND $IS_MMS = ?", SqlUtil.buildArgs(messageId.id, if (messageId.mms) 1 else 0))
|
||||
}
|
||||
|
||||
fun hasReaction(messageId: MessageId, reaction: ReactionRecord): Boolean {
|
||||
val query = "$MESSAGE_ID = ? AND $IS_MMS = ? AND $AUTHOR_ID = ? AND $EMOJI = ?"
|
||||
val args = SqlUtil.buildArgs(messageId.id, if (messageId.mms) 1 else 0, reaction.author, reaction.emoji)
|
||||
|
|
|
@ -392,6 +392,7 @@ public class SmsDatabase extends MessageDatabase {
|
|||
|
||||
threadId = getThreadIdForMessage(id);
|
||||
|
||||
SignalDatabase.reactions().deleteReactions(new MessageId(id, false));
|
||||
SignalDatabase.threads().update(threadId, false);
|
||||
SignalDatabase.messageLog().deleteAllRelatedToMessage(id, false);
|
||||
|
||||
|
|
|
@ -182,8 +182,9 @@ object SignalDatabaseMigrations {
|
|||
private const val NOTIFICATION_PROFILES = 123
|
||||
private const val NOTIFICATION_PROFILES_END_FIX = 124
|
||||
private const val REACTION_BACKUP_CLEANUP = 125
|
||||
private const val REACTION_REMOTE_DELETE_CLEANUP = 126
|
||||
|
||||
const val DATABASE_VERSION = 125
|
||||
const val DATABASE_VERSION = 126
|
||||
|
||||
@JvmStatic
|
||||
fun migrate(context: Context, db: SQLiteDatabase, oldVersion: Int, newVersion: Int) {
|
||||
|
@ -2246,6 +2247,19 @@ object SignalDatabaseMigrations {
|
|||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
|
||||
if (oldVersion < REACTION_REMOTE_DELETE_CLEANUP) {
|
||||
db.execSQL(
|
||||
// language=sql
|
||||
"""
|
||||
DELETE FROM reaction
|
||||
WHERE
|
||||
(is_mms = 0 AND message_id IN (SELECT _id from sms WHERE remote_deleted = 1))
|
||||
OR
|
||||
(is_mms = 1 AND message_id IN (SELECT _id from mms WHERE remote_deleted = 1))
|
||||
""".trimIndent()
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
|
|
Loading…
Add table
Reference in a new issue