Rework storage structs, link preview

This commit is contained in:
Christoph Hagen
2025-01-08 14:59:04 +01:00
parent b99c064d10
commit a7197b9628
75 changed files with 1365 additions and 1454 deletions

View File

@ -56,7 +56,7 @@ final class GenerationResults: ObservableObject {
var redirects: [String : String] = [:]
/// The cache of previously used GenerationResults
private var cache: [ItemId : PageGenerationResults] = [:]
private var cache: [LocalizedItemId : PageGenerationResults] = [:]
private(set) var general: PageGenerationResults!
@ -66,14 +66,14 @@ final class GenerationResults: ObservableObject {
// MARK: Life cycle
init() {
let id = ItemId(language: .english, itemType: .general)
let id = LocalizedItemId(language: .english, itemType: .general)
let general = PageGenerationResults(itemId: id, delegate: self)
self.general = general
cache[id] = general
self.resultCount = 1
}
func makeResults(_ itemId: ItemId) -> PageGenerationResults {
func makeResults(_ itemId: LocalizedItemId) -> PageGenerationResults {
guard let result = cache[itemId] else {
let result = PageGenerationResults(itemId: itemId, delegate: self)
cache[itemId] = result
@ -83,18 +83,18 @@ final class GenerationResults: ObservableObject {
return result
}
func makeResults(for type: ItemType, in language: ContentLanguage) -> PageGenerationResults {
let itemId = ItemId(language: language, itemType: type)
func makeResults(for type: ItemReference, in language: ContentLanguage) -> PageGenerationResults {
let itemId = LocalizedItemId(language: language, itemType: type)
return makeResults(itemId)
}
func makeResults(for page: Page, in language: ContentLanguage) -> PageGenerationResults {
let itemId = ItemId(language: language, itemType: .page(page))
let itemId = LocalizedItemId(language: language, itemType: .page(page))
return makeResults(itemId)
}
func makeResults(for tag: Tag, in language: ContentLanguage) -> PageGenerationResults {
let itemId = ItemId(language: language, itemType: .tagPage(tag))
let itemId = LocalizedItemId(language: language, itemType: .tagPage(tag))
return makeResults(itemId)
}
@ -209,9 +209,9 @@ final class GenerationResults: ObservableObject {
}
}
private extension Dictionary where Value == Set<ItemId> {
private extension Dictionary where Value == Set<LocalizedItemId> {
mutating func remove<S>(keys: S, of item: ItemId) where S: Sequence, S.Element == Key {
mutating func remove<S>(keys: S, of item: LocalizedItemId) where S: Sequence, S.Element == Key {
for key in keys {
guard var value = self[key] else { continue }
value.remove(item)