Fix: fix #2254; an image carousel with a different key would not show up due to caching

This commit is contained in:
Pieter Vander Vennet 2024-11-14 18:25:27 +01:00
parent 90a2fd4713
commit c0b11a81e9

View file

@ -68,7 +68,7 @@ export default class AllImageProviders {
private static readonly _cachedImageStores: Record<string, Store<ProvidedImage[]>> = {}
/**
* Tries to extract all image data for this image. Cachedon tags?.data?.id
* Tries to extract all image data for this image. Cached on tags?.data?.id
*/
public static LoadImagesFor(
tags: Store<Record<string, string>>,
@ -78,8 +78,9 @@ export default class AllImageProviders {
return undefined
}
const id = tags?.data?.id
if (this._cachedImageStores[id]) {
return this._cachedImageStores[id]
const cachekey = id + (tagKey?.join(";") ?? "")
if (this._cachedImageStores[cachekey]) {
return this._cachedImageStores[cachekey]
}
const source = new UIEventSource([])
@ -90,6 +91,7 @@ export default class AllImageProviders {
However, we override them if a custom image tag is set, e.g. 'image:menu'
*/
const prefixes = tagKey ?? imageProvider.defaultKeyPrefixes
console.log("Prefixes are", tagKey, prefixes)
const singleSource = tags.bindD((tags) => imageProvider.getRelevantUrls(tags, prefixes))
allSources.push(singleSource)
singleSource.addCallbackAndRunD((_) => {
@ -98,7 +100,7 @@ export default class AllImageProviders {
source.set(dedup)
})
}
this._cachedImageStores[id] = source
this._cachedImageStores[cachekey] = source
return source
}