feat(room): закрепление участника доступно из любого режима показа
Булавка закрепления раньше рендерилась только в «Стандарте» — в «Плитках» и «Живых плитках» её не было вовсе, хотя крупной плитки для показа закреплённого там и так нет. Теперь кнопка есть на любой плитке в любом режиме, а сам клик закрепления (не открепления) переключает вид на «Стандарт» — иначе закреплённого негде показать крупно. Открепление обратно на предыдущий вид не переключает — это разовое действие, а не устойчивый выбор пользователя, дёргать раскладку туда-обратно не нужно. Переключение при закреплении не сохраняется в localStorage (в отличие от явного выбора режима в тулбаре/настройках) по той же причине. Заодно закрывает задачу «закрепление на мобильном»: раньше кнопки не было в плиточных режимах даже там, а на тач-устройствах она и так всегда видна (`@media (hover: none)`), отдельной мобильной доработки не потребовалось.
This commit is contained in:
@@ -169,6 +169,15 @@ export function RoomPage() {
|
||||
saveStageLayoutMode(mode)
|
||||
}, [])
|
||||
|
||||
// Закрепление участника из плиточного режима переключает вид на «Стандарт»
|
||||
// (см. докстринг `RoomStage`, `onPinFocus`) — но это НЕ то же самое, что
|
||||
// явный выбор пользователя: переключение не сохраняется в localStorage
|
||||
// (в отличие от `handleLayoutModeChange`), иначе разовое закрепление в этой
|
||||
// встрече поменяло бы устойчивое предпочтение режима для всех следующих.
|
||||
const handlePinFocus = useCallback(() => {
|
||||
setLayoutMode('standard')
|
||||
}, [])
|
||||
|
||||
// Ключ трека, который сцена показывает крупно. Живёт ЗДЕСЬ, а не только
|
||||
// внутри `RoomStage`, потому что при открытии мини-плеера сцена
|
||||
// размонтируется в основном окне и монтируется заново в PiP-окне (портал
|
||||
@@ -267,6 +276,7 @@ export function RoomPage() {
|
||||
onHideOthers={() => setHideOthers(true)}
|
||||
initialFocusKey={stageFocusKey}
|
||||
onFocusKeyChange={setStageFocusKey}
|
||||
onPinFocus={handlePinFocus}
|
||||
/>
|
||||
)}
|
||||
{chatVisible && chatOpen && (
|
||||
|
||||
Reference in New Issue
Block a user