mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-27 21:24:42 +00:00
Show notification for group adds.
This commit is contained in:
committed by
Greyson Parrelli
parent
c0d7145ada
commit
45a739ce92
@@ -2591,7 +2591,7 @@ open class MessageTable(context: Context?, databaseHelper: SignalDatabase) : Dat
|
||||
}
|
||||
}
|
||||
|
||||
val silent = MessageTypes.isGroupUpdate(type) ||
|
||||
val silent = (MessageTypes.isGroupUpdate(type) && !retrieved.isGroupAdd) ||
|
||||
retrieved.type == MessageType.IDENTITY_DEFAULT ||
|
||||
retrieved.type == MessageType.IDENTITY_VERIFIED ||
|
||||
retrieved.type == MessageType.IDENTITY_UPDATE
|
||||
|
||||
@@ -16,7 +16,7 @@ import org.signal.storageservice.protos.groups.local.DecryptedGroup
|
||||
import org.signal.storageservice.protos.groups.local.DecryptedGroupChange
|
||||
import org.thoughtcrime.securesms.database.SignalDatabase
|
||||
import org.thoughtcrime.securesms.database.model.GroupRecord
|
||||
import org.thoughtcrime.securesms.database.model.GroupsV2UpdateMessageConverter.translateDecryptedChange
|
||||
import org.thoughtcrime.securesms.database.model.GroupsV2UpdateMessageConverter
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GV2UpdateDescription
|
||||
import org.thoughtcrime.securesms.dependencies.AppDependencies
|
||||
@@ -632,11 +632,12 @@ class GroupsV2StateProcessor private constructor(
|
||||
fun storeMessage(decryptedGroupV2Context: DecryptedGroupV2Context, timestamp: Long, serverGuid: String?) {
|
||||
val editor: Optional<ServiceId> = getEditor(decryptedGroupV2Context)
|
||||
|
||||
val serviceIds = SignalStore.account().getServiceIds()
|
||||
val outgoing = editor.isEmpty || aci == editor.get()
|
||||
|
||||
val updateDescription = GV2UpdateDescription(
|
||||
gv2ChangeDescription = decryptedGroupV2Context,
|
||||
groupChangeUpdate = translateDecryptedChange(SignalStore.account().getServiceIds(), decryptedGroupV2Context)
|
||||
groupChangeUpdate = GroupsV2UpdateMessageConverter.translateDecryptedChange(serviceIds, decryptedGroupV2Context)
|
||||
)
|
||||
|
||||
if (outgoing) {
|
||||
@@ -654,12 +655,22 @@ class GroupsV2StateProcessor private constructor(
|
||||
}
|
||||
} else {
|
||||
try {
|
||||
val sender = RecipientId.from(editor.get())
|
||||
val groupMessage = IncomingMessage.groupUpdate(sender, timestamp, groupId, decryptedGroupV2Context, serverGuid)
|
||||
val isGroupAdd = updateDescription
|
||||
.groupChangeUpdate!!
|
||||
.updates
|
||||
.asSequence()
|
||||
.mapNotNull { it.groupMemberAddedUpdate }
|
||||
.any { serviceIds.matches(it.newMemberAci) }
|
||||
|
||||
val groupMessage = IncomingMessage.groupUpdate(RecipientId.from(editor.get()), timestamp, groupId, updateDescription, isGroupAdd, serverGuid)
|
||||
val insertResult = SignalDatabase.messages.insertMessageInbox(groupMessage)
|
||||
|
||||
if (insertResult.isPresent) {
|
||||
SignalDatabase.threads.update(insertResult.get().threadId, unarchive = false, allowDeletion = false)
|
||||
|
||||
if (isGroupAdd) {
|
||||
AppDependencies.messageNotifier.updateNotification(AppDependencies.application)
|
||||
}
|
||||
} else {
|
||||
Log.w(TAG, "Could not insert update message")
|
||||
}
|
||||
|
||||
@@ -7,7 +7,6 @@ import org.thoughtcrime.securesms.database.model.Mention
|
||||
import org.thoughtcrime.securesms.database.model.ParentStoryId
|
||||
import org.thoughtcrime.securesms.database.model.StoryType
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.BodyRangeList
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.DecryptedGroupV2Context
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GV2UpdateDescription
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.GiftBadge
|
||||
import org.thoughtcrime.securesms.database.model.databaseprotos.MessageExtras
|
||||
@@ -39,7 +38,8 @@ class IncomingMessage(
|
||||
linkPreviews: List<LinkPreview> = emptyList(),
|
||||
mentions: List<Mention> = emptyList(),
|
||||
val giftBadge: GiftBadge? = null,
|
||||
val messageExtras: MessageExtras? = null
|
||||
val messageExtras: MessageExtras? = null,
|
||||
val isGroupAdd: Boolean = false
|
||||
) {
|
||||
|
||||
val attachments: List<Attachment> = ArrayList(attachments)
|
||||
@@ -97,18 +97,21 @@ class IncomingMessage(
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun groupUpdate(from: RecipientId, timestamp: Long, groupId: GroupId, groupContext: DecryptedGroupV2Context, serverGuid: String?): IncomingMessage {
|
||||
val messageGroupContext = MessageGroupContext(groupContext)
|
||||
fun groupUpdate(from: RecipientId, timestamp: Long, groupId: GroupId, update: GV2UpdateDescription, isGroupAdd: Boolean, serverGuid: String?): IncomingMessage {
|
||||
val messageExtras = MessageExtras(gv2UpdateDescription = update)
|
||||
val groupContext = MessageGroupContext(update.gv2ChangeDescription!!)
|
||||
|
||||
return IncomingMessage(
|
||||
from = from,
|
||||
sentTimeMillis = timestamp,
|
||||
receivedTimeMillis = timestamp,
|
||||
serverTimeMillis = timestamp,
|
||||
serverGuid = serverGuid,
|
||||
groupId = groupId,
|
||||
groupContext = messageGroupContext,
|
||||
groupContext = groupContext,
|
||||
type = MessageType.GROUP_UPDATE,
|
||||
messageExtras = MessageExtras(gv2UpdateDescription = GV2UpdateDescription(gv2ChangeDescription = groupContext, groupChangeUpdate = null))
|
||||
messageExtras = messageExtras,
|
||||
isGroupAdd = isGroupAdd
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user