diff --git a/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift b/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift index 87a09f337..841f844e9 100644 --- a/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift +++ b/SessionMessagingKit/Shared Models/SessionThreadViewModel.swift @@ -1846,7 +1846,7 @@ public extension SessionThreadViewModel { /// the `contactProfile` entry below otherwise the query will fail to parse and might throw /// /// Explicitly set default values for the fields ignored for search results - let numColumnsBeforeProfiles: Int = 7 + let numColumnsBeforeProfiles: Int = 8 let request: SQLRequest = """ SELECT @@ -1856,6 +1856,11 @@ public extension SessionThreadViewModel { \(thread[.creationDateTimestamp]) AS \(ViewModel.Columns.threadCreationDateTimestamp), (\(SQL("\(thread[.id]) = \(userPublicKey)"))) AS \(ViewModel.Columns.threadIsNoteToSelf), + ( + \(SQL("\(thread[.variant]) = \(SessionThread.Variant.contact)")) AND + \(SQL("\(thread[.id]) != \(userPublicKey)")) AND + IFNULL(\(contact[.isApproved]), false) = false + ) AS \(ViewModel.Columns.threadIsMessageRequest), IFNULL(\(thread[.pinnedPriority]), 0) AS \(ViewModel.Columns.threadPinnedPriority), \(contact[.isBlocked]) AS \(ViewModel.Columns.threadIsBlocked), @@ -1865,8 +1870,23 @@ public extension SessionThreadViewModel { \(closedGroupProfileBack.allColumns), \(closedGroupProfileBackFallback.allColumns), \(closedGroup[.name]) AS \(ViewModel.Columns.closedGroupName), + + EXISTS ( + SELECT 1 + FROM \(GroupMember.self) + WHERE ( + \(groupMember[.groupId]) = \(closedGroup[.threadId]) AND + \(SQL("\(groupMember[.role]) != \(GroupMember.Role.zombie)")) AND + \(SQL("\(groupMember[.profileId]) = \(userPublicKey)")) + ) + ) AS \(ViewModel.Columns.currentUserIsClosedGroupMember), + \(openGroup[.name]) AS \(ViewModel.Columns.openGroupName), \(openGroup[.imageData]) AS \(ViewModel.Columns.openGroupProfilePictureData), + \(openGroup[.permissions]) AS \(ViewModel.Columns.openGroupPermissions), + + \(interaction[.id]) AS \(ViewModel.Columns.interactionId), + \(interaction[.variant]) AS \(ViewModel.Columns.interactionVariant), \(SQL("\(userPublicKey)")) AS \(ViewModel.Columns.currentUserPublicKey) diff --git a/SessionShareExtension/ThreadPickerViewModel.swift b/SessionShareExtension/ThreadPickerViewModel.swift index 2d07a43cd..e2bae7488 100644 --- a/SessionShareExtension/ThreadPickerViewModel.swift +++ b/SessionShareExtension/ThreadPickerViewModel.swift @@ -28,6 +28,7 @@ public class ThreadPickerViewModel { .shareQuery(userPublicKey: userPublicKey) .fetchAll(db) } + .map { threads -> [SessionThreadViewModel] in threads.filter { $0.canWrite } } // Exclude unwritable threads .removeDuplicates() .handleEvents(didFail: { SNLog("[ThreadPickerViewModel] Observation failed with error: \($0)") })