Rework storage structs, link preview

This commit is contained in:
Christoph Hagen
2025-01-08 14:59:04 +01:00
parent b99c064d10
commit a7197b9628
75 changed files with 1365 additions and 1454 deletions

View File

@@ -1,6 +1,6 @@
import Foundation
final class NavigationSettings: ObservableObject {
final class NavigationSettings: ObservableObject, LocalizedItem {
/// The items to show in the navigation bar
@Published
@@ -19,23 +19,31 @@ final class NavigationSettings: ObservableObject {
self.german = german
self.english = english
}
init(file: NavigationSettingsFile, map: (String) -> Item?) {
self.navigationItems = file.navigationItems.compactMap(map)
self.german = LocalizedNavigationSettings(file: file.german)
self.english = LocalizedNavigationSettings(file: file.english)
}
var file: NavigationSettingsFile {
.init(
navigationItems: navigationItems.map { $0.itemType.id },
german: german.file,
english: english.file)
}
}
extension NavigationSettings: LocalizedItem {
// 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 {
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 {