/* Common code for components Handle cache invalidation based on keywords */ const setupCacheOnResourceReady = (component: any, { keywords = [] } = {}) => { const setup = () => { if (keywords) { if (component.caching === undefined) { component.caching = 0; } if (component.hasCachedDatas === undefined) { component.hasCachedDatas = false; } component.resourceCacheListener = (e: Event) => { const resource = e.detail.id || e.detail.resource["@id"]; if (keywords.some((keyword) => resource?.includes(keyword))) { component.caching++; component.hasCachedDatas = false; component.requestUpdate(); } }; component._subscriptions.add([ "resourceReady", component.resourceCacheListener, ]); component._subscribe(); } }; if (document.readyState !== "complete") { document.addEventListener("DOMContentLoaded", setup); } else { setup(); } }; export default setupCacheOnResourceReady;