@@ -1941,6 +1941,18 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
19411941 return mmsReaderFor(cursor)
19421942 }
19431943
1944+ private fun getPreviousEditIds (id : Long ): List <Long > {
1945+ return readableDatabase
1946+ .select(ID )
1947+ .from(TABLE_NAME )
1948+ .where(" $LATEST_REVISION_ID = ?" , id)
1949+ .orderBy(" $DATE_SENT ASC" )
1950+ .run ()
1951+ .readToList {
1952+ it.requireLong(ID )
1953+ }
1954+ }
1955+
19441956 private fun updateMailboxBitmask (id : Long , maskOff : Long , maskOn : Long , threadId : Optional <Long >) {
19451957 writableDatabase.withinTransaction { db ->
19461958 db.execSQL(
@@ -2011,7 +2023,33 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
20112023 ApplicationDependencies .getDatabaseObserver().notifyConversationListListeners()
20122024 }
20132025
2026+ fun markAsRemoteDelete (targetMessage : MessageRecord ) {
2027+ writableDatabase.withinTransaction { db ->
2028+ if (targetMessage.isEditMessage) {
2029+ val latestRevisionId = (targetMessage as ? MediaMmsMessageRecord )?.latestRevisionId?.id ? : targetMessage.id
2030+ markAsRemoteDeleteInternal(latestRevisionId)
2031+ getPreviousEditIds(latestRevisionId).map { id ->
2032+ db.update(TABLE_NAME )
2033+ .values(
2034+ ORIGINAL_MESSAGE_ID to null ,
2035+ LATEST_REVISION_ID to null
2036+ )
2037+ .where(" $ID = ?" , id)
2038+ .run ()
2039+ deleteMessage(id)
2040+ }
2041+ } else {
2042+ markAsRemoteDeleteInternal(targetMessage.id)
2043+ }
2044+ }
2045+ }
2046+
20142047 fun markAsRemoteDelete (messageId : Long ) {
2048+ val targetMessage: MessageRecord = getMessageRecord(messageId)
2049+ markAsRemoteDelete(targetMessage)
2050+ }
2051+
2052+ private fun markAsRemoteDeleteInternal (messageId : Long ) {
20152053 var deletedAttachments = false
20162054 writableDatabase.withinTransaction { db ->
20172055 db.update(TABLE_NAME )
@@ -2023,7 +2061,9 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
20232061 QUOTE_TYPE to null ,
20242062 QUOTE_ID to null ,
20252063 LINK_PREVIEWS to null ,
2026- SHARED_CONTACTS to null
2064+ SHARED_CONTACTS to null ,
2065+ ORIGINAL_MESSAGE_ID to null ,
2066+ LATEST_REVISION_ID to null
20272067 )
20282068 .where(" $ID = ?" , messageId)
20292069 .run ()
0 commit comments