Update icons, hide page title

This commit is contained in:
Christoph Hagen
2024-12-26 15:01:01 +01:00
parent 1e4682dad1
commit 922ba4ebe7
23 changed files with 290 additions and 53 deletions

View File

@ -15,6 +15,15 @@ extension Content {
}
}
func endCurrentGeneration() {
guard isGeneratingWebsite, shouldGenerateWebsite else {
return
}
DispatchQueue.main.async {
self.set(shouldGenerate: false)
}
}
func generatePostFeedPages() {
performGenerationIfIdle {
self.generatePostFeedPagesInternal()
@ -36,6 +45,7 @@ extension Content {
let count = results.requiredFiles.count
var completed = 0
for file in results.requiredFiles {
guard shouldGenerateWebsite else { return }
defer {
completed += 1
status("Copying required files: \(completed) / \(count)")
@ -59,6 +69,7 @@ extension Content {
let count = images.count
var completed = 0
for image in images {
guard shouldGenerateWebsite else { return }
defer {
completed += 1
status("Generating required images: \(completed) / \(count)")
@ -156,10 +167,12 @@ extension Content {
return
}
self.set(isGenerating: true)
self.set(shouldGenerate: true)
DispatchQueue.global(qos: .userInitiated).async {
operation()
DispatchQueue.main.async {
self.set(isGenerating: false)
self.set(shouldGenerate: false)
}
}
}
@ -177,6 +190,7 @@ extension Content {
private func generatePagesInternal() {
let count = pages.count
for index in pages.indices {
guard shouldGenerateWebsite else { return }
let page = pages[index]
status("Generating pages: \(index) / \(count)")
guard !page.isExternalUrl else {
@ -197,6 +211,7 @@ extension Content {
private func generatePostFeedPagesInternal() {
status("Generating post feed")
for language in ContentLanguage.allCases {
guard shouldGenerateWebsite else { return }
let results = results.makeResults(for: .feed, in: language)
let generator = PostListPageGenerator(
language: language,
@ -217,6 +232,7 @@ extension Content {
private func generateTagPagesInternal() {
let count = tags.count
for index in tags.indices {
guard shouldGenerateWebsite else { return }
let tag = tags[index]
status("Generating tag pages: \(index) / \(count)")
generatePagesInternal(for: tag)
@ -253,6 +269,7 @@ extension Content {
private func generateTagOverviewPagesInternal() {
status("Generating tag overview page")
for language in ContentLanguage.allCases {
guard shouldGenerateWebsite else { return }
let results = results.makeResults(for: .tagOverview, in: language)
#warning("Create layout for tag overview page")
}

View File

@ -34,7 +34,8 @@ extension Content {
originalUrl: page.originalURL,
linkPreviewImage: page.linkPreviewImage.map { images[$0] },
linkPreviewTitle: page.linkPreviewTitle,
linkPreviewDescription: page.linkPreviewDescription)
linkPreviewDescription: page.linkPreviewDescription,
hideTitle: page.hideTitle ?? false)
}
func loadFromDisk() throws {
@ -204,8 +205,8 @@ extension Content {
endDate: page.endDate,
german: convert(page.german, images: files),
english: convert(page.english, images: files),
tags: page.tags.map { tags[$0]! },
requiredFiles: page.requiredFiles?.map { files[$0]! } ?? [])
tags: page.tags.compactMap { tags[$0] },
requiredFiles: page.requiredFiles?.compactMap { files[$0] } ?? [])
}
}

View File

@ -77,7 +77,8 @@ private extension LocalizedPage {
linkPreviewTitle: linkPreviewTitle,
linkPreviewDescription: linkPreviewDescription,
lastModifiedDate: lastModified,
originalURL: originalUrl)
originalURL: originalUrl,
hideTitle: hideTitle ? true : nil)
}
}

View File

@ -34,6 +34,8 @@ final class Content: ObservableObject {
@Published
private(set) var isGeneratingWebsite = false
private(set) var shouldGenerateWebsite = false
init(settings: Settings,
posts: [Post],
pages: [Page],
@ -84,6 +86,10 @@ final class Content: ObservableObject {
self.isGeneratingWebsite = isGenerating
}
func set(shouldGenerate: Bool) {
self.shouldGenerateWebsite = shouldGenerate
}
func add(_ file: FileResource) {
// TODO: Insert at correct index?
files.insert(file, at: 0)

View File

@ -95,7 +95,7 @@ final class FileResource: Item {
return content.settings.paths.videosOutputFolderPath
}
if type.isAudio {
return content.settings.paths.audioOutputFolderPath
}
if type.isAsset {
return content.settings.paths.assetsOutputFolderPath

View File

@ -43,6 +43,9 @@ final class LocalizedPage: ObservableObject {
@Published
var linkPreviewDescription: String?
@Published
var hideTitle: Bool
init(content: Content,
urlString: String,
title: String,
@ -50,7 +53,8 @@ final class LocalizedPage: ObservableObject {
originalUrl: String? = nil,
linkPreviewImage: FileResource? = nil,
linkPreviewTitle: String? = nil,
linkPreviewDescription: String? = nil) {
linkPreviewDescription: String? = nil,
hideTitle: Bool = false) {
self.content = content
self.urlString = urlString
self.title = title
@ -59,6 +63,7 @@ final class LocalizedPage: ObservableObject {
self.linkPreviewImage = linkPreviewImage
self.linkPreviewTitle = linkPreviewTitle
self.linkPreviewDescription = linkPreviewDescription
self.hideTitle = hideTitle
}
func isValid(urlComponent: String) -> Bool {

View File

@ -17,6 +17,9 @@ final class PathSettings: ObservableObject {
@Published
var videosOutputFolderPath: String
@Published
var audioOutputFolderPath: String
@Published
var tagsOutputFolderPath: String
@ -27,6 +30,7 @@ final class PathSettings: ObservableObject {
self.filesOutputFolderPath = file.filesOutputFolderPath
self.videosOutputFolderPath = file.videosOutputFolderPath
self.tagsOutputFolderPath = file.tagsOutputFolderPath
self.audioOutputFolderPath = file.audioOutputFolderPath
}
var file: PathSettingsFile {
@ -35,6 +39,7 @@ final class PathSettings: ObservableObject {
imagesOutputFolderPath: imagesOutputFolderPath,
filesOutputFolderPath: filesOutputFolderPath,
videosOutputFolderPath: videosOutputFolderPath,
tagsOutputFolderPath: tagsOutputFolderPath)
tagsOutputFolderPath: tagsOutputFolderPath,
audioOutputFolderPath: audioOutputFolderPath)
}
}