Add various updates to collapsed events.

This commit is contained in:
Michelle Tang
2026-04-01 10:49:37 -04:00
committed by GitHub
parent dec9eb613e
commit 495e2e043e
8 changed files with 103 additions and 8 deletions
@@ -7,6 +7,8 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras
*/
object CollapsibleEvents {
const val MAX_SIZE = 50
@JvmStatic
fun isCollapsibleType(type: Long, messageExtras: MessageExtras?): Boolean {
return getCollapsibleType(type, messageExtras) != null
@@ -41,6 +43,18 @@ object CollapsibleEvents {
return CollapsibleType.CHAT_UPDATE
}
if (MessageTypes.isPinnedMessageUpdate(type)) {
return CollapsibleType.CHAT_UPDATE
}
if (MessageTypes.isPollTerminate(type)) {
return CollapsibleType.CHAT_UPDATE
}
if (MessageTypes.isChangeNumber(type)) {
return CollapsibleType.CHAT_UPDATE
}
return null
}
@@ -3631,12 +3631,29 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
.limit(1)
.run()
.readToSingleObject { cursor ->
PotentialCollapsibleMessage(
val message = PotentialCollapsibleMessage(
type = cursor.requireLong(TYPE),
dateReceived = cursor.requireLong(DATE_RECEIVED),
collapsedHeadId = cursor.requireLong(COLLAPSED_HEAD_ID),
messageExtras = cursor.requireBlob(MESSAGE_EXTRAS)?.let { MessageExtras.ADAPTER.decode(it) }
)
val collapsedSize = if (message.collapsedHeadId != 0L) {
readableDatabase
.count()
.from(TABLE_NAME)
.where("$COLLAPSED_HEAD_ID = ?", message.collapsedHeadId)
.run()
.readToSingleInt()
} else {
-1
}
if (collapsedSize in 1..<CollapsibleEvents.MAX_SIZE) {
message
} else {
null
}
}?.takeIf { DateUtils.isSameDay(it.dateReceived, dateReceived) }
}