ChWebsiteApp/CHDataManagement/Model/Settings/NavigationSettings.swift
2025-02-05 12:24:33 +01:00

57 lines
1.4 KiB
Swift

import Foundation
final class NavigationSettings: ObservableObject, LocalizedItem {
/// The items to show in the navigation bar
@Published
var navigationItems: [Item]
@Published
var german: LocalizedNavigationSettings
@Published
var english: LocalizedNavigationSettings
init(navigationItems: [Item],
german: LocalizedNavigationSettings,
english: LocalizedNavigationSettings) {
self.navigationItems = navigationItems
self.german = german
self.english = english
}
}
// MARK: Storage
extension NavigationSettings {
convenience init(context: LoadingContext, data: NavigationSettings.Data) {
self.init(
navigationItems: data.navigationItems.compactMap(context.item),
german: LocalizedNavigationSettings(data: data.german),
english: LocalizedNavigationSettings(data: data.english))
}
struct Data: Codable, Equatable {
let navigationItems: [ItemId]
let german: LocalizedNavigationSettings.Data
let english: LocalizedNavigationSettings.Data
}
var data: Data {
.init(
navigationItems: navigationItems.map { $0.itemId },
german: german.data,
english: english.data)
}
}
extension NavigationSettings {
static var `default`: NavigationSettings {
.init(navigationItems: [],
german: .default,
english: .default)
}
}