79 lines
2.3 KiB
Swift
79 lines
2.3 KiB
Swift
import Foundation
|
|
|
|
final class AudioPlayerSettings: ObservableObject {
|
|
|
|
@Published
|
|
var playlistCoverImageSize: Int
|
|
|
|
@Published
|
|
var smallCoverImageSize: Int
|
|
|
|
@Published
|
|
var audioPlayerJsFile: FileResource?
|
|
|
|
@Published
|
|
var audioPlayerCssFile: FileResource?
|
|
|
|
@Published
|
|
var german: LocalizedAudioPlayerSettings
|
|
|
|
@Published
|
|
var english: LocalizedAudioPlayerSettings
|
|
|
|
init(playlistCoverImageSize: Int,
|
|
smallCoverImageSize: Int,
|
|
audioPlayerJsFile: FileResource?,
|
|
audioPlayerCssFile: FileResource?,
|
|
german: LocalizedAudioPlayerSettings,
|
|
english: LocalizedAudioPlayerSettings) {
|
|
self.playlistCoverImageSize = playlistCoverImageSize
|
|
self.smallCoverImageSize = smallCoverImageSize
|
|
self.audioPlayerJsFile = audioPlayerJsFile
|
|
self.audioPlayerCssFile = audioPlayerCssFile
|
|
self.german = german
|
|
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
|
|
}
|
|
if audioPlayerCssFile == file {
|
|
audioPlayerCssFile = nil
|
|
}
|
|
}
|
|
}
|
|
|
|
extension AudioPlayerSettings {
|
|
|
|
static let `default`: AudioPlayerSettings = .init(
|
|
playlistCoverImageSize: 280,
|
|
smallCoverImageSize: 78,
|
|
audioPlayerJsFile: nil,
|
|
audioPlayerCssFile: nil,
|
|
german: .init(playlistText: "Wiedergabeliste"),
|
|
english: .init(playlistText: "Playlist"))
|
|
}
|
|
|
|
extension AudioPlayerSettings: LocalizedItem {
|
|
|
|
}
|