feat: allow group admin to set disappearing message config

pull/941/head
Ryan Zhao 2 years ago
parent 3041f61e31
commit 2ad8041b59

@ -42,6 +42,7 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
private let dependencies: Dependencies
private let threadId: String
private let threadVariant: SessionThread.Variant
private let currentUserIsClosedGroupAdmin: Bool?
private let config: DisappearingMessagesConfiguration
private var currentSelection: CurrentValueSubject<DisappearingMessagesConfiguration, Error>
private var shouldShowConfirmButton: CurrentValueSubject<Bool, Never>
@ -52,11 +53,13 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
dependencies: Dependencies = Dependencies(),
threadId: String,
threadVariant: SessionThread.Variant,
currentUserIsClosedGroupAdmin: Bool?,
config: DisappearingMessagesConfiguration
) {
self.dependencies = dependencies
self.threadId = threadId
self.threadVariant = threadVariant
self.currentUserIsClosedGroupAdmin = currentUserIsClosedGroupAdmin
self.config = config
self.currentSelection = CurrentValueSubject(self.config)
self.shouldShowConfirmButton = CurrentValueSubject(false)
@ -206,7 +209,7 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
rightAccessory: .radio(
isSelected: { (self?.currentSelection.value.isEnabled == false) }
),
isEnabled: false,
isEnabled: (self?.currentUserIsClosedGroupAdmin == true),
onTap: {
let updatedConfig: DisappearingMessagesConfiguration = currentSelection
.with(
@ -231,7 +234,7 @@ class ThreadDisappearingMessagesViewModel: SessionTableViewModel<ThreadDisappear
rightAccessory: .radio(
isSelected: { (self?.currentSelection.value.isEnabled == true) && (self?.currentSelection.value.durationSeconds == duration) }
),
isEnabled: false,
isEnabled: (self?.currentUserIsClosedGroupAdmin == true),
onTap: {
let updatedConfig: DisappearingMessagesConfiguration = currentSelection
.with(

@ -346,6 +346,7 @@ class ThreadSettingsViewModel: SessionTableViewModel<ThreadSettingsViewModel.Nav
viewModel: ThreadDisappearingMessagesViewModel(
threadId: threadId,
threadVariant: threadViewModel.threadVariant,
currentUserIsClosedGroupAdmin: threadViewModel.currentUserIsClosedGroupAdmin,
config: disappearingMessagesConfig
)
)

@ -866,7 +866,7 @@ public extension SessionThreadViewModel {
\(ViewModel.closedGroupProfileBackFallbackKey).*,
\(closedGroup[.name]) AS \(ViewModel.closedGroupNameKey),
(\(groupMember[.profileId]) IS NOT NULL) AS \(ViewModel.currentUserIsClosedGroupMemberKey),
(\(groupMember[.profileId]) IS NOT NULL) AS \(ViewModel.currentUserIsClosedGroupAdminKey),
\(openGroup[.name]) AS \(ViewModel.openGroupNameKey),
\(openGroup[.server]) AS \(ViewModel.openGroupServerKey),
\(openGroup[.roomToken]) AS \(ViewModel.openGroupRoomTokenKey),
@ -881,7 +881,7 @@ public extension SessionThreadViewModel {
LEFT JOIN \(OpenGroup.self) ON \(openGroup[.threadId]) = \(thread[.id])
LEFT JOIN \(ClosedGroup.self) ON \(closedGroup[.threadId]) = \(thread[.id])
LEFT JOIN \(GroupMember.self) ON (
\(SQL("\(groupMember[.role]) = \(GroupMember.Role.standard)")) AND
\(SQL("\(groupMember[.role]) = \(GroupMember.Role.admin)")) AND
\(groupMember[.groupId]) = \(closedGroup[.threadId]) AND
\(SQL("\(groupMember[.profileId]) = \(userPublicKey)"))
)

Loading…
Cancel
Save