Add more file properties, organize storage, add video block

This commit is contained in:
Christoph Hagen
2025-01-06 15:31:19 +01:00
parent 96c0a75c2f
commit 6cf310d849
25 changed files with 712 additions and 219 deletions

View File

@ -14,6 +14,24 @@ final class FileResource: Item {
@Published
var english: String
@Published
var version: String?
@Published
var sourceUrl: String?
@Published
var generatedImageVersions: Set<String>
@Published
var customOutputPath: String?
@Published
var addedDate: Date
@Published
var modifiedDate: Date
/// The dimensions of the image
@Published
var imageDimensions: CGSize? = nil
@ -22,11 +40,41 @@ final class FileResource: Item {
@Published
var fileSize: Int? = nil
init(content: Content, id: String, isExternallyStored: Bool, en: String, de: String) {
init(content: Content,
id: String,
isExternallyStored: Bool,
english: String?,
german: String?,
version: String? = nil,
sourceUrl: String? = nil,
generatedImageVersions: Set<String> = [],
customOutputPath: String? = nil,
addedDate: Date = .now,
modifiedDate: Date = .now) {
self.type = FileType(fileExtension: id.fileExtension)
self.english = en
self.german = de
self.isExternallyStored = isExternallyStored
self.german = german ?? ""
self.english = english ?? ""
self.version = version
self.sourceUrl = sourceUrl
self.generatedImageVersions = generatedImageVersions
self.customOutputPath = customOutputPath
self.addedDate = addedDate
self.modifiedDate = modifiedDate
super.init(content: content, id: id)
}
init(content: Content, id: String, file: FileResourceFile, isExternalFile: Bool) {
self.type = FileType(fileExtension: id.fileExtension)
self.isExternallyStored = isExternalFile
self.german = file.germanDescription ?? ""
self.english = file.englishDescription ?? ""
self.version = file.version
self.sourceUrl = file.sourceUrl
self.generatedImageVersions = Set(file.generatedImages ?? [])
self.customOutputPath = file.customOutputPath
self.addedDate = file.addedDate
self.modifiedDate = file.modifiedDate
super.init(content: content, id: id)
}
@ -38,6 +86,12 @@ final class FileResource: Item {
self.english = "A test image included in the bundle"
self.german = "Ein Testbild aus dem Bundle"
self.isExternallyStored = true
self.version = nil
self.sourceUrl = nil
self.generatedImageVersions = []
self.customOutputPath = nil
self.addedDate = Date.now
self.modifiedDate = Date.now
super.init(content: .mock, id: resourceImage) // TODO: Add images to mock
}
@ -143,8 +197,10 @@ final class FileResource: Item {
func removeGeneratedImages() {
guard type.isImage else { return }
content.imageGenerator.removeVersions(of: id)
content.storage.deleteInOutputFolder(outputImageFolder)
guard content.storage.deleteInOutputFolder(outputImageFolder) else {
return
}
self.generatedImageVersions = []
}
private var failureImage: Image {
@ -236,6 +292,21 @@ final class FileResource: Item {
}
}
extension FileResource {
var fileInfo: FileResourceFile {
.init(
englishDescription: english.nonEmpty,
germanDescription: german.nonEmpty,
generatedImages: generatedImageVersions.sorted().nonEmpty,
customOutputPath: customOutputPath,
version: version,
sourceUrl: sourceUrl,
addedDate: addedDate,
modifiedDate: modifiedDate)
}
}
extension FileResource: LocalizedItem {
}