Add a RoomScreenHook.

This commit is contained in:
Doug
2025-06-06 14:53:29 +01:00
committed by Stefan Ceriu
parent 3f61eb8c5e
commit e3884f903c
13 changed files with 86 additions and 10 deletions
+13
View File
@@ -9,6 +9,10 @@ import Foundation
class AppHooks: AppHooksProtocol {
#if IS_MAIN_APP
func configure(with userSession: UserSessionProtocol?) async {
await roomScreenHook.configure(with: userSession)
}
private(set) var appSettingsHook: AppSettingsHookProtocol = DefaultAppSettingsHook()
func registerAppSettingsHook(_ hook: AppSettingsHookProtocol) {
appSettingsHook = hook
@@ -28,6 +32,11 @@ class AppHooks: AppHooksProtocol {
func registerCertificateValidatorHook(_ hook: CertificateValidatorHookProtocol) {
certificateValidatorHook = hook
}
private(set) var roomScreenHook: RoomScreenHookProtocol = DefaultRoomScreenHook()
func registerRoomScreenHook(_ hook: RoomScreenHookProtocol) {
roomScreenHook = hook
}
#endif
private(set) var clientBuilderHook: ClientBuilderHookProtocol = DefaultClientBuilderHook()
@@ -38,6 +47,10 @@ class AppHooks: AppHooksProtocol {
protocol AppHooksProtocol {
func setUp()
#if IS_MAIN_APP
func configure(with userSession: UserSessionProtocol?) async
#endif
}
extension AppHooksProtocol {
@@ -0,0 +1,18 @@
//
// Copyright 2025 New Vector Ltd.
//
// SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-Element-Commercial
// Please see LICENSE files in the repository root for full details.
//
import Foundation
protocol RoomScreenHookProtocol {
func configure(with userSession: UserSessionProtocol?) async
func update(_ viewState: RoomScreenViewState) -> RoomScreenViewState
}
struct DefaultRoomScreenHook: RoomScreenHookProtocol {
func configure(with userSession: UserSessionProtocol?) async { }
func update(_ viewState: RoomScreenViewState) -> RoomScreenViewState { viewState }
}