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
+82 -9
View File
@@ -56,7 +56,10 @@
"message.edit_window_expired": "This message can no longer be edited: more than 24 hours passed.",
"file.too_large": "The file exceeds the allowed size.",
"request.bad": "Malformed request.",
"file.not_found": "File not found."
"file.not_found": "File not found.",
"invite.expired": "This invite has expired.",
"invite.exhausted": "This invite has no uses left.",
"user.not_found": "No user with that username was found."
},
"theme": {
"switchToLight": "Light theme",
@@ -172,11 +175,8 @@
"limitReached": "You have reached the server limit — remove one of your servers first."
},
"empty": {
"title": "No servers yet",
"body": "Join the instance main server or create your own.",
"joinMain": "Join the main server",
"joining": "Joining…",
"noMain": "This instance has no main server configured — create your own."
"title": "You have no servers yet",
"body": "Create your own server or join one with an invite."
},
"leave": "Leave server",
"leaveConfirm": "Leave the server “{{name}}”?",
@@ -223,6 +223,74 @@
"slowmode": "slowmode {{seconds}}s",
"leaveHint": "You can leave the server in server settings → “Danger zone”."
},
"friends": {
"rail": "Friends",
"title": "Friends",
"sidebarLabel": "Friends and direct messages",
"sidebarHint": "Direct messages live here — they are not in the server rail.",
"dmSection": "Direct messages",
"dmEmpty": "No direct messages yet.",
"friendsSection": "Friends",
"friendsEmpty": "Your friend list is empty.",
"open": "Open a conversation with {{name}}",
"empty": {
"title": "Add friends to start talking",
"body": "Find someone by username and send a friend request — a direct conversation appears once it is accepted.",
"search": "Find friends"
},
"search": {
"title": "Friend search",
"close": "Close search",
"label": "Search by username",
"placeholder": "Enter a username",
"hint": "Type at least 2 characters.",
"empty": "Nobody found.",
"add": "Add friend",
"adding": "Sending…",
"requested": "Request sent",
"friend": "Already friends",
"message": "Message"
},
"requests": {
"incoming": "Incoming requests",
"outgoing": "Outgoing requests",
"accept": "Accept",
"decline": "Decline",
"cancel": "Cancel"
},
"list": {
"label": "Friend list",
"message": "Message",
"more": "Actions: {{name}}",
"menu": "Actions for {{name}}",
"remove": "Remove friend",
"block": "Block"
},
"lastSeen": {
"label": "Last seen",
"online": "Online now",
"unknown": "Offline for a while",
"at": "Last seen: {{time}}"
},
"dm": {
"unknown": "Recipient",
"notFound": {
"title": "Conversation unavailable",
"body": "This direct conversation was not found: it may be deleted or closed to you."
}
}
},
"invites": {
"title": "Join with an invite",
"hint": "Paste a code or a link like https://<domain>/invite/<code>.",
"label": "Invite code or link",
"placeholder": "e.g. ab12cd or https://example.com/invite/ab12cd",
"invalid": "Could not recognise the invite code.",
"join": "Join",
"joining": "Joining…",
"members": "Members: {{count}}",
"alreadyMember": "You are already on this server"
},
"chat": {
"log": "Message log of {{name}}",
"loadMore": "Load more",
@@ -236,7 +304,9 @@
"unknownAuthor": "unknown",
"start": {
"title": "This is the start of #{{name}}",
"body": "There are no messages here yet. Say something — everyone in the channel will see it."
"body": "There are no messages here yet. Say something — everyone in the channel will see it.",
"directTitle": "This is the beginning of your conversation with {{name}}",
"directBody": "No messages here yet. Say hello first."
},
"message": {
"by": "Message from {{name}} in {{channel}}",
@@ -290,7 +360,9 @@
"tooLarge": "File “{{name}}” exceeds the {{limit}} limit",
"rateLimited": "Too many messages. You can send again in {{seconds}} s.",
"denied": "You are not allowed to send messages in this channel.",
"readOnly": "This channel is read-only for you."
"readOnly": "This channel is read-only for you.",
"directLabel": "Message to {{name}}",
"directPlaceholder": "Message {{name}}"
},
"typing_one": "{{names}} is typing…",
"typing_few": "{{names}} are typing…",
@@ -315,7 +387,8 @@
"spoiler": {
"show": "Reveal spoiler",
"hide": "Hide spoiler"
}
},
"logDirect": "Direct conversation with {{name}}"
},
"user": {
"panelLabel": "User panel",