Merge branch 'fix/my-drafts-anon-empty-state' into 'main'
fix(reviews): anonymous Mine tab — dedicated empty state с sign-in CTA See merge request 2-6/2-6-4/terravault/ordinis!208
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { useMemo, useState } from 'react'
|
||||
import { Link } from '@tanstack/react-router'
|
||||
import { useTranslation } from 'react-i18next'
|
||||
import { useAuth } from 'react-oidc-context'
|
||||
import {
|
||||
Badge,
|
||||
Button,
|
||||
@@ -103,10 +104,34 @@ const operationVariant = (op: DraftOperation): 'info' | 'success' | 'warning' =>
|
||||
|
||||
export function MyDraftsPanel({ onRecordClick }: Props) {
|
||||
const { t } = useTranslation()
|
||||
const auth = useAuth()
|
||||
// Anonymous: backend /drafts/me + /admin/schema-drafts/me либо 401, либо
|
||||
// empty list (зависит от auth.required gate). Раньше это упиралось в
|
||||
// generic "У вас пока нет черновиков" — misleading: пользователь не
|
||||
// понимал что нужно sign in. Теперь dedicated empty state с CTA.
|
||||
const recordsQ = useMyDrafts(0, 50)
|
||||
const schemasQ = useMySchemaDrafts(0, 50)
|
||||
const [filter, setFilter] = useState<StatusFilter>('all')
|
||||
|
||||
if (!auth.isAuthenticated) {
|
||||
return (
|
||||
<EmptyState
|
||||
title={t('reviews.mine.anonTitle', {
|
||||
defaultValue: 'Войдите чтобы видеть свои черновики',
|
||||
})}
|
||||
description={t('reviews.mine.anonDescription', {
|
||||
defaultValue:
|
||||
'Собственные drafts видны только после авторизации — backend фильтрует по вашему JWT sub claim. Войдите через Keycloak чтобы открыть Мои.',
|
||||
})}
|
||||
action={
|
||||
<Button onClick={() => auth.signinRedirect()}>
|
||||
{t('auth.login', { defaultValue: 'Войти' })}
|
||||
</Button>
|
||||
}
|
||||
/>
|
||||
)
|
||||
}
|
||||
|
||||
const rows: UnifiedRow[] = useMemo(() => {
|
||||
const records: UnifiedRow[] = (recordsQ.data?.items ?? []).map((r) => ({
|
||||
kind: 'record',
|
||||
|
||||
@@ -614,6 +614,9 @@ i18n
|
||||
'reviews.mine.emptyDescription':
|
||||
'Черновики появятся здесь, когда вы отправите изменения записи или схемы на ревью.',
|
||||
'reviews.mine.emptyFilter': 'В этой категории черновиков нет',
|
||||
'reviews.mine.anonTitle': 'Войдите чтобы видеть свои черновики',
|
||||
'reviews.mine.anonDescription':
|
||||
'Собственные drafts видны только после авторизации — backend фильтрует по вашему JWT sub claim. Войдите через Keycloak чтобы открыть Мои.',
|
||||
'reviews.mine.filter.all': 'Все',
|
||||
'reviews.mine.filter.pending': 'На ревью',
|
||||
'reviews.mine.filter.wip': 'В работе',
|
||||
@@ -1371,6 +1374,9 @@ i18n
|
||||
'reviews.mine.empty': 'You have no drafts yet',
|
||||
'reviews.mine.emptyDescription':
|
||||
'Drafts will appear here when you submit record or schema changes for review.',
|
||||
'reviews.mine.anonTitle': 'Sign in to see your drafts',
|
||||
'reviews.mine.anonDescription':
|
||||
'Your own drafts are visible only after sign-in — backend filters by your JWT sub claim. Sign in via Keycloak to open Mine.',
|
||||
'reviews.mine.emptyFilter': 'No drafts in this category',
|
||||
'reviews.mine.filter.all': 'All',
|
||||
'reviews.mine.filter.pending': 'Under review',
|
||||
|
||||
Reference in New Issue
Block a user