Improve header handling for post lists
This commit is contained in:
@ -11,15 +11,16 @@ final class FeedPageGenerator {
|
||||
self.results = results
|
||||
}
|
||||
|
||||
private func includeSwiper(in headers: inout Set<HeaderElement>) {
|
||||
if let swiperCss = content.settings.posts.swiperCssFile {
|
||||
headers.insert(.css(file: swiperCss, order: HeaderElement.swiperCssFileOrder))
|
||||
results.require(file: swiperCss)
|
||||
}
|
||||
if let swiperJs = content.settings.posts.swiperJsFile {
|
||||
headers.insert(.js(file: swiperJs, defer: true))
|
||||
results.require(file: swiperJs)
|
||||
private func makeHeaders(requiredItems: Set<KnownHeaderElement>, results: PageGenerationResults) -> Set<HeaderElement> {
|
||||
var result = content.postPageHeaders
|
||||
for item in requiredItems {
|
||||
guard let header = item.header(content: content) else {
|
||||
results.warning("Header \(item) not configured in settings")
|
||||
continue
|
||||
}
|
||||
result.insert(header)
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
func generatePage(language: ContentLanguage,
|
||||
@ -33,13 +34,16 @@ final class FeedPageGenerator {
|
||||
totalPages: Int,
|
||||
languageButtonUrl: String,
|
||||
linkPrefix: String) -> String {
|
||||
var headers = content.postPageHeaders
|
||||
var footer = ""
|
||||
var requiredHeaders = Set<KnownHeaderElement>()
|
||||
if posts.contains(where: { $0.requiresSwiper }) {
|
||||
// Sort swiper style sheet before default style sheet
|
||||
includeSwiper(in: &headers)
|
||||
requiredHeaders.formUnion([.swiperJs, .swiperCss])
|
||||
footer = swiperInitScript(posts: posts)
|
||||
}
|
||||
let headers = makeHeaders(requiredItems: requiredHeaders, results: results)
|
||||
results.require(files: headers.compactMap { $0.requiredFile })
|
||||
results.require(headers: requiredHeaders)
|
||||
|
||||
let iconUrl = content.settings.navigation.localized(in: language).rootUrl
|
||||
let languageButton = NavigationBar.Link(
|
||||
|
Reference in New Issue
Block a user