feat(room): показывать название конференции вместо технического room_name

RoomTopbar рендерил `JoinOut.room_name` — техническое имя комнаты LiveKit
вида `hC-Dmos9KEM`, которое туда попало по ошибке (перепутано с
человекочитаемым title конференции). Теперь топбар получает `title`
(из резолва номера/ссылки или из карточки конференции в лобби) и падает
на «Конференция без названия», если организатор его не задал. Номер и
slug остаются на своих местах — в инвайт-чипе и в адресе, где они нужны
функционально.
This commit is contained in:
2026-07-30 00:23:18 +03:00
parent f627d827af
commit 3290eb5d07
4 changed files with 16 additions and 8 deletions

View File

@@ -143,7 +143,7 @@ export function JoinPage() {
state: {
livekitUrl: data.livekit_url,
token: data.token,
roomName: data.room_name,
title: resolved.title,
conferenceId: data.conference_id,
chatEnabled: data.chat_enabled,
},

View File

@@ -40,7 +40,7 @@ export function LobbyPage() {
state: {
livekitUrl: conference.join.livekit_url,
token: conference.join.token,
roomName: conference.join.room_name,
title: conference.title,
conferenceId: conference.join.conference_id,
chatEnabled: conference.join.chat_enabled,
number: conference.number,

View File

@@ -23,7 +23,8 @@ import { loadStageLayoutMode, saveStageLayoutMode, type StageLayoutMode } from '
interface RoomJoinState {
livekitUrl: string
token: string
roomName: string
/** Название конференции (`ConferenceOut.title`/`ResolveOut.title`) — для топбара, см. `RoomTopbar` и задачу A6. */
title?: string | null
conferenceId?: string
/** Номер конференции — для инвайт-чипа в топбаре (см. RoomTopbar). Есть только сразу после создания. */
number?: string
@@ -92,7 +93,7 @@ export function RoomPage() {
setJoinState({
livekitUrl: result.livekit_url,
token: result.token,
roomName: result.room_name,
title: info.title,
conferenceId: result.conference_id,
chatEnabled: result.chat_enabled,
})
@@ -246,7 +247,7 @@ export function RoomPage() {
onDisconnected={handleDisconnected}
>
<div data-lk-theme="default" className="room-shell">
<RoomTopbar roomName={joinState.roomName} slug={slug} number={joinState.number} />
<RoomTopbar title={joinState.title ?? null} slug={slug} number={joinState.number} />
<div className="room-main">
{pip.mode === 'document' ? (
// Сцена сейчас рисуется в PiP-окне (через createPortal ниже) —