Add a DeveloperOptionsScreenHook.

This commit is contained in:
Doug
2025-10-15 09:14:26 +01:00
committed by Stefan Ceriu
parent 0d581cdf86
commit 449349ce36
10 changed files with 41 additions and 24 deletions
@@ -23,9 +23,10 @@ final class DeveloperOptionsScreenCoordinator: CoordinatorProtocol {
actionsSubject.eraseToAnyPublisher()
}
init(appSettings: AppSettings) {
init(appSettings: AppSettings, appHooks: AppHooks) {
viewModel = DeveloperOptionsScreenViewModel(developerOptions: appSettings,
elementCallBaseURL: appSettings.elementCallBaseURL)
elementCallBaseURL: appSettings.elementCallBaseURL,
appHooks: appHooks)
viewModel.actions
.sink { [weak self] action in
@@ -14,6 +14,7 @@ enum DeveloperOptionsScreenViewModelAction {
struct DeveloperOptionsScreenViewState: BindableState {
let elementCallBaseURL: URL
let appHooks: AppHooks
var bindings: DeveloperOptionsScreenViewStateBindings
}
@@ -18,9 +18,9 @@ class DeveloperOptionsScreenViewModel: DeveloperOptionsScreenViewModelType, Deve
actionsSubject.eraseToAnyPublisher()
}
init(developerOptions: DeveloperOptionsProtocol, elementCallBaseURL: URL) {
init(developerOptions: DeveloperOptionsProtocol, elementCallBaseURL: URL, appHooks: AppHooks) {
let bindings = DeveloperOptionsScreenViewStateBindings(developerOptions: developerOptions)
let state = DeveloperOptionsScreenViewState(elementCallBaseURL: elementCallBaseURL, bindings: bindings)
let state = DeveloperOptionsScreenViewState(elementCallBaseURL: elementCallBaseURL, appHooks: appHooks, bindings: bindings)
super.init(initialViewState: state)
}
@@ -33,10 +33,14 @@ struct DeveloperOptionsScreen: View {
}
}
Section("Spaces") {
Section("General") {
Toggle(isOn: $context.spaceSettingsEnabled) {
Text("Space settings")
}
context.viewState.appHooks
.developerOptionsScreenHook
.generalSectionRows()
}
Section("Room List") {
@@ -146,7 +150,6 @@ struct DeveloperOptionsScreen: View {
}
}
.overlay(effectsView)
.compoundList()
.navigationTitle(L10n.commonDeveloperOptions)
.navigationBarTitleDisplayMode(.inline)
}
@@ -205,7 +208,8 @@ private extension Set<TraceLogPack> {
struct DeveloperOptionsScreen_Previews: PreviewProvider {
static let viewModel = DeveloperOptionsScreenViewModel(developerOptions: ServiceLocator.shared.settings,
elementCallBaseURL: ServiceLocator.shared.settings.elementCallBaseURL)
elementCallBaseURL: ServiceLocator.shared.settings.elementCallBaseURL,
appHooks: AppHooks())
static var previews: some View {
NavigationStack {
DeveloperOptionsScreen(context: viewModel.context)