feat(channels): фон комнаты и статичные превью при reduced-motion
- миграция 00014: background_file_id у комнаты (AGENT.md 7.5, 7.7)
- API: POST/DELETE /channels/{id}/background под MANAGE_CHANNEL_BACKGROUND,
фон отдаётся в списке комнат и рассылается событием CHANNEL_UPDATE
- клиент: фон рисуется за лентой с затемнением, блок «Фон комнаты» в настройках
комнаты (загрузка, замена, удаление)
- AnimatedImage: при «уменьшить движение» показывает статичный первый кадр,
нарисованный на canvas, вместо анимации
- тесты: Go (загрузка, права, снятие) и Vitest (лента, настройки, reduced-motion)
This commit is contained in:
@@ -30,6 +30,8 @@ type channelPayload struct {
|
||||
CanView bool `json:"can_view"`
|
||||
CanSend bool `json:"can_send"`
|
||||
CanConnect bool `json:"can_connect"`
|
||||
// BackgroundFileID — фон комнаты (AGENT.md 7.5, 7.7).
|
||||
BackgroundFileID string `json:"background_file_id,omitempty"`
|
||||
}
|
||||
|
||||
type rolePayload struct {
|
||||
@@ -97,6 +99,9 @@ func channelFromStore(channel store.Channel, resolved *permissions.Resolved) cha
|
||||
if channel.ParentID != nil {
|
||||
payload.ParentID = formatSnowflake(*channel.ParentID)
|
||||
}
|
||||
if channel.BackgroundFileID != nil {
|
||||
payload.BackgroundFileID = formatSnowflake(*channel.BackgroundFileID)
|
||||
}
|
||||
if resolved != nil {
|
||||
payload.CanView = resolved.CanViewChannel()
|
||||
payload.CanSend = resolved.Can(permissions.SendMessages)
|
||||
|
||||
Reference in New Issue
Block a user