Files
h-school/docs/design/off-queue/view-state.md
T

2.5 KiB

Часть Вне очереди. Соседей по папке не читать, если задача не про них.

Состояние экрана

Зачем

Менеджер — списки с фильтрами. Сейчас они живут только в RAM: F5 всегда меню, повторный вход сбрасывает вкладки и запросы. Игрок сравнивает людей и соискателей; потерять «ученики 5А» на обновлении — дырка в уже живых экранах, не новая фича.

Было / Стало / Почему

Было. SPA без адреса. GameScreen.show и PeoplePanel.show обнуляют вкладки, фильтры и выбор. Язык уже в localStorage; игровые часы — на сервере.

Стало. Query URL держит где я: школа, обзор/управление, карта/люди, выбранные комната и человек. sessionStorage по schoolId держит фильтры, поиски, сорт, страницу, вкладку карточки и класс сетки — и последний маршрут, чтобы вход с меню поднял то же место. F5 с ?school= шлёт тот же OpenSchool, что карточка. Вход/выход — pushState; смена вкладки и фильтра — replaceState, чтобы «назад» не листал каждый клик.

Почему. Сервер не знает про вкладки; класть их в сейв — лишний HTTP. localStorage как у языка держал бы «5А» через месяц. URL без фильтров остаётся коротким и копируемым.

Что видит игрок

F5 внутри школы — та же школа, те же вкладки и фильтры. Назад — меню. Снова открыть ту же школу — не сброс на карту. Гость не входит в управление по ссылке. Скорость часов, пауза, открытый пул соискателей и мастер создания не вспоминаются.

Что не входит

Поиск по имени в списках, где его нет. Роутер-библиотека. Состояние на сервере. Бамп протокола.