WIP: fix outdated client banner with sql query

pull/731/head
Ryan ZHAO 7 months ago
parent adf1a76acc
commit d492290303

@ -805,14 +805,6 @@ final class ConversationVC: BaseVC, SessionUtilRespondingViewController, Convers
.map { NSRange($0, in: text) }
.defaulting(to: NSRange(location: 0, length: 0))
)
outdatedClientBanner.update(
message: String(
format: "DISAPPEARING_MESSAGES_OUTDATED_CLIENT_BANNER".localized(),
updatedThreadData.displayName
),
dismiss: self.removeOutdatedClientBanner
)
}
if
@ -878,7 +870,7 @@ final class ConversationVC: BaseVC, SessionUtilRespondingViewController, Convers
}
}
addOrRemoveOutdatedClientBanner(contactIsUsingOutdatedClient: updatedThreadData.contactLastKnownClientVersion == .legacyDisappearingMessages)
addOrRemoveOutdatedClientBanner(outdatedMemberId: updatedThreadData.outdatedMemberId)
if initialLoad || viewModel.threadData.threadIsBlocked != updatedThreadData.threadIsBlocked {
addOrRemoveBlockedBanner(threadIsBlocked: (updatedThreadData.threadIsBlocked == true))
@ -1505,7 +1497,7 @@ final class ConversationVC: BaseVC, SessionUtilRespondingViewController, Convers
// MARK: - General
func addOrRemoveOutdatedClientBanner(contactIsUsingOutdatedClient: Bool) {
func addOrRemoveOutdatedClientBanner(outdatedMemberId: String?) {
// Do not show the banner until the new disappearing messages is enabled
guard Features.useNewDisappearingMessagesConfig else {
self.outdatedClientBanner.isHidden = true
@ -1513,10 +1505,18 @@ final class ConversationVC: BaseVC, SessionUtilRespondingViewController, Convers
return
}
guard contactIsUsingOutdatedClient else {
guard let outdatedMemberId: String = outdatedMemberId else {
removeOutdatedClientBanner()
return
}
self.outdatedClientBanner.update(
message: String(
format: "DISAPPEARING_MESSAGES_OUTDATED_CLIENT_BANNER".localized(),
Profile.displayName(id: outdatedMemberId, threadVariant: self.viewModel.threadData.threadVariant)
),
dismiss: self.removeOutdatedClientBanner
)
self.outdatedClientBanner.isHidden = false
self.emptyStateLabelTopConstraint?.constant = 0

@ -26,7 +26,7 @@ public struct SessionThreadViewModel: FetchableRecordWithRowId, Decodable, Equat
case threadMemberNames
case threadIsNoteToSelf
case contactLastKnownClientVersion
case outdatedMemberId
case threadIsMessageRequest
case threadRequiresApproval
case threadShouldBeVisible
@ -94,7 +94,7 @@ public struct SessionThreadViewModel: FetchableRecordWithRowId, Decodable, Equat
public let threadIsNoteToSelf: Bool
public let contactLastKnownClientVersion: FeatureVersion?
public let outdatedMemberId: String?
/// This flag indicates whether the thread is an outgoing message request
public let threadIsMessageRequest: Bool?
@ -375,7 +375,7 @@ public extension SessionThreadViewModel {
self.threadMemberNames = nil
self.threadIsNoteToSelf = threadIsNoteToSelf
self.contactLastKnownClientVersion = nil
self.outdatedMemberId = nil
self.threadIsMessageRequest = false
self.threadRequiresApproval = false
self.threadShouldBeVisible = false
@ -446,7 +446,7 @@ public extension SessionThreadViewModel {
threadCreationDateTimestamp: self.threadCreationDateTimestamp,
threadMemberNames: self.threadMemberNames,
threadIsNoteToSelf: self.threadIsNoteToSelf,
contactLastKnownClientVersion: self.contactLastKnownClientVersion,
outdatedMemberId: self.outdatedMemberId,
threadIsMessageRequest: self.threadIsMessageRequest,
threadRequiresApproval: self.threadRequiresApproval,
threadShouldBeVisible: self.threadShouldBeVisible,
@ -507,7 +507,7 @@ public extension SessionThreadViewModel {
threadCreationDateTimestamp: self.threadCreationDateTimestamp,
threadMemberNames: self.threadMemberNames,
threadIsNoteToSelf: self.threadIsNoteToSelf,
contactLastKnownClientVersion: self.contactLastKnownClientVersion,
outdatedMemberId: self.outdatedMemberId,
threadIsMessageRequest: self.threadIsMessageRequest,
threadRequiresApproval: self.threadRequiresApproval,
threadShouldBeVisible: self.threadShouldBeVisible,
@ -949,7 +949,17 @@ public extension SessionThreadViewModel {
\(thread[.creationDateTimestamp]) AS \(ViewModel.Columns.threadCreationDateTimestamp),
(\(SQL("\(thread[.id]) = \(userPublicKey)"))) AS \(ViewModel.Columns.threadIsNoteToSelf),
\(contact[.lastKnownClientVersion]) AS \(ViewModel.Columns.contactLastKnownClientVersion),
(
SELECT \(contactProfile[.id])
FROM \(contactProfile.self)
JOIN \(contact.self) ON \(contactProfile[.id]) = \(contact[.id])
JOIN (
SELECT \(groupMember[.profileId])
FROM \(GroupMember.self)
WHERE \(SQL("\(groupMember[.groupId]) = \(threadId)"))
)
WHERE \(contact[.lastKnownClientVersion]) = \(FeatureVersion.legacyDisappearingMessages)
) AS \(ViewModel.Columns.outdatedMemberId),
(
\(SQL("\(thread[.variant]) = \(SessionThread.Variant.contact)")) AND
\(SQL("\(thread[.id]) != \(userPublicKey)")) AND

Loading…
Cancel
Save