пофикшен персист

This commit is contained in:
gorbenko.pavel
2026-08-10 16:49:23 +05:00
parent 71335b325e
commit d2e16167c7
5 changed files with 103 additions and 29 deletions
@@ -2,7 +2,7 @@ import * as React from 'react';
import styles from './RequestPortal.module.scss';
import type { IRequestPortalProps } from './IRequestPortalProps';
import { IconSprite } from '../shared/ui/Icon/IconSprite';
import { navigate, persistOwnSelection, useRoute, NavSection, OwnTab } from '../shared/routing';
import { navigate, persistOwnTab, persistOwnStatus, useRoute, NavSection, OwnTab } from '../shared/routing';
import { onRequestsChanged, emitRequestsChanged } from '../shared/requestEvents';
import { confirmDiscardFormChanges, markFormClean, markFormDirty } from '../shared/unsavedChanges';
import { SideNav } from './SideNav/SideNav';
@@ -114,21 +114,23 @@ const RequestPortal: React.FC<IRequestPortalProps> = ({ hasTeamsContext, context
// ИЗ другого раздела route.ownTab всё равно undefined (parseRoute заполняет
// его только когда nav==='own'), а при возврате на уже открытую «own» их
// подхватит storage-фолбэк в parseRoute — то же самое значение, которое
// пользователь выбирал последним (см. persistOwnSelection/gotoOwnTab).
// пользователь выбирал последним (см. persistOwnTab/gotoOwnTab).
navigate({ mode: 'submit', nav });
};
const gotoOwnTab = (ownTab: OwnTab): void => {
// Фильтр по статусу относится только к «Инициированным» — на других
// подвкладках отбор задаёт сама вкладка, поэтому фильтр туда не тащим.
const ownStatus = ownTab === 'created' ? route.ownStatus : undefined;
persistOwnSelection(ownTab, ownStatus);
navigate({ mode: 'submit', nav: 'own', ownTab, ownStatus });
// ownStatus здесь НЕ передаём (даже для 'created'!) — по той же причине,
// что и в goto() выше: он подхватится storage-фолбэком в parseRoute. Если
// передать route.ownStatus явно, при переходе с ДРУГОЙ подвкладки он всегда
// undefined (сейчас мы не на 'created'), и фильтр на «Инициированных»
// выглядел бы каждый раз сброшенным — ровно тот баг, который тут был.
persistOwnTab(ownTab);
navigate({ mode: 'submit', nav: 'own', ownTab });
};
const setOwnStatus = (ownStatus: string): void => {
const normalized = ownStatus || undefined;
persistOwnSelection('created', normalized);
persistOwnStatus(normalized);
navigate({ mode: 'submit', nav: 'own', ownTab: 'created', ownStatus: normalized });
};
// Клик по строке таблицы. СВОЯ заявка в незавершённом статусе (черновик,