From fbc550b883d2d47651376c9bbfd6615a6c2a20d2 Mon Sep 17 00:00:00 2001 From: Morgan Pretty Date: Mon, 21 Oct 2024 17:14:06 +1100 Subject: [PATCH] Fixed another issue with the group member lists --- .../Settings/ThreadSettingsViewModel.swift | 22 +++++++++++-------- Session/Shared/UserListViewModel.swift | 4 +++- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/Session/Conversations/Settings/ThreadSettingsViewModel.swift b/Session/Conversations/Settings/ThreadSettingsViewModel.swift index 56c3f0fff..1f9ddd152 100644 --- a/Session/Conversations/Settings/ThreadSettingsViewModel.swift +++ b/Session/Conversations/Settings/ThreadSettingsViewModel.swift @@ -989,21 +989,25 @@ class ThreadSettingsViewModel: SessionTableViewModel, NavigatableStateHolder, Ob SELECT \(groupMember.allColumns) FROM \(groupMember) WHERE ( - \(groupMember[.groupId]) == \(threadId) AND - ( - \(groupMember[.role]) != \(GroupMember.Role.admin) AND - \(groupMember[.roleStatus]) == \(GroupMember.RoleStatus.accepted) - ) OR ( - \(groupMember[.role]) == \(GroupMember.Role.admin) AND - \(groupMember[.roleStatus]) != \(GroupMember.RoleStatus.accepted) + \(groupMember[.groupId]) == \(threadId) AND ( + \(groupMember[.role]) == \(GroupMember.Role.admin) OR + ( + \(groupMember[.role]) != \(GroupMember.Role.admin) AND + \(groupMember[.roleStatus]) == \(GroupMember.RoleStatus.accepted) + ) ) ) + GROUP BY \(groupMember[.profileId]) """), footerTitle: "promote".localized(), onTap: .conditionalAction( action: { memberInfo in - switch memberInfo.value.roleStatus { - case .accepted: return .radio + guard memberInfo.profileId != memberInfo.currentUserSessionId.hexString else { + return .none + } + + switch (memberInfo.value.role, memberInfo.value.roleStatus) { + case (.standard, _): return .radio default: return .custom( trailingAccessory: { _ in diff --git a/Session/Shared/UserListViewModel.swift b/Session/Shared/UserListViewModel.swift index c84e72f94..a3a63ec95 100644 --- a/Session/Shared/UserListViewModel.swift +++ b/Session/Shared/UserListViewModel.swift @@ -63,6 +63,7 @@ class UserListViewModel: SessionTableVie // MARK: - Content public indirect enum OnTapAction { + case none case callback((UserListViewModel?, WithProfile) -> Void) case radio case conditionalAction(action: (WithProfile) -> OnTapAction) @@ -108,7 +109,7 @@ class UserListViewModel: SessionTableVie } func generateAccessory(_ action: OnTapAction) -> SessionCell.Accessory? { switch action { - case .callback: return nil + case .none, .callback: return nil case .custom(let accessoryGenerator, _): return accessoryGenerator(userInfo) case .conditionalAction(let targetAction): return generateAccessory(targetAction(userInfo)) @@ -159,6 +160,7 @@ class UserListViewModel: SessionTableVie onTap: { // Trigger any 'onTap' actions switch finalAction { + case .none: return case .callback(let callback): callback(self, userInfo) case .custom(_, let callback): callback(self, userInfo) case .radio: break