fix(tracker): hash-вход (chemistry-9#p6) тоже шлёт mark_read

Из каталога кнопка 'Продолжить' ведёт на /textbook/<slug>#<last_para>.
handleHashNav при загрузке делала setLastPara(p6) — POST с last_para
БЕЗ mark_read. Поэтому каталог менял last_para, но 'прочитано'
оставалось без изменений.

Сейчас handleHashNav объединяет оба обновления (как wirePillTracking)
в один POST с mark_read=key.

Из лога user 2: '[tracker] chemistry-9 → POST {"last_para":"p6"}'
теперь будет '...{"last_para":"p6","mark_read":"p6"}'.
This commit is contained in:
Maxim Dolgolyov
2026-05-27 17:33:54 +03:00
parent 43f5edbbc3
commit edeb442846
+12 -2
View File
@@ -455,8 +455,18 @@
function handleHashNav() {
const m = (location.hash || '').match(/^#(p\d+)$/);
if (m) {
openParaByKey(m[1]);
setLastPara(m[1]);
const key = m[1];
openParaByKey(key);
localState.last = key;
if (!localState.read.includes(key)) {
localState.read.push(key);
refreshPillUI(key);
refreshCheckUI(key);
}
persist();
// Hash-вход (например, «Продолжить» из каталога) считается просмотром
// параграфа — шлём last_para + mark_read одним POST.
syncToServer({ mark_read: key });
return true;
}
return false;