Redesign social conversations and shared music
ci / api / api (push) Successful in 19m12s
ci / ts / ts (packages + web) (push) Successful in 2m44s
ci / module boundaries / boundaries (push) Successful in 18m23s
ci / contract / contract (сгенерированный код совпадает с openapi.yaml) (push) Successful in 59s
ci / db / db (push) Failing after 18s
ci / mobile / mobile (Metro-бандл Android) (push) Successful in 1m18s

This commit is contained in:
mrleo1nid committed 2026-10-23 11:27:47 +03:00
1 parent 11a16cd023
commit 1a693848f2
23 files changed
+1145 -579

No files matched your search

@@ -1974,6 +1974,20 @@ export interface components {
relationship: "none" | "incoming" | "outgoing" | "friend" | "blocked";
unread: number;
activity?: components["schemas"]["ListeningActivity"];
last_message?: components["schemas"]["SocialMessagePreview"];
};
/** @description Latest message in a current friendship, without marking it read. Deleted content is never returned. */
SocialMessagePreview: {
/** Format: uuid */
id: string;
/** Format: uuid */
sender_id: string;
text: string;
/** @enum {string} */
attachment_kind: "none" | "track" | "playlist";
/** Format: date-time */
created_at: string;
deleted: boolean;
};
SocialNotification: {
/** Format: uuid */
@@ -3466,6 +3480,8 @@ export interface operations {
query?: {
before?: number;
q?: string;
/** @description Only non-deleted track and playlist attachments, with the same history pagination. */
music?: boolean;
};
header?: never;
path: {
+1 -1
View File
@@ -28,7 +28,7 @@ export function socialApi(session: AuthSession) {
activityPlaylist: async (userId: string) => unwrap(await session.client.GET('/api/v1/social/activity/{userId}/playlist', { params: { path: { userId } } })),
search: async (q: string) => unwrap(await session.client.GET('/api/v1/me/social/people', { params: { query: { q } } })),
action: async (body: SocialAction) => unwrap(await session.client.POST('/api/v1/me/social/actions', { body })),
messages: async (peerId: string, before?: number, q?: string) => unwrap(await session.client.GET('/api/v1/me/social/chats/{peerId}', { params: { path: { peerId }, query: { before, q } } })),
messages: async (peerId: string, before?: number, q?: string, music?: boolean) => unwrap(await session.client.GET('/api/v1/me/social/chats/{peerId}', { params: { path: { peerId }, query: { before, q, music } } })),
chatMeta: async (peerId: string) => unwrap(await session.client.GET('/api/v1/me/social/chats/{peerId}/meta', { params: { path: { peerId } } })),
typing: async (peerId: string, typing: boolean) => unwrap(await session.client.PUT('/api/v1/me/social/chats/{peerId}/meta', { params: { path: { peerId } }, body: { typing } })),
updateMessage: async (peerId: string, messageId: string, body: ChatMessageUpdate) => unwrap(await session.client.PATCH('/api/v1/me/social/chats/{peerId}/messages/{messageId}', { params: { path: { peerId, messageId } }, body })),
+30
View File
@@ -387,6 +387,36 @@
"no_results": "No playlists found"
},
"social": {
"space": "In your own rhythm",
"requests": "Requests",
"find_people": "Find friends",
"find_conversation": "Find a conversation",
"find_request": "Find a request",
"no_requests": "No requests yet. Incoming and outgoing friend requests will appear here.",
"status_hidden": "My activity is hidden",
"privacy_settings": "Privacy and social",
"blocked_people": "Blocked people",
"confirm_block": "Block {{name}}?",
"confirm_remove": "Remove {{name}} as a friend?",
"block_hint": "This ends your friendship and disables messaging and listening together. Unblocking does not automatically restore your friendship.",
"remove_hint": "Your conversation is saved. Messaging becomes available again after a new mutual friend request.",
"person_actions": "Actions for {{name}}",
"you": "You",
"shared_track": "Track",
"shared_playlist": "Playlist",
"start_conversation": "Start a conversation",
"conversation_title": "Music brings us closer",
"conversation_content": "Conversation content",
"conversation": "Conversation",
"shared_music": "Shared music",
"no_shared_music": "Shared tracks and playlists will appear here. Share music from the player or a playlist page.",
"back_to_messages": "Back to messages",
"close_search": "Close search",
"latest_messages": "Latest messages",
"attachment_unavailable": "Music is unavailable or the link was revoked",
"message_placeholder": "Message…",
"show_more": "Show full text",
"show_less": "Collapse text",
"title": "Friends & messages",
"subtitle": "Music worth sharing. Conversations at your own pace.",
"people": "Friends",
+30
View File
@@ -387,6 +387,36 @@
"no_results": "Плейлисты не найдены"
},
"social": {
"space": "В своём ритме",
"requests": "Заявки",
"find_people": "Найти друзей",
"find_conversation": "Найти диалог",
"find_request": "Найти заявку",
"no_requests": "Новых заявок пока нет. Здесь появятся входящие и отправленные приглашения в друзья.",
"status_hidden": "Мой статус скрыт",
"privacy_settings": "Приватность и общение",
"blocked_people": "Заблокированные",
"confirm_block": "Заблокировать {{name}}?",
"confirm_remove": "Удалить {{name}} из друзей?",
"block_hint": "Дружба прекратится, сообщения и совместное прослушивание станут недоступны. Разблокировка не восстановит дружбу автоматически.",
"remove_hint": "Переписка сохранится, но общение будет доступно только после новой взаимной заявки в друзья.",
"person_actions": "Действия с пользователем {{name}}",
"you": "Вы",
"shared_track": "Трек",
"shared_playlist": "Плейлист",
"start_conversation": "Начать разговор",
"conversation_title": "Музыка сближает",
"conversation_content": "Содержимое переписки",
"conversation": "Переписка",
"shared_music": "Музыка из переписки",
"no_shared_music": "Отправленные треки и плейлисты появятся здесь. Поделитесь музыкой через плеер или страницу плейлиста.",
"back_to_messages": "Назад к сообщениям",
"close_search": "Закрыть поиск",
"latest_messages": "К новым сообщениям",
"attachment_unavailable": "Музыка недоступна или ссылка отозвана",
"message_placeholder": "Сообщение…",
"show_more": "Показать полностью",
"show_less": "Свернуть текст",
"title": "Друзья и общение",
"subtitle": "Музыка, которой хочется делиться. Разговоры — в своём ритме.",
"people": "Друзья",