Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

59 lines
1.4 KiB
JavaScript
Raw Normal View History

const _cache = {};
export async function applyInlineOneboxes(inline, ajax, opts) {
opts = opts || {};
const urls = Object.keys(inline).filter((url) => !_cache[url]);
urls.forEach((url) => {
// cache a blank locally, so we never trigger a lookup
_cache[url] = {};
});
if (urls.length === 0) {
return;
}
const batchSize = 10;
for (let i = 0; i < urls.length; i += batchSize) {
const batch = urls.slice(i, i + batchSize);
try {
const result = await ajax("/inline-onebox", {
data: {
urls: batch,
category_id: opts.categoryId,
topic_id: opts.topicId,
},
});
result["inline-oneboxes"].forEach((onebox) => {
if (onebox.title) {
_cache[onebox.url] = onebox;
let links = inline[onebox.url] || [];
links.forEach((link) => {
link.innerText = onebox.title;
link.classList.add("inline-onebox");
link.classList.remove("inline-onebox-loading");
});
}
});
} catch (err) {
// eslint-disable-next-line no-console
console.error("Inline onebox request failed", err, batch);
}
}
}
export function cachedInlineOnebox(url) {
return _cache[url];
}
export function applyCachedInlineOnebox(url, onebox) {
return (_cache[url] = onebox);
}
export function deleteCachedInlineOnebox(url) {
return delete _cache[url];
}