Refactor tag file, remove subtitle
This commit is contained in:
@ -7,10 +7,9 @@ extension Content {
|
||||
content: self,
|
||||
urlComponent: tag.urlComponent,
|
||||
name: tag.name,
|
||||
subtitle: tag.subtitle,
|
||||
description: tag.description,
|
||||
thumbnail: tag.thumbnail.map { images[$0] },
|
||||
linkPreviewTitle: tag.linkPreviewTitle,
|
||||
linkPreviewDescription: tag.linkPreviewDescription,
|
||||
linkPreviewImage: tag.linkPreviewImage.map { images[$0] },
|
||||
originalUrl: tag.originalURL)
|
||||
}
|
||||
|
||||
|
@ -11,7 +11,7 @@ extension Content {
|
||||
var failedSaves = 0
|
||||
failedSaves += pages.count { !storage.save(pageMetadata: $0.pageFile, for: $0.id) }
|
||||
failedSaves += posts.count { !storage.save(post: $0.postFile, for: $0.id) }
|
||||
failedSaves += tags.count { !storage.save(tagMetadata: $0.tagFile, for: $0.id) }
|
||||
failedSaves += tags.count { !storage.save(tagMetadata: $0.file, for: $0.id) }
|
||||
failedSaves.increment(!storage.save(settings: settings.file))
|
||||
|
||||
let fileDescriptions: [FileDescriptions] = files.sorted().compactMap { file in
|
||||
@ -111,27 +111,3 @@ private extension LocalizedPost {
|
||||
linkPreviewDescription: linkPreviewDescription)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private extension Tag {
|
||||
|
||||
var tagFile: TagFile {
|
||||
.init(id: id,
|
||||
isVisible: isVisible,
|
||||
german: german.tagFile,
|
||||
english: english.tagFile)
|
||||
}
|
||||
}
|
||||
|
||||
private extension LocalizedTag {
|
||||
|
||||
var tagFile: LocalizedTagFile {
|
||||
.init(urlComponent: urlComponent,
|
||||
name: name,
|
||||
subtitle: subtitle,
|
||||
description: description,
|
||||
linkPreviewTitle: linkPreviewTitle,
|
||||
thumbnail: linkPreviewImage?.id,
|
||||
originalURL: originalUrl)
|
||||
}
|
||||
}
|
||||
|
@ -63,34 +63,43 @@ final class FileResource: Item {
|
||||
return imageDimensions.width / imageDimensions.height
|
||||
}
|
||||
|
||||
private func update(imageDimensions size: CGSize?) {
|
||||
guard let imageDimensions, let size else {
|
||||
// First computation
|
||||
DispatchQueue.main.async {
|
||||
self.imageDimensions = size
|
||||
}
|
||||
return
|
||||
}
|
||||
guard imageDimensions != size else {
|
||||
return
|
||||
}
|
||||
// Image must have changed, so force regeneration
|
||||
DispatchQueue.main.async {
|
||||
self.imageDimensions = size
|
||||
self.didChange()
|
||||
self.removeGeneratedImages()
|
||||
}
|
||||
}
|
||||
|
||||
var imageToDisplay: Image {
|
||||
guard let imageData = content.storage.fileData(for: id) else {
|
||||
print("Failed to load data for image \(id)")
|
||||
return failureImage
|
||||
}
|
||||
if fileSize == nil {
|
||||
DispatchQueue.main.async {
|
||||
self.fileSize = imageData.count
|
||||
}
|
||||
}
|
||||
update(fileSize: imageData.count)
|
||||
guard let loadedImage = NSImage(data: imageData) else {
|
||||
print("Failed to create image \(id)")
|
||||
return failureImage
|
||||
}
|
||||
if loadedImage.size != imageDimensions {
|
||||
DispatchQueue.main.async {
|
||||
self.imageDimensions = loadedImage.size
|
||||
}
|
||||
}
|
||||
update(imageDimensions: loadedImage.size)
|
||||
|
||||
return .init(nsImage: loadedImage)
|
||||
}
|
||||
|
||||
func determineImageDimensions() {
|
||||
let size = getImageDimensions()
|
||||
|
||||
DispatchQueue.main.async {
|
||||
self.imageDimensions = size
|
||||
}
|
||||
self.update(imageDimensions: size)
|
||||
}
|
||||
|
||||
private func getImageDimensions() -> CGSize? {
|
||||
@ -106,16 +115,34 @@ final class FileResource: Item {
|
||||
return loadedImage.size
|
||||
}
|
||||
|
||||
func determineFileSize() {
|
||||
DispatchQueue.global(qos: .userInitiated).async {
|
||||
let size = self.content.storage.size(of: self.id)
|
||||
func update(fileSize size: Int?) {
|
||||
guard let fileSize, let size else {
|
||||
// First computation
|
||||
DispatchQueue.main.async {
|
||||
self.fileSize = size
|
||||
}
|
||||
return
|
||||
}
|
||||
guard fileSize != size else {
|
||||
return
|
||||
}
|
||||
// File must have changed
|
||||
DispatchQueue.main.async {
|
||||
self.fileSize = size
|
||||
self.didChange()
|
||||
self.removeGeneratedImages()
|
||||
}
|
||||
}
|
||||
|
||||
func determineFileSize() {
|
||||
DispatchQueue.global(qos: .userInitiated).async {
|
||||
let size = self.content.storage.size(of: self.id)
|
||||
self.update(fileSize: size)
|
||||
}
|
||||
}
|
||||
|
||||
func removeGeneratedImages() {
|
||||
guard type.isImage else { return }
|
||||
content.imageGenerator.removeVersions(of: id)
|
||||
content.storage.deleteInOutputFolder(path: outputImageFolder)
|
||||
}
|
||||
|
@ -12,36 +12,31 @@ final class LocalizedTag: ObservableObject {
|
||||
var name: String
|
||||
|
||||
@Published
|
||||
var subtitle: String?
|
||||
var linkPreviewTitle: String?
|
||||
|
||||
@Published
|
||||
var description: String?
|
||||
var linkPreviewDescription: String?
|
||||
|
||||
/// The image id of the thumbnail
|
||||
@Published
|
||||
var linkPreviewImage: FileResource?
|
||||
|
||||
@Published
|
||||
var linkPreviewTitle: String?
|
||||
|
||||
/// The original url in the previous site layout
|
||||
let originalUrl: String?
|
||||
|
||||
init(content: Content,
|
||||
urlComponent: String,
|
||||
name: String,
|
||||
subtitle: String? = nil,
|
||||
description: String? = nil,
|
||||
thumbnail: FileResource? = nil,
|
||||
linkPreviewTitle: String? = nil,
|
||||
linkPreviewDescription: String? = nil,
|
||||
linkPreviewImage: FileResource? = nil,
|
||||
originalUrl: String? = nil) {
|
||||
self.content = content
|
||||
self.urlComponent = urlComponent
|
||||
self.name = name
|
||||
self.subtitle = subtitle
|
||||
self.description = description
|
||||
self.linkPreviewImage = thumbnail
|
||||
self.linkPreviewTitle = linkPreviewTitle
|
||||
self.linkPreviewDescription = linkPreviewDescription
|
||||
self.linkPreviewImage = linkPreviewImage
|
||||
self.originalUrl = originalUrl
|
||||
}
|
||||
|
||||
@ -58,7 +53,16 @@ final class LocalizedTag: ObservableObject {
|
||||
|
||||
extension LocalizedTag: LinkPreviewItem {
|
||||
|
||||
var linkPreviewDescription: String? {
|
||||
description
|
||||
}
|
||||
|
||||
extension LocalizedTag {
|
||||
|
||||
var tagFile: LocalizedTagFile {
|
||||
.init(urlComponent: urlComponent,
|
||||
name: name,
|
||||
linkPreviewTitle: linkPreviewTitle,
|
||||
linkPreviewDescription: linkPreviewDescription,
|
||||
linkPreviewImage: linkPreviewImage?.id,
|
||||
originalURL: originalUrl)
|
||||
}
|
||||
}
|
||||
|
@ -71,3 +71,13 @@ final class Tag: Item {
|
||||
extension Tag: LocalizedItem {
|
||||
|
||||
}
|
||||
|
||||
extension Tag {
|
||||
|
||||
var file: TagFile {
|
||||
.init(id: id,
|
||||
isVisible: isVisible,
|
||||
german: german.tagFile,
|
||||
english: english.tagFile)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user