|
|
@ -11,6 +11,7 @@ extension MessageReceiver {
|
|
|
|
case let message as ReadReceipt: handleReadReceipt(message, using: transaction)
|
|
|
|
case let message as ReadReceipt: handleReadReceipt(message, using: transaction)
|
|
|
|
case let message as TypingIndicator: handleTypingIndicator(message, using: transaction)
|
|
|
|
case let message as TypingIndicator: handleTypingIndicator(message, using: transaction)
|
|
|
|
case let message as ClosedGroupControlMessage: handleClosedGroupControlMessage(message, using: transaction)
|
|
|
|
case let message as ClosedGroupControlMessage: handleClosedGroupControlMessage(message, using: transaction)
|
|
|
|
|
|
|
|
case let message as DataExtractionNotification: handleDataExtractionNotification(message, using: transaction)
|
|
|
|
case let message as ExpirationTimerUpdate: handleExpirationTimerUpdate(message, using: transaction)
|
|
|
|
case let message as ExpirationTimerUpdate: handleExpirationTimerUpdate(message, using: transaction)
|
|
|
|
case let message as ConfigurationMessage: handleConfigurationMessage(message, using: transaction)
|
|
|
|
case let message as ConfigurationMessage: handleConfigurationMessage(message, using: transaction)
|
|
|
|
case let message as VisibleMessage: try handleVisibleMessage(message, associatedWithProto: proto, openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll, using: transaction)
|
|
|
|
case let message as VisibleMessage: try handleVisibleMessage(message, associatedWithProto: proto, openGroupID: openGroupID, isBackgroundPoll: isBackgroundPoll, using: transaction)
|
|
|
@ -104,6 +105,14 @@ extension MessageReceiver {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// MARK: - Data Extraction Notification
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static func handleDataExtractionNotification(_ message: DataExtractionNotification, using transaction: Any) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// MARK: - Expiration Timers
|
|
|
|
// MARK: - Expiration Timers
|
|
|
|
|
|
|
|
|
|
|
|
private static func handleExpirationTimerUpdate(_ message: ExpirationTimerUpdate, using transaction: Any) {
|
|
|
|
private static func handleExpirationTimerUpdate(_ message: ExpirationTimerUpdate, using transaction: Any) {
|
|
|
@ -343,7 +352,7 @@ extension MessageReceiver {
|
|
|
|
thread = TSGroupThread.getOrCreateThread(with: group, transaction: transaction)
|
|
|
|
thread = TSGroupThread.getOrCreateThread(with: group, transaction: transaction)
|
|
|
|
thread.save(with: transaction)
|
|
|
|
thread.save(with: transaction)
|
|
|
|
// Notify the user
|
|
|
|
// Notify the user
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: messageSentTimestamp, in: thread, messageType: .typeGroupUpdate)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: messageSentTimestamp, in: thread, messageType: .groupUpdate)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
// Add the group to the user's set of public keys to poll for
|
|
|
|
// Add the group to the user's set of public keys to poll for
|
|
|
@ -413,7 +422,7 @@ extension MessageReceiver {
|
|
|
|
// Notify the user if needed
|
|
|
|
// Notify the user if needed
|
|
|
|
guard name != group.groupName else { return }
|
|
|
|
guard name != group.groupName else { return }
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: .typeGroupUpdate, customMessage: updateInfo)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: .groupUpdate, customMessage: updateInfo)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -436,7 +445,7 @@ extension MessageReceiver {
|
|
|
|
// Notify the user if needed
|
|
|
|
// Notify the user if needed
|
|
|
|
guard members != Set(group.groupMemberIds) else { return }
|
|
|
|
guard members != Set(group.groupMemberIds) else { return }
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: .typeGroupUpdate, customMessage: updateInfo)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: .groupUpdate, customMessage: updateInfo)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
@ -477,7 +486,7 @@ extension MessageReceiver {
|
|
|
|
thread.setGroupModel(newGroupModel, with: transaction)
|
|
|
|
thread.setGroupModel(newGroupModel, with: transaction)
|
|
|
|
// Notify the user if needed
|
|
|
|
// Notify the user if needed
|
|
|
|
guard members != Set(group.groupMemberIds) else { return }
|
|
|
|
guard members != Set(group.groupMemberIds) else { return }
|
|
|
|
let infoMessageType: TSInfoMessageType = wasCurrentUserRemoved ? .typeGroupQuit : .typeGroupUpdate
|
|
|
|
let infoMessageType: TSInfoMessageType = wasCurrentUserRemoved ? .groupQuit : .groupUpdate
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: infoMessageType, customMessage: updateInfo)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: infoMessageType, customMessage: updateInfo)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
@ -517,7 +526,7 @@ extension MessageReceiver {
|
|
|
|
// Notify the user if needed
|
|
|
|
// Notify the user if needed
|
|
|
|
guard members != Set(group.groupMemberIds) else { return }
|
|
|
|
guard members != Set(group.groupMemberIds) else { return }
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let updateInfo = group.getInfoStringAboutUpdate(to: newGroupModel)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: .typeGroupUpdate, customMessage: updateInfo)
|
|
|
|
let infoMessage = TSInfoMessage(timestamp: message.sentTimestamp!, in: thread, messageType: .groupUpdate, customMessage: updateInfo)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
infoMessage.save(with: transaction)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|