Save automatically, improve mocks
This commit is contained in:
@ -67,7 +67,7 @@ extension AudioPlayerSettings {
|
||||
english: english.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let playlistCoverImageSize: Int
|
||||
let smallCoverImageSize: Int
|
||||
let audioPlayerJsFile: String?
|
||||
|
@ -34,7 +34,7 @@ extension GeneralSettings {
|
||||
linkPreviewImageHeight: linkPreviewImageHeight)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let url: String
|
||||
let linkPreviewImageWidth: Int
|
||||
let linkPreviewImageHeight: Int
|
||||
|
@ -22,7 +22,7 @@ extension LocalizedAudioPlayerSettings {
|
||||
.init(playlistText: playlistText)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let playlistText: String
|
||||
}
|
||||
}
|
||||
|
@ -18,7 +18,7 @@ extension LocalizedNavigationSettings {
|
||||
self.init(rootUrl: data.rootUrl)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let rootUrl: String
|
||||
}
|
||||
|
||||
|
@ -31,7 +31,7 @@ extension LocalizedPageSettings {
|
||||
emptyPageText: emptyPageText)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let emptyPageTitle: String
|
||||
let emptyPageText: String
|
||||
}
|
||||
|
@ -41,7 +41,7 @@ extension LocalizedPostSettings {
|
||||
linkPreview: linkPreview.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let feedUrlPrefix: String
|
||||
let defaultPageLinkText: String
|
||||
let linkPreview: LinkPreview.Data
|
||||
|
@ -32,7 +32,7 @@ extension NavigationSettings {
|
||||
english: LocalizedNavigationSettings(data: data.english))
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let navigationItems: [ItemId]
|
||||
let german: LocalizedNavigationSettings.Data
|
||||
let english: LocalizedNavigationSettings.Data
|
||||
|
@ -104,7 +104,7 @@ extension PageSettings {
|
||||
english: english.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let contentWidth: Int
|
||||
let largeImageWidth: Int
|
||||
let pageLinkImageSize: Int
|
||||
|
@ -64,7 +64,7 @@ extension PathSettings {
|
||||
tagsOutputFolderPath: tagsOutputFolderPath)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let assetsOutputFolderPath: String
|
||||
let pagesOutputFolderPath: String
|
||||
let imagesOutputFolderPath: String
|
||||
|
@ -79,7 +79,7 @@ extension PostSettings {
|
||||
english: english.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let postsPerPage: Int
|
||||
let contentWidth: Int
|
||||
let swiperCssFile: String?
|
||||
|
@ -1,6 +1,7 @@
|
||||
import Foundation
|
||||
import Combine
|
||||
|
||||
final class Settings: ObservableObject {
|
||||
final class Settings: ChangeObservableItem {
|
||||
|
||||
@Published
|
||||
var general: GeneralSettings
|
||||
@ -21,6 +22,10 @@ final class Settings: ObservableObject {
|
||||
@Published
|
||||
var audioPlayer: AudioPlayerSettings
|
||||
|
||||
weak var content: Content?
|
||||
|
||||
var cancellables: Set<AnyCancellable> = []
|
||||
|
||||
init(general: GeneralSettings,
|
||||
paths: PathSettings,
|
||||
navigation: NavigationSettings,
|
||||
@ -40,6 +45,10 @@ final class Settings: ObservableObject {
|
||||
posts.remove(file)
|
||||
audioPlayer.remove(file)
|
||||
}
|
||||
|
||||
func needsSaving() {
|
||||
content?.needsSave()
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Storage
|
||||
@ -54,6 +63,7 @@ extension Settings {
|
||||
posts: .init(context: context, data: data.posts),
|
||||
pages: .init(context: context, data: data.pages),
|
||||
audioPlayer: .init(context: context, data: data.audioPlayer))
|
||||
content = context.content
|
||||
}
|
||||
|
||||
func data(tagOverview: Tag?) -> Data {
|
||||
@ -67,7 +77,7 @@ extension Settings {
|
||||
tagOverview: tagOverview?.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
struct Data: Codable, Equatable {
|
||||
let general: GeneralSettings.Data
|
||||
let paths: PathSettings.Data
|
||||
let navigation: NavigationSettings.Data
|
||||
@ -76,6 +86,10 @@ extension Settings {
|
||||
let audioPlayer: AudioPlayerSettings.Data
|
||||
let tagOverview: Tag.Data?
|
||||
}
|
||||
|
||||
func saveToDisk(_ data: Data) -> Bool {
|
||||
content?.storage.save(settings: data) ?? false
|
||||
}
|
||||
}
|
||||
|
||||
extension Settings {
|
||||
|
Reference in New Issue
Block a user