Reduce amount of server requests to fetch remote avatars

This commit is contained in:
the-djmaze 2022-12-01 22:47:57 +01:00
parent c56cc7be73
commit 4d0ee8736b

View file

@ -37,17 +37,20 @@
runQueue = (() => { runQueue = (() => {
let item = queue.shift(); let item = queue.shift();
while (item) { while (item) {
let url = getAvatar(item[0]); let url = getAvatar(item[0]),
uid = getAvatarUid(item[0]);
if (url) { if (url) {
item[1](url); item[1](url);
item = queue.shift(); item = queue.shift();
} else { } else if (!avatars.has(uid)) {
let from = item[0].from[0]; let from = item[0].from[0];
rl.pluginRemoteRequest((iError, data) => { rl.pluginRemoteRequest((iError, data) => {
if (!iError && data?.Result.type) { if (!iError && data?.Result.type) {
url = `data:${data.Result.type};base64,${data.Result.data}`; url = `data:${data.Result.type};base64,${data.Result.data}`;
avatars.set(getAvatarUid(item[0]), url); avatars.set(uid, url);
item[1](url); item[1](url);
} else {
avatars.set(uid, '');
} }
runQueue(); runQueue();
}, 'Avatar', { }, 'Avatar', {
@ -55,6 +58,9 @@
email: from.email email: from.email
}); });
break; break;
} else {
runQueue();
break;
} }
} }
}).debounce(1000); }).debounce(1000);