fix(#195): сброс модалки «Указать» и возврат со страницы за концом списка (T5.1–T5.3)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
6db9fa2ae1
commit
7df8a937fa
@ -55,6 +55,11 @@ function usePagedRows(versionId: string, filters: OsvFilters | null, reloadKey:
|
|||||||
getConsolidatedOsv(versionId, filters, OSV_PAGE_SIZE, (page - 1) * OSV_PAGE_SIZE)
|
getConsolidatedOsv(versionId, filters, OSV_PAGE_SIZE, (page - 1) * OSV_PAGE_SIZE)
|
||||||
.then((r) => {
|
.then((r) => {
|
||||||
if (requestId !== requestRef.current) return;
|
if (requestId !== requestRef.current) return;
|
||||||
|
// страница ушла за конец (последнюю строку сопоставили) — назад на допустимую
|
||||||
|
if (r.items.length === 0 && page > 1) {
|
||||||
|
setPage(page - 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
setRows(r.items);
|
setRows(r.items);
|
||||||
setTotal(r.total);
|
setTotal(r.total);
|
||||||
setError(null);
|
setError(null);
|
||||||
@ -89,6 +94,7 @@ export function CounterPairsView({ versionId, pairs, selected, numFormat, onSele
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
setQ('');
|
setQ('');
|
||||||
setDebouncedQ('');
|
setDebouncedQ('');
|
||||||
|
setMapping(null);
|
||||||
}, [selectedKey]);
|
}, [selectedKey]);
|
||||||
|
|
||||||
const centerFilters: OsvFilters | null = selected ? { legal_entity_id: selected.holder_id, counterparty_id: selected.missing_id } : null;
|
const centerFilters: OsvFilters | null = selected ? { legal_entity_id: selected.holder_id, counterparty_id: selected.missing_id } : null;
|
||||||
@ -128,6 +134,7 @@ export function CounterPairsView({ versionId, pairs, selected, numFormat, onSele
|
|||||||
];
|
];
|
||||||
|
|
||||||
const mapped = useCallback(() => {
|
const mapped = useCallback(() => {
|
||||||
|
setMapping(null);
|
||||||
setReloadKey((k) => k + 1);
|
setReloadKey((k) => k + 1);
|
||||||
onMapped();
|
onMapped();
|
||||||
}, [onMapped]);
|
}, [onMapped]);
|
||||||
|
|||||||
@ -62,7 +62,9 @@ export function OsvContent({ card, onSummaryChange }: Props) {
|
|||||||
if (selectedPair && (selectedPair.holder_id !== pairsView.holder || selectedPair.missing_id !== pairsView.missing)) {
|
if (selectedPair && (selectedPair.holder_id !== pairsView.holder || selectedPair.missing_id !== pairsView.missing)) {
|
||||||
setView({ view: 'pairs', holder: selectedPair.holder_id, missing: selectedPair.missing_id });
|
setView({ view: 'pairs', holder: selectedPair.holder_id, missing: selectedPair.missing_id });
|
||||||
}
|
}
|
||||||
});
|
// biome-ignore lint/correctness/useExhaustiveDependencies: setView пересоздаётся каждый рендер, нужны только эти значения
|
||||||
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
||||||
|
}, [inPairs, s, selectedPair, pairsView.holder, pairsView.missing]);
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
onSummaryChange?.(s);
|
onSummaryChange?.(s);
|
||||||
}, [s, onSummaryChange]);
|
}, [s, onSummaryChange]);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user