fix(files): аватары и баннеры доступны авторизованным пользователям

Аватар нельзя было показать в списке друзей: файл без комнаты был доступен
только загрузившему. Добавлено назначение файла (`files.purpose`: attachment |
avatar | banner, миграция 00006): аватары и баннеры отдаются любому
авторизованному пользователю, вложения по-прежнему проверяются по правам
комнаты, а непривязанные загрузки остаются приватными.
This commit is contained in:
2026-09-20 01:39:04 +03:00
parent 20eed227ca
commit d02ef7527a
35 changed files with 2330 additions and 191 deletions
+9 -2
View File
@@ -14,6 +14,8 @@ import { useMessagesStore } from '@/stores/messages';
interface ComposerProps {
channel: Channel;
authors: AuthorDirectory;
/** Личная беседа: подписи без «#» (имя собеседника вместо комнаты). */
direct?: boolean;
/** Сообщение, на которое отвечаем (плашка над полем ввода). */
replyTo: Message | null;
onCancelReply: () => void;
@@ -34,6 +36,7 @@ const LINE_HEIGHT_PX = 22;
export function Composer({
channel,
authors,
direct = false,
replyTo,
onCancelReply,
disabledReason,
@@ -291,8 +294,12 @@ export function Composer({
/>
<textarea
ref={textareaRef}
aria-label={t('chat.composer.label', { name: channel.name })}
placeholder={t('chat.composer.placeholder', { name: channel.name })}
aria-label={t(direct ? 'chat.composer.directLabel' : 'chat.composer.label', {
name: channel.name,
})}
placeholder={t(direct ? 'chat.composer.directPlaceholder' : 'chat.composer.placeholder', {
name: channel.name,
})}
className="max-h-44 min-h-[1.75rem] w-full resize-none bg-transparent py-1 text-sm text-fg placeholder:text-fg-muted/70 focus:outline-none disabled:opacity-60"
rows={1}
value={value}