SHA256
Аватары: убрать инициалы при наличии txId и усилить загрузку старых файлов
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
import { state } from '../state.js';
|
||||
import { validateArweaveTxId } from '../services/arweave-file-service.js';
|
||||
import { buildArweaveDataUrl, validateArweaveTxId } from '../services/arweave-file-service.js';
|
||||
import { getCachedAvatarObjectUrl } from '../services/arweave-avatar-cache-service.js';
|
||||
|
||||
function normalizeLogin(value) {
|
||||
@@ -52,6 +52,7 @@ export function renderUserAvatar({
|
||||
if (!validateArweaveTxId(txId)) {
|
||||
return wrap;
|
||||
}
|
||||
fallback.hidden = true;
|
||||
|
||||
const img = document.createElement('img');
|
||||
img.alt = 'Аватар';
|
||||
@@ -63,25 +64,55 @@ export function renderUserAvatar({
|
||||
const gateway = state?.entrySettings?.arweaveServer;
|
||||
void getCachedAvatarObjectUrl({ gateway, txId })
|
||||
.then((objectUrl) => {
|
||||
img.onload = () => {
|
||||
fallback.hidden = true;
|
||||
img.hidden = false;
|
||||
const directUrl = buildArweaveDataUrl({ gateway, txId });
|
||||
let triedDirectUrl = false;
|
||||
let objectUrlReleased = false;
|
||||
const releaseObjectUrl = () => {
|
||||
if (objectUrlReleased) return;
|
||||
objectUrlReleased = true;
|
||||
if (objectUrl.startsWith('blob:')) {
|
||||
URL.revokeObjectURL(objectUrl);
|
||||
}
|
||||
};
|
||||
img.onload = () => {
|
||||
fallback.hidden = true;
|
||||
img.hidden = false;
|
||||
releaseObjectUrl();
|
||||
};
|
||||
img.onerror = () => {
|
||||
if (!triedDirectUrl) {
|
||||
triedDirectUrl = true;
|
||||
releaseObjectUrl();
|
||||
img.src = directUrl;
|
||||
return;
|
||||
}
|
||||
releaseObjectUrl();
|
||||
img.hidden = true;
|
||||
fallback.hidden = false;
|
||||
if (objectUrl.startsWith('blob:')) {
|
||||
URL.revokeObjectURL(objectUrl);
|
||||
}
|
||||
};
|
||||
img.src = objectUrl;
|
||||
})
|
||||
.catch(() => {
|
||||
img.hidden = true;
|
||||
fallback.hidden = false;
|
||||
let directUrl = '';
|
||||
try {
|
||||
directUrl = buildArweaveDataUrl({ gateway, txId });
|
||||
} catch {
|
||||
directUrl = '';
|
||||
}
|
||||
if (!directUrl) {
|
||||
img.hidden = true;
|
||||
fallback.hidden = false;
|
||||
return;
|
||||
}
|
||||
img.onload = () => {
|
||||
fallback.hidden = true;
|
||||
img.hidden = false;
|
||||
};
|
||||
img.onerror = () => {
|
||||
img.hidden = true;
|
||||
fallback.hidden = false;
|
||||
};
|
||||
img.src = directUrl;
|
||||
});
|
||||
|
||||
return wrap;
|
||||
|
||||
Reference in New Issue
Block a user