Fixed another issue with the group member lists

pull/894/head
Morgan Pretty 1 year ago
parent 481ee65822
commit fbc550b883

@ -989,21 +989,25 @@ class ThreadSettingsViewModel: SessionTableViewModel, NavigatableStateHolder, Ob
SELECT \(groupMember.allColumns) SELECT \(groupMember.allColumns)
FROM \(groupMember) FROM \(groupMember)
WHERE ( WHERE (
\(groupMember[.groupId]) == \(threadId) AND \(groupMember[.groupId]) == \(threadId) AND (
( \(groupMember[.role]) == \(GroupMember.Role.admin) OR
\(groupMember[.role]) != \(GroupMember.Role.admin) AND (
\(groupMember[.roleStatus]) == \(GroupMember.RoleStatus.accepted) \(groupMember[.role]) != \(GroupMember.Role.admin) AND
) OR ( \(groupMember[.roleStatus]) == \(GroupMember.RoleStatus.accepted)
\(groupMember[.role]) == \(GroupMember.Role.admin) AND )
\(groupMember[.roleStatus]) != \(GroupMember.RoleStatus.accepted)
) )
) )
GROUP BY \(groupMember[.profileId])
"""), """),
footerTitle: "promote".localized(), footerTitle: "promote".localized(),
onTap: .conditionalAction( onTap: .conditionalAction(
action: { memberInfo in action: { memberInfo in
switch memberInfo.value.roleStatus { guard memberInfo.profileId != memberInfo.currentUserSessionId.hexString else {
case .accepted: return .radio return .none
}
switch (memberInfo.value.role, memberInfo.value.roleStatus) {
case (.standard, _): return .radio
default: default:
return .custom( return .custom(
trailingAccessory: { _ in trailingAccessory: { _ in

@ -63,6 +63,7 @@ class UserListViewModel<T: ProfileAssociated & FetchableRecord>: SessionTableVie
// MARK: - Content // MARK: - Content
public indirect enum OnTapAction { public indirect enum OnTapAction {
case none
case callback((UserListViewModel<T>?, WithProfile<T>) -> Void) case callback((UserListViewModel<T>?, WithProfile<T>) -> Void)
case radio case radio
case conditionalAction(action: (WithProfile<T>) -> OnTapAction) case conditionalAction(action: (WithProfile<T>) -> OnTapAction)
@ -108,7 +109,7 @@ class UserListViewModel<T: ProfileAssociated & FetchableRecord>: SessionTableVie
} }
func generateAccessory(_ action: OnTapAction) -> SessionCell.Accessory? { func generateAccessory(_ action: OnTapAction) -> SessionCell.Accessory? {
switch action { switch action {
case .callback: return nil case .none, .callback: return nil
case .custom(let accessoryGenerator, _): return accessoryGenerator(userInfo) case .custom(let accessoryGenerator, _): return accessoryGenerator(userInfo)
case .conditionalAction(let targetAction): case .conditionalAction(let targetAction):
return generateAccessory(targetAction(userInfo)) return generateAccessory(targetAction(userInfo))
@ -159,6 +160,7 @@ class UserListViewModel<T: ProfileAssociated & FetchableRecord>: SessionTableVie
onTap: { onTap: {
// Trigger any 'onTap' actions // Trigger any 'onTap' actions
switch finalAction { switch finalAction {
case .none: return
case .callback(let callback): callback(self, userInfo) case .callback(let callback): callback(self, userInfo)
case .custom(_, let callback): callback(self, userInfo) case .custom(_, let callback): callback(self, userInfo)
case .radio: break case .radio: break

Loading…
Cancel
Save