diff --git a/Sources/UBDevTools/BackendDevTools.swift b/Sources/UBDevTools/BackendDevTools.swift index 483bd7bb..7d895a7a 100644 --- a/Sources/UBDevTools/BackendDevTools.swift +++ b/Sources/UBDevTools/BackendDevTools.swift @@ -28,6 +28,7 @@ class BackendDevTools: DevTool { class ViewModel: ObservableObject { @Published var urls: [BaseUrl] = [] + var appSpecificView: AnyView = AnyView(EmptyView()) } public static var viewModel = ViewModel() @@ -47,6 +48,10 @@ class BackendDevTools: DevTool { viewModel.urls = baseUrls } + public static func setAppSettingsView(view: some View) { + viewModel.appSpecificView = AnyView(view) + } + public static func saveNewUrl(baseUrl: BaseUrl, newUrl: String) { let key = Self.key(url: baseUrl.url) UserDefaults.standard.set(newUrl, forKey: key) diff --git a/Sources/UBDevTools/DevTools.swift b/Sources/UBDevTools/DevTools.swift index 5ba9e36f..11778a70 100644 --- a/Sources/UBDevTools/DevTools.swift +++ b/Sources/UBDevTools/DevTools.swift @@ -8,6 +8,7 @@ import Foundation import UIKit import UBFoundation +import SwiftUI protocol DevTool { static func setup() @@ -31,6 +32,10 @@ public enum UBDevTools { } } + public static func setAppSettingsView(view: some View) { + BackendDevTools.setAppSettingsView(view: view) + } + public static func setupBaseUrls(baseUrls: [BaseUrl]) { BackendDevTools.setup(baseUrls: baseUrls) } diff --git a/Sources/UBDevTools/DevToolsView.swift b/Sources/UBDevTools/DevToolsView.swift index 0f318cdd..edf70b74 100644 --- a/Sources/UBDevTools/DevToolsView.swift +++ b/Sources/UBDevTools/DevToolsView.swift @@ -30,7 +30,7 @@ public struct DevToolsView: View { @State private var showingKeychainDeleteAlert = false @State private var showingUserDefaultsDeleteAlert = false - @StateObject private var backendUrls = BackendDevTools.viewModel + @StateObject private var viewModel = BackendDevTools.viewModel @State private var cacheUpdateValue = UUID() @@ -42,6 +42,7 @@ public struct DevToolsView: View { private var contentView: some View { Form { + viewModel.appSpecificView Group { Section(header: Text("UserDefaults.standard")) { Button("Clear UserDefaults.standard") { @@ -129,8 +130,8 @@ public struct DevToolsView: View { Toggle("Show localization keys", isOn: Binding(get: { Self.showLocalizationKeys }, set: { Self.showLocalizationKeys = $0 })) } Section(header: Text("Backend URL Config")) { - if backendUrls.urls.count > 0 { - List(backendUrls.urls, id: \.title) { bu in + if viewModel.urls.count > 0 { + List(viewModel.urls, id: \.title) { bu in BackendUrlEditor(url: bu) } Button {