let _cache = {}; export const INLINE_ONEBOX_LOADING_CSS_CLASS = "<%= CookedPostProcessor::INLINE_ONEBOX_LOADING_CSS_CLASS %>"; export const INLINE_ONEBOX_CSS_CLASS = "<%= CookedPostProcessor::INLINE_ONEBOX_CSS_CLASS %>"; export function applyInlineOneboxes(inline, ajax) { Object.keys(inline).forEach(url => { // cache a blank locally, so we never trigger a lookup _cache[url] = {}; }); return ajax("/inline-onebox", { data: { urls: Object.keys(inline) } }).then(result => { result["inline-oneboxes"].forEach(onebox => { if (onebox.title) { _cache[onebox.url] = onebox; let links = inline[onebox.url] || []; links.forEach(link => { $(link).text(onebox.title) .addClass(INLINE_ONEBOX_CSS_CLASS) .removeClass(INLINE_ONEBOX_LOADING_CSS_CLASS); }); } }); }); } export function cachedInlineOnebox(url) { return _cache[url]; }