fix(files): аватары и баннеры доступны авторизованным пользователям
Аватар нельзя было показать в списке друзей: файл без комнаты был доступен только загрузившему. Добавлено назначение файла (`files.purpose`: attachment | avatar | banner, миграция 00006): аватары и баннеры отдаются любому авторизованному пользователю, вложения по-прежнему проверяются по правам комнаты, а непривязанные загрузки остаются приватными.
This commit is contained in:
@@ -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}
|
||||
|
||||
Reference in New Issue
Block a user