mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-05-04 15:35:38 +01:00
Add various updates to collapsed events.
This commit is contained in:
@@ -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) }
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user