Add more file properties, organize storage, add video block
This commit is contained in:
@ -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 {
|
||||
|
||||
}
|
||||
|
Reference in New Issue
Block a user