fix: enhance sorting functionality by adding forced sort type and order handling

This commit is contained in:
hamster1963
2026-05-25 01:57:50 +08:00
parent 4b0106c011
commit f69f480d3b
3 changed files with 61 additions and 6 deletions
+58 -4
View File
@@ -1,10 +1,64 @@
import { type ReactNode, useState } from "react"; import { type ReactNode, useEffect, useState } from "react";
import { SortContext, type SortOrder, type SortType } from "./sort-context"; import {
SORT_ORDERS,
SORT_TYPES,
SortContext,
type SortOrder,
type SortType,
} from "./sort-context";
const getForcedSortType = (): SortType | undefined => {
const forcedSortType = window.ForceSortType;
if (forcedSortType && SORT_TYPES.includes(forcedSortType as SortType)) {
return forcedSortType as SortType;
}
return undefined;
};
const getForcedSortOrder = (): SortOrder | undefined => {
const forcedSortOrder = window.ForceSortOrder;
if (forcedSortOrder && SORT_ORDERS.includes(forcedSortOrder as SortOrder)) {
return forcedSortOrder as SortOrder;
}
return undefined;
};
export function SortProvider({ children }: { children: ReactNode }) { export function SortProvider({ children }: { children: ReactNode }) {
const [sortType, setSortType] = useState<SortType>("default"); const [sortType, setSortType] = useState<SortType>(
const [sortOrder, setSortOrder] = useState<SortOrder>("desc"); () => getForcedSortType() || "default",
);
const [sortOrder, setSortOrder] = useState<SortOrder>(
() => getForcedSortOrder() || "desc",
);
useEffect(() => {
const applyForcedSort = () => {
const forcedSortType = getForcedSortType();
const forcedSortOrder = getForcedSortOrder();
if (forcedSortType) {
setSortType(forcedSortType);
}
if (forcedSortOrder) {
setSortOrder(forcedSortOrder);
}
};
applyForcedSort();
let retryCount = 0;
const intervalId = window.setInterval(() => {
retryCount += 1;
if (window.ForceSortType || window.ForceSortOrder || retryCount >= 50) {
applyForcedSort();
window.clearInterval(intervalId);
}
}, 100);
return () => {
window.clearInterval(intervalId);
};
}, []);
return ( return (
<SortContext.Provider <SortContext.Provider
+2
View File
@@ -8,6 +8,8 @@ declare global {
ForceCardInline: boolean; ForceCardInline: boolean;
ForceShowMap: boolean; ForceShowMap: boolean;
ForcePeakCutEnabled: boolean; ForcePeakCutEnabled: boolean;
ForceSortType?: string;
ForceSortOrder?: string;
} }
} }
+1 -2
View File
@@ -14,8 +14,7 @@
"moduleDetection": "force", "moduleDetection": "force",
"noEmit": true, "noEmit": true,
"jsx": "react-jsx", "jsx": "react-jsx",
"types": ["node"],
"baseUrl": ".",
"paths": { "paths": {
"@/*": ["./src/*"] "@/*": ["./src/*"]
}, },