From 455ca2ff264f4955b5c5b1259c11ce4c3fdd48ce Mon Sep 17 00:00:00 2001 From: Andrei Zimin Date: Thu, 14 May 2026 14:33:20 +0300 Subject: [PATCH] =?UTF-8?q?fix(ui):=20UserCell=20=D0=B2=20changelog/events?= =?UTF-8?q?/history=20=E2=80=94=20=D0=B5=D1=89=D1=91=206=20=D0=BC=D0=B5?= =?UTF-8?q?=D1=81=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit После !178 (record drawer + RecordHistoryDrawer + webhook detail) ещё осталось 6 точек где раньше рендерился UUID. Все они в "истории словаря" и tab "События": 1. ChangelogDiffModal:57 — header "автор: " в diff modal. Было: `{data.publishedBy.name}` (тип ChangelogPublisher.name — docstring буквально говорит "Backend пока эхает sub"). Стало: . 2. TimeTravelModal:686 — список изменений, имя автора рядом с датой. 3. TimeTravelModal:898 — RIGHT panel "История этой версии", dt/dd pair с автором. 4. TimeTravelModal ComparePanel:414 — "· {author}" suffix, author там DictionaryDetail.updatedBy (тоже UUID). 5. dictionaries.$name.tsx:2263 (events tab, EventsTabContent row) — `{r.userId ?? 'anonymous'}` raw. Сменил на UserCell для не-null userId, anonymous-fallback оставил без UserCell (нечего lookup'ать). 6. dictionaries.$name.tsx:2399 (history tab, HistoryTabContent entry) — `{entry.publishedBy.name}` raw. Всё через тот же useUserDisplay hook что и в !177 — backend endpoint /admin/users/{sub}/display + JwtUserCaptureFilter cache. Если sub нет в cache, UserCell fallback'ит на shortened UUID (текущее поведение из !177). ChangelogPublisher type comment в src/api/client.ts уже намекал что .name это placeholder — useUserDisplay теперь реально резолвит. --- .../src/components/changelog/ChangelogDiffModal.tsx | 5 +++-- .../src/components/timetravel/TimeTravelModal.tsx | 9 ++++++--- ordinis-admin-ui/src/routes/dictionaries.$name.tsx | 7 ++++--- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/ordinis-admin-ui/src/components/changelog/ChangelogDiffModal.tsx b/ordinis-admin-ui/src/components/changelog/ChangelogDiffModal.tsx index 4dc8b27..b3f64b7 100644 --- a/ordinis-admin-ui/src/components/changelog/ChangelogDiffModal.tsx +++ b/ordinis-admin-ui/src/components/changelog/ChangelogDiffModal.tsx @@ -1,6 +1,7 @@ import { useTranslation } from 'react-i18next' import { Badge, LoadingBlock, Modal, QueryErrorState } from '@/ui' import { useChangelogDiff } from '@/api/queries' +import { UserCell } from '@/lib/useUserDisplay' import { kindBadgeVariant, kindLabel } from './kind-meta' /** @@ -52,9 +53,9 @@ export function ChangelogDiffModal({ {/* Header strip — kind + author */}
{kindLabel(data.kind, t)} - + {t('changelog.diff.by', { defaultValue: 'автор' })}:{' '} - {data.publishedBy.name} +
diff --git a/ordinis-admin-ui/src/components/timetravel/TimeTravelModal.tsx b/ordinis-admin-ui/src/components/timetravel/TimeTravelModal.tsx index dd7d77c..5a14ff7 100644 --- a/ordinis-admin-ui/src/components/timetravel/TimeTravelModal.tsx +++ b/ordinis-admin-ui/src/components/timetravel/TimeTravelModal.tsx @@ -6,6 +6,7 @@ import type { ChangelogEntry, DictionaryDetail, FlattenedRecord } from '@/api/cl import { useChangelog, useChangelogDiff, useRecords } from '@/api/queries' import { kindBadgeVariant, kindIcon, kindLabel } from '@/components/changelog/kind-meta' import { ChangelogDiffModal } from '@/components/changelog/ChangelogDiffModal' +import { UserCell } from '@/lib/useUserDisplay' import { cn } from '@/lib/utils' /** @@ -411,7 +412,9 @@ function ComparePanel({ · {note} )} - {author && · {author}} + {author && ( + · + )} ) @@ -683,7 +686,7 @@ function ChangesTabContent({ {new Date(e.publishedAt).toLocaleString()} - {e.publishedBy.name} +