Fix HistoryPage stale appliedQuery effect and add mount query regression test
This commit is contained in:
@@ -6,7 +6,7 @@
|
||||
* Rows with repeatedly-banned IPs are highlighted in amber.
|
||||
*/
|
||||
|
||||
import { useEffect, useState } from "react";
|
||||
import { useEffect, useRef, useState } from "react";
|
||||
import {
|
||||
Badge,
|
||||
Button,
|
||||
@@ -199,10 +199,14 @@ export function HistoryPage(): React.JSX.Element {
|
||||
const [originFilter, setOriginFilter] = useState<BanOriginFilter>("all");
|
||||
const [jailFilter, setJailFilter] = useState("");
|
||||
const [ipFilter, setIpFilter] = useState("");
|
||||
const [appliedQuery, setAppliedQuery] = useState<HistoryQuery>({
|
||||
const defaultQuery: HistoryQuery = {
|
||||
range: "7d",
|
||||
source: "archive",
|
||||
page_size: PAGE_SIZE,
|
||||
});
|
||||
page: 1,
|
||||
};
|
||||
const [appliedQuery, setAppliedQuery] = useState<HistoryQuery>(defaultQuery);
|
||||
const appliedQueryRef = useRef<HistoryQuery>(defaultQuery);
|
||||
|
||||
// Per-IP detail navigation
|
||||
const [selectedIp, setSelectedIp] = useState<string | null>(null);
|
||||
@@ -221,13 +225,14 @@ export function HistoryPage(): React.JSX.Element {
|
||||
page_size: PAGE_SIZE,
|
||||
};
|
||||
|
||||
if (areHistoryQueriesEqual(nextQuery, appliedQuery)) {
|
||||
if (areHistoryQueriesEqual(nextQuery, appliedQueryRef.current)) {
|
||||
return;
|
||||
}
|
||||
|
||||
setPage(1);
|
||||
setAppliedQuery(nextQuery);
|
||||
}, [range, originFilter, jailFilter, ipFilter, setPage, appliedQuery]);
|
||||
appliedQueryRef.current = nextQuery;
|
||||
}, [range, originFilter, jailFilter, ipFilter, setPage]);
|
||||
|
||||
const totalPages = Math.max(1, Math.ceil(total / PAGE_SIZE));
|
||||
|
||||
|
||||
Reference in New Issue
Block a user