mirror of
https://github.com/oxen-io/session-ios.git
synced 2023-12-13 21:30:14 +01:00
WIP: fix outdated client banner with sql query
This commit is contained in:
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,11 +1505,19 @@ 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…
Reference in a new issue