Checkpoint: первая рабочая версия звонков, сигналинг будет переделан

This commit is contained in:
AidarKC
2026-05-02 18:13:22 +03:00
parent b05da86197
commit 310863faec
20 changed files with 572 additions and 37 deletions
+15 -2
View File
@@ -1,5 +1,5 @@
import { state } from '../state.js';
import { buildArweaveDataUrl, validateArweaveTxId } from '../services/arweave-file-service.js';
import { buildArweaveDataUrl, validateArweaveTxId, validateSha256Hex } from '../services/arweave-file-service.js';
import { getCachedAvatarObjectUrl } from '../services/arweave-avatar-cache-service.js';
function normalizeLogin(value) {
@@ -52,6 +52,8 @@ export function renderUserAvatar({
if (!validateArweaveTxId(txId)) {
return wrap;
}
const sha256Hex = String(avatar?.sha256Hex || avatar?.sha256 || '').trim().toLowerCase();
const expectedSha256Hex = validateSha256Hex(sha256Hex) ? sha256Hex : '';
const img = document.createElement('img');
img.alt = 'Аватар';
@@ -65,7 +67,7 @@ export function renderUserAvatar({
setLoadedState(false);
const gateway = state?.entrySettings?.arweaveServer;
void getCachedAvatarObjectUrl({ gateway, txId })
void getCachedAvatarObjectUrl({ gateway, txId, expectedSha256Hex })
.then((objectUrl) => {
const directUrl = buildArweaveDataUrl({ gateway, txId });
let triedDirectUrl = false;
@@ -83,6 +85,12 @@ export function renderUserAvatar({
};
img.onerror = () => {
if (!triedDirectUrl) {
if (expectedSha256Hex) {
releaseObjectUrl();
img.removeAttribute('src');
setLoadedState(false);
return;
}
triedDirectUrl = true;
releaseObjectUrl();
img.src = directUrl;
@@ -95,6 +103,11 @@ export function renderUserAvatar({
img.src = objectUrl;
})
.catch(() => {
if (expectedSha256Hex) {
img.removeAttribute('src');
setLoadedState(false);
return;
}
let directUrl = '';
try {
directUrl = buildArweaveDataUrl({ gateway, txId });