UI: вернуть старую вкладку Личные и починить аватары в Связях

This commit is contained in:
AidarKC
2026-06-20 16:43:53 +04:00
parent 55e6e477be
commit 65fad993ad
3 changed files with 171 additions and 157 deletions
+23 -1
View File
@@ -15,6 +15,8 @@
// model = { focusId, nodes: [{ id, login, name, avatar, relationType, strength, shining, tier }] }
import { renderUserAvatar, buildAvatarInitials } from '../../components/avatar-image.js';
import { state } from '../../state.js';
import { buildArweaveDataUrl } from '../../services/arweave-file-service.js';
const SVGNS = 'http://www.w3.org/2000/svg';
@@ -105,6 +107,26 @@ function relationColor(relationType) {
return RELATION_COLORS[relationType] || RELATION_COLORS.contact;
}
function resolveAvatarPhotoSrc(src) {
const directPhoto = String(src?.photo || '').trim();
if (directPhoto) return directPhoto;
const rawAvatar = src?.avatar;
if (!rawAvatar || rawAvatar === 'url_to_image') return null;
if (typeof rawAvatar === 'string') return String(rawAvatar).trim() || null;
const txId = String(rawAvatar?.ar || '').trim();
if (!txId) return null;
try {
return buildArweaveDataUrl({
gateway: state?.entrySettings?.arweaveServer,
txId,
});
} catch {
return null;
}
}
// Однократно внедряем скрытый SVG-фильтр свечения «сияющих» узлов (мягкое гауссово размытие).
// Применяется к псевдо-ореолу ::before, а НЕ к самой аватарке — поэтому фото не размывается.
function ensureShineFilter() {
@@ -487,7 +509,7 @@ export function createForceGraph({ stage, model, onCenterTap, onNodeTap, onNodeL
// Аватар = SVG-«стеклянный орб» (фото в стеклянной сфере). Хост — .node-dot (масштаб/состояния/
// синхронизация позиций движка). Меняем ТОЛЬКО аватар; бейдж/имя/линии — как раньше.
const photoSrc = src.photo || (src.avatar && src.avatar !== 'url_to_image' ? src.avatar : null);
const photoSrc = resolveAvatarPhotoSrc(src);
const initials = buildAvatarInitials({ login: src.login || src.name || String(src.id), firstName: src.name || '' });
const dot = document.createElement('div');
dot.className = 'avatar node-dot fg-orb-host';