kingkont 0.18.14 → 0.18.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +1 -1
- package/renderer/board.js +16 -6
- package/renderer/notifyPanel.js +28 -2
package/package.json
CHANGED
package/renderer/board.js
CHANGED
|
@@ -280,12 +280,22 @@ function _renderIdentity(wrap, status) {
|
|
|
280
280
|
// first, но Chatium может возвращать поле под другим именем —
|
|
281
281
|
// проверяем все известные варианты + nested user-объект.
|
|
282
282
|
const u = status.user || status.profile || status.account || {};
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
283
|
+
let name = status.displayName || status.name || status.fullName
|
|
284
|
+
|| status.login || status.username || status.userName
|
|
285
|
+
|| status.confirmedEmail || status.email
|
|
286
|
+
|| u.displayName || u.name || u.fullName || u.login || u.email
|
|
287
|
+
|| null;
|
|
288
|
+
let sub = '';
|
|
289
|
+
if (name && status.userId && status.userId !== name) {
|
|
290
|
+
sub = `· ${status.userId.slice(0, 8)}`;
|
|
291
|
+
}
|
|
292
|
+
if (!name) {
|
|
293
|
+
// Chatium /auth~me возвращает только userId+appName+createdAt —
|
|
294
|
+
// нет ни email, ни displayName. Показываем userId-префикс
|
|
295
|
+
// компактно вместо некрасивого 24-символьного hash'а целиком.
|
|
296
|
+
name = '👤 ' + (status.userId || 'KingKont').slice(0, 10);
|
|
297
|
+
sub = status.userId ? `…${status.userId.slice(-4)}` : '';
|
|
298
|
+
}
|
|
289
299
|
// Диагностика: если ни одного «человеческого» поля не нашлось —
|
|
290
300
|
// громкий лог в консоль с полным дампом, чтобы видеть что прислал
|
|
291
301
|
// сервер (см. main.js [chatium:status] логи тоже).
|
package/renderer/notifyPanel.js
CHANGED
|
@@ -381,6 +381,24 @@
|
|
|
381
381
|
if (s.filmHandle?.name) return 'folder:' + s.filmHandle.name;
|
|
382
382
|
return null;
|
|
383
383
|
}
|
|
384
|
+
// Резолв projectKey (`cloud:<id>` | `folder:<name>`) → читаемое имя.
|
|
385
|
+
// Для cloud — лезем в localStorage cloudProjectsCache (его наполняет
|
|
386
|
+
// welcome.fetchListCached). Для folder — `<name>` уже читаемый.
|
|
387
|
+
function _resolveProjectName(projectKey) {
|
|
388
|
+
if (!projectKey) return '';
|
|
389
|
+
if (projectKey.startsWith('folder:')) return projectKey.slice('folder:'.length);
|
|
390
|
+
if (projectKey.startsWith('cloud:')) {
|
|
391
|
+
const id = projectKey.slice('cloud:'.length);
|
|
392
|
+
try {
|
|
393
|
+
const cached = JSON.parse(localStorage.getItem('cloudProjectsCache') || '[]');
|
|
394
|
+
const found = cached.find(c => c.id === id);
|
|
395
|
+
if (found?.name) return found.name;
|
|
396
|
+
} catch {}
|
|
397
|
+
// Fallback — короткий префикс ID если cache пустой (первый запуск).
|
|
398
|
+
return '☁ ' + id.slice(0, 6);
|
|
399
|
+
}
|
|
400
|
+
return projectKey;
|
|
401
|
+
}
|
|
384
402
|
function _resolveNodeName(nodeId) {
|
|
385
403
|
const nodes = window.state?.currentBoard?.metadata?.nodes;
|
|
386
404
|
if (!Array.isArray(nodes)) return null;
|
|
@@ -444,7 +462,11 @@
|
|
|
444
462
|
}
|
|
445
463
|
// Иначе открываем проект.
|
|
446
464
|
if (pkType === 'cloud') {
|
|
447
|
-
|
|
465
|
+
// Резолвим имя из кэша — иначе brand-title в шапке покажет id.
|
|
466
|
+
// Раньше было `open(pkId)` без имени → handle.name = pkId →
|
|
467
|
+
// юзер видел «cloud:ClBdBcR3...» крупно сверху-слева.
|
|
468
|
+
const name = _resolveProjectName(target.projectKey);
|
|
469
|
+
if (window.cloudProjects?.open) await window.cloudProjects.open(pkId, name);
|
|
448
470
|
else { alert('Облачный проект недоступен'); return; }
|
|
449
471
|
} else if (pkType === 'folder') {
|
|
450
472
|
// Folder-проект: ищем в recents.
|
|
@@ -554,9 +576,13 @@
|
|
|
554
576
|
} : null;
|
|
555
577
|
if (e.kind === 'done') {
|
|
556
578
|
const nameLabel = e.nodeName ? `«${e.nodeName}»` : `(jobId=${(e.jobId||'').slice(0,8)})`;
|
|
579
|
+
// «в <board>» если есть boardKey (читаемо: «episode/Сцена 1»),
|
|
580
|
+
// иначе «в <projectName>» (резолвим cloud-id → имя). Раньше
|
|
581
|
+
// юзер видел raw «cloud:ClBdBcR3...space» — нечитаемо.
|
|
582
|
+
const where = e.boardKey ? ` в ${e.boardKey}` : ` в ${_resolveProjectName(e.projectKey)}`;
|
|
557
583
|
addEvent({
|
|
558
584
|
kind: 'ok',
|
|
559
|
-
text: `✓ ${e.kindOf || 'gen'} ${nameLabel}
|
|
585
|
+
text: `✓ ${e.kindOf || 'gen'} ${nameLabel} готов${where}`,
|
|
560
586
|
target,
|
|
561
587
|
});
|
|
562
588
|
} else if (e.kind === 'failed') {
|