Rework storage structs, link preview
This commit is contained in:
@@ -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 {
|
||||
|
Reference in New Issue
Block a user