Rework storage structs, link preview
This commit is contained in:
@ -1,6 +1,6 @@
|
||||
import Foundation
|
||||
|
||||
final class AudioPlayerSettings: ObservableObject {
|
||||
final class AudioPlayerSettings: ObservableObject, LocalizedItem {
|
||||
|
||||
@Published
|
||||
var playlistCoverImageSize: Int
|
||||
@ -34,24 +34,6 @@ final class AudioPlayerSettings: ObservableObject {
|
||||
self.english = english
|
||||
}
|
||||
|
||||
init(file: AudioPlayerSettingsFile, files: [String : FileResource]) {
|
||||
self.playlistCoverImageSize = file.playlistCoverImageSize
|
||||
self.smallCoverImageSize = file.smallCoverImageSize
|
||||
self.audioPlayerJsFile = file.audioPlayerJsFile.map { files[$0] }
|
||||
self.audioPlayerCssFile = file.audioPlayerCssFile.map { files[$0] }
|
||||
self.german = .init(file: file.german)
|
||||
self.english = .init(file: file.english)
|
||||
}
|
||||
|
||||
var file: AudioPlayerSettingsFile {
|
||||
.init(playlistCoverImageSize: playlistCoverImageSize,
|
||||
smallCoverImageSize: smallCoverImageSize,
|
||||
audioPlayerJsFile: audioPlayerJsFile?.id,
|
||||
audioPlayerCssFile: audioPlayerCssFile?.id,
|
||||
german: german.file,
|
||||
english: english.file)
|
||||
}
|
||||
|
||||
func remove(_ file: FileResource) {
|
||||
if audioPlayerJsFile == file {
|
||||
audioPlayerJsFile = nil
|
||||
@ -62,17 +44,37 @@ final class AudioPlayerSettings: ObservableObject {
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Storage
|
||||
|
||||
extension AudioPlayerSettings {
|
||||
|
||||
static let `default`: AudioPlayerSettings = .init(
|
||||
playlistCoverImageSize: 280,
|
||||
smallCoverImageSize: 78,
|
||||
audioPlayerJsFile: nil,
|
||||
audioPlayerCssFile: nil,
|
||||
german: .init(playlistText: "Wiedergabeliste"),
|
||||
english: .init(playlistText: "Playlist"))
|
||||
}
|
||||
convenience init(context: LoadingContext, data: Data) {
|
||||
self.init(
|
||||
playlistCoverImageSize: data.playlistCoverImageSize,
|
||||
smallCoverImageSize: data.smallCoverImageSize,
|
||||
audioPlayerJsFile: data.audioPlayerJsFile.map(context.file),
|
||||
audioPlayerCssFile: data.audioPlayerCssFile.map(context.file),
|
||||
german: .init(data: data.german),
|
||||
english: .init(data: data.english))
|
||||
}
|
||||
|
||||
var data: Data {
|
||||
.init(playlistCoverImageSize: playlistCoverImageSize,
|
||||
smallCoverImageSize: smallCoverImageSize,
|
||||
audioPlayerJsFile: audioPlayerJsFile?.id,
|
||||
audioPlayerCssFile: audioPlayerCssFile?.id,
|
||||
german: german.data,
|
||||
english: english.data)
|
||||
}
|
||||
|
||||
struct Data: Codable {
|
||||
let playlistCoverImageSize: Int
|
||||
let smallCoverImageSize: Int
|
||||
let audioPlayerJsFile: String?
|
||||
let audioPlayerCssFile: String?
|
||||
let german: LocalizedAudioPlayerSettings.Data
|
||||
let english: LocalizedAudioPlayerSettings.Data
|
||||
}
|
||||
|
||||
extension AudioPlayerSettings: LocalizedItem {
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user