SHA256
UI: вернуть старую вкладку Личные и починить аватары в Связях
This commit is contained in:
@@ -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';
|
||||
|
||||
Reference in New Issue
Block a user