mirror of
https://github.com/Buriburizaem0n/nezha-dash-v1.git
synced 2026-09-19 09:40:14 +00:00
fix: enhance sorting functionality by adding forced sort type and order handling
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -8,6 +8,8 @@ declare global {
|
|||||||
ForceCardInline: boolean;
|
ForceCardInline: boolean;
|
||||||
ForceShowMap: boolean;
|
ForceShowMap: boolean;
|
||||||
ForcePeakCutEnabled: boolean;
|
ForcePeakCutEnabled: boolean;
|
||||||
|
ForceSortType?: string;
|
||||||
|
ForceSortOrder?: string;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-2
@@ -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/*"]
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user