Add single file audio player, introduce blocks
This commit is contained in:
49
CHDataManagement/Model/Settings/AudioPlayerSettings.swift
Normal file
49
CHDataManagement/Model/Settings/AudioPlayerSettings.swift
Normal file
@ -0,0 +1,49 @@
|
||||
import Foundation
|
||||
|
||||
final class AudioPlayerSettings: ObservableObject {
|
||||
|
||||
@Published
|
||||
var playlistCoverImageSize: Int
|
||||
|
||||
@Published
|
||||
var smallCoverImageSize: Int
|
||||
|
||||
@Published
|
||||
var audioPlayerJsFile: FileResource?
|
||||
|
||||
@Published
|
||||
var audioPlayerCssFile: FileResource?
|
||||
|
||||
init(playlistCoverImageSize: Int,
|
||||
smallCoverImageSize: Int,
|
||||
audioPlayerJsFile: FileResource?,
|
||||
audioPlayerCssFile: FileResource?) {
|
||||
self.playlistCoverImageSize = playlistCoverImageSize
|
||||
self.smallCoverImageSize = smallCoverImageSize
|
||||
self.audioPlayerJsFile = audioPlayerJsFile
|
||||
self.audioPlayerCssFile = audioPlayerCssFile
|
||||
}
|
||||
|
||||
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] }
|
||||
}
|
||||
|
||||
var file: AudioPlayerSettingsFile {
|
||||
.init(playlistCoverImageSize: playlistCoverImageSize,
|
||||
smallCoverImageSize: smallCoverImageSize,
|
||||
audioPlayerJsFile: audioPlayerJsFile?.id,
|
||||
audioPlayerCssFile: audioPlayerCssFile?.id)
|
||||
}
|
||||
}
|
||||
|
||||
extension AudioPlayerSettings {
|
||||
|
||||
static let `default`: AudioPlayerSettings = .init(
|
||||
playlistCoverImageSize: 280,
|
||||
smallCoverImageSize: 78,
|
||||
audioPlayerJsFile: nil,
|
||||
audioPlayerCssFile: nil)
|
||||
}
|
@ -17,12 +17,6 @@ final class PageSettings: ObservableObject {
|
||||
@Published
|
||||
var codeHighlightingJsFile: FileResource?
|
||||
|
||||
@Published
|
||||
var audioPlayerJsFile: FileResource?
|
||||
|
||||
@Published
|
||||
var audioPlayerCssFile: FileResource?
|
||||
|
||||
@Published
|
||||
var modelViewerJsFile: FileResource?
|
||||
|
||||
@ -38,8 +32,6 @@ final class PageSettings: ObservableObject {
|
||||
self.pageLinkImageSize = file.pageLinkImageSize
|
||||
self.defaultCssFile = file.defaultCssFile.map { files[$0] }
|
||||
self.codeHighlightingJsFile = file.codeHighlightingJsFile.map { files[$0] }
|
||||
self.audioPlayerJsFile = file.audioPlayerJsFile.map { files[$0] }
|
||||
self.audioPlayerCssFile = file.audioPlayerCssFile.map { files[$0] }
|
||||
self.modelViewerJsFile = file.modelViewerJsFile.map { files[$0] }
|
||||
self.imageCompareCssFile = file.imageCompareCssFile.map { files[$0] }
|
||||
self.imageCompareJsFile = file.imageCompareJsFile.map { files[$0] }
|
||||
@ -51,8 +43,6 @@ final class PageSettings: ObservableObject {
|
||||
pageLinkImageSize: pageLinkImageSize,
|
||||
defaultCssFile: defaultCssFile?.id,
|
||||
codeHighlightingJsFile: codeHighlightingJsFile?.id,
|
||||
audioPlayerJsFile: audioPlayerJsFile?.id,
|
||||
audioPlayerCssFile: audioPlayerCssFile?.id,
|
||||
modelViewerJsFile: modelViewerJsFile?.id,
|
||||
imageCompareJsFile: imageCompareJsFile?.id,
|
||||
imageCompareCssFile: imageCompareCssFile?.id)
|
||||
|
@ -15,17 +15,28 @@ final class Settings: ObservableObject {
|
||||
@Published
|
||||
var pages: PageSettings
|
||||
|
||||
@Published
|
||||
var audioPlayer: AudioPlayerSettings
|
||||
|
||||
@Published
|
||||
var german: LocalizedPostSettings
|
||||
|
||||
@Published
|
||||
var english: LocalizedPostSettings
|
||||
|
||||
init(paths: PathSettings, navigation: NavigationSettings, posts: PostSettings, pages: PageSettings, german: LocalizedPostSettings, english: LocalizedPostSettings) {
|
||||
|
||||
init(paths: PathSettings,
|
||||
navigation: NavigationSettings,
|
||||
posts: PostSettings,
|
||||
pages: PageSettings,
|
||||
audioPlayer: AudioPlayerSettings,
|
||||
german: LocalizedPostSettings,
|
||||
english: LocalizedPostSettings) {
|
||||
self.paths = paths
|
||||
self.navigation = navigation
|
||||
self.posts = posts
|
||||
self.pages = pages
|
||||
self.audioPlayer = audioPlayer
|
||||
self.german = german
|
||||
self.english = english
|
||||
}
|
||||
@ -43,6 +54,7 @@ final class Settings: ObservableObject {
|
||||
self.posts = PostSettings(file: file.posts, files: files)
|
||||
self.pages = PageSettings(file: file.pages, files: files)
|
||||
self.paths = PathSettings(file: file.paths)
|
||||
self.audioPlayer = .init(file: file.audioPlayer, files: files)
|
||||
|
||||
self.german = .init(file: file.german)
|
||||
self.english = .init(file: file.english)
|
||||
@ -54,6 +66,7 @@ final class Settings: ObservableObject {
|
||||
navigation: navigation.file,
|
||||
posts: posts.file,
|
||||
pages: pages.file,
|
||||
audioPlayer: audioPlayer.file,
|
||||
german: german.file,
|
||||
english: english.file)
|
||||
}
|
||||
@ -66,6 +79,7 @@ extension Settings {
|
||||
navigation: .default,
|
||||
posts: .default,
|
||||
pages: .default,
|
||||
audioPlayer: .default,
|
||||
german: .german,
|
||||
english: .english)
|
||||
}
|
||||
|
Reference in New Issue
Block a user