Files
glchat/web/src/pages/app/NoGuildView.tsx
T
grendervill d02ef7527a fix(files): аватары и баннеры доступны авторизованным пользователям
Аватар нельзя было показать в списке друзей: файл без комнаты был доступен
только загрузившему. Добавлено назначение файла (`files.purpose`: attachment |
avatar | banner, миграция 00006): аватары и баннеры отдаются любому
авторизованному пользователю, вложения по-прежнему проверяются по правам
комнаты, а непривязанные загрузки остаются приватными.
2026-09-20 01:39:04 +03:00

34 lines
1.3 KiB
TypeScript

import { useTranslation } from 'react-i18next';
import { InviteJoin } from '@/components/friends/InviteJoin';
import { Button, Card } from '@/components/ui/primitives';
import { useUiStore } from '@/stores/ui';
/**
* Экран пустого списка серверов. Главного сервера больше нет: новый
* пользователь видит пустую рейку, может создать свой сервер или
* присоединиться по приглашению. Иконки серверов появятся в рейке сразу
* после вступления.
*/
export default function NoGuildView() {
const { t } = useTranslation();
const openGuildCreate = useUiStore((state) => state.openGuildCreate);
return (
<section id="app-content" className="absolute inset-0 overflow-y-auto p-6">
<div className="flex min-h-full items-center justify-center">
<Card className="w-full max-w-lg">
<h2 className="text-lg font-semibold">{t('guilds.empty.title')}</h2>
<p className="mt-2 text-sm text-fg-muted">{t('guilds.empty.body')}</p>
<Button className="mt-4" onClick={openGuildCreate}>
{t('guilds.add')}
</Button>
<InviteJoin className="mt-6 border-t border-border/60 pt-4" />
</Card>
</div>
</section>
);
}