ChWebsiteApp/CHDataManagement/Model/Content+Generate.swift
2024-12-02 13:08:52 +01:00

36 lines
1.3 KiB
Swift

import Foundation
extension Content {
func generateFeed(for language: ContentLanguage, bookmarkKey: String) {
let posts = posts.map { $0.feedEntry(for: language) }
let data = websiteData.localized(in: language)
let navigationItems: [FeedNavigationLink] = websiteData.navigationTags.map {
let localized = $0.localized(in: language)
return .init(text: localized.name, url: localized.urlComponent)
}
DispatchQueue.global(qos: .userInitiated).async {
let feed = Feed(
language: language,
title: data.title,
description: data.description,
iconDescription: data.iconDescription,
navigationItems: navigationItems,
posts: posts)
let fileContent = feed.content
Content.accessFolderFromBookmark(key: bookmarkKey) { folder in
let outputFile = folder.appendingPathComponent("feed.html", isDirectory: false)
do {
try fileContent
.data(using: .utf8)!
.write(to: outputFile)
} catch {
print("Failed to save: \(error)")
}
}
}
}
}