// // Copyright 2026 Element Creations 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 nonisolated struct UserHooks: Sendable { let roomScreenHook: RoomScreenHookProtocol let roomDetailsScreenHook: RoomDetailsScreenHookProtocol let roomMemberDetailsScreenHook: RoomMemberDetailsScreenHookProtocol let userProfileScreenHook: UserProfileScreenHookProtocol let recoveryKeyScreenHook: RecoveryKeyScreenHookProtocol let createRoomScreenHook: CreateRoomScreenHookProtocol let securityAndPrivacyScreenHook: SecurityAndPrivacyScreenHookProtocol // HealthChat: session-scoped hooks of the fork. Kept here, next to upstream's, so screens reach them the same way. let extendedProfileSectionHook: ExtendedProfileSectionHookProtocol let settingsScreenHook: SettingsScreenHookProtocol init(roomScreenHook: RoomScreenHookProtocol = DefaultRoomScreenHook(), roomDetailsScreenHook: RoomDetailsScreenHookProtocol = DefaultRoomDetailsScreenHook(), roomMemberDetailsScreenHook: RoomMemberDetailsScreenHookProtocol = DefaultRoomMemberDetailsScreenHook(), userProfileScreenHook: UserProfileScreenHookProtocol = DefaultUserProfileScreenHook(), recoveryKeyScreenHook: RecoveryKeyScreenHookProtocol = DefaultRecoveryKeyScreenHook(), createRoomScreenHook: CreateRoomScreenHookProtocol = DefaultCreateRoomScreenHook(), securityAndPrivacyScreenHook: SecurityAndPrivacyScreenHookProtocol = DefaultSecurityAndPrivacyScreenHook(), extendedProfileSectionHook: ExtendedProfileSectionHookProtocol = DefaultExtendedProfileSectionHook(), settingsScreenHook: SettingsScreenHookProtocol = DefaultSettingsScreenHook()) { self.roomScreenHook = roomScreenHook self.roomDetailsScreenHook = roomDetailsScreenHook self.roomMemberDetailsScreenHook = roomMemberDetailsScreenHook self.userProfileScreenHook = userProfileScreenHook self.recoveryKeyScreenHook = recoveryKeyScreenHook self.createRoomScreenHook = createRoomScreenHook self.securityAndPrivacyScreenHook = securityAndPrivacyScreenHook self.extendedProfileSectionHook = extendedProfileSectionHook self.settingsScreenHook = settingsScreenHook } }