Add a link to the global settings in the room notifications settings (#1433)

This commit is contained in:
Nicolas Mauri
2023-08-02 18:30:05 +02:00
committed by GitHub
parent 6e5854abf9
commit 17aa0c632f
13 changed files with 153 additions and 21 deletions
@@ -29,19 +29,24 @@ struct RoomDetailsScreenCoordinatorParameters {
enum RoomDetailsScreenCoordinatorAction {
case leftRoom
case presentNotificationSettingsScreen
}
final class RoomDetailsScreenCoordinator: CoordinatorProtocol {
private let parameters: RoomDetailsScreenCoordinatorParameters
private var viewModel: RoomDetailsScreenViewModelProtocol
private var cancellables: Set<AnyCancellable> = .init()
private let selectedUsers: CurrentValueSubject<[UserProfileProxy], Never> = .init([])
private var navigationStackCoordinator: NavigationStackCoordinator? {
parameters.navigationStackCoordinator
}
var callback: ((RoomDetailsScreenCoordinatorAction) -> Void)?
private let actionsSubject: PassthroughSubject<RoomDetailsScreenCoordinatorAction, Never> = .init()
private var cancellables: Set<AnyCancellable> = .init()
var actions: AnyPublisher<RoomDetailsScreenCoordinatorAction, Never> {
actionsSubject.eraseToAnyPublisher()
}
init(parameters: RoomDetailsScreenCoordinatorParameters) {
self.parameters = parameters
@@ -65,7 +70,7 @@ final class RoomDetailsScreenCoordinator: CoordinatorProtocol {
case .requestInvitePeoplePresentation:
self.presentInviteUsersScreen()
case .leftRoom:
self.callback?(.leftRoom)
self.actionsSubject.send(.leftRoom)
case .requestEditDetailsPresentation(let accountOwner):
self.presentRoomDetailsEditScreen(accountOwner: accountOwner)
case .requestNotificationSettingsPresentation:
@@ -189,9 +194,17 @@ final class RoomDetailsScreenCoordinator: CoordinatorProtocol {
}
private func presentNotificationSettings() {
let roomNotificationSettingsParameters = RoomNotificationSettingsScreenCoordinatorParameters(notificationSettingsProxy: parameters.notificationSettings,
let roomNotificationSettingsParameters = RoomNotificationSettingsScreenCoordinatorParameters(navigationStackCoordinator: parameters.navigationStackCoordinator,
notificationSettingsProxy: parameters.notificationSettings,
roomProxy: parameters.roomProxy)
let roomNotificationSettingsCoordinator = RoomNotificationSettingsScreenCoordinator(parameters: roomNotificationSettingsParameters)
roomNotificationSettingsCoordinator.actions.sink { [weak self] actions in
switch actions {
case .presentNotificationSettingsScreen:
self?.actionsSubject.send(.presentNotificationSettingsScreen)
}
}
.store(in: &cancellables)
navigationStackCoordinator?.push(roomNotificationSettingsCoordinator)
}
}