Update icons, hide page title
This commit is contained in:
@ -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")
|
||||
}
|
||||
|
@ -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] } ?? [])
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -77,7 +77,8 @@ private extension LocalizedPage {
|
||||
linkPreviewTitle: linkPreviewTitle,
|
||||
linkPreviewDescription: linkPreviewDescription,
|
||||
lastModifiedDate: lastModified,
|
||||
originalURL: originalUrl)
|
||||
originalURL: originalUrl,
|
||||
hideTitle: hideTitle ? true : nil)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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 {
|
||||
|
@ -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)
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user