mirror of
https://github.com/clash-verge-rev/clash-verge-rev
synced 2025-05-07 17:35:46 +08:00
45 lines
1.1 KiB
TypeScript
45 lines
1.1 KiB
TypeScript
import { createContextState } from "foxact/create-context-state";
|
|
import { useLocalStorage } from "foxact/use-local-storage";
|
|
|
|
const [ThemeModeProvider, useThemeMode, useSetThemeMode] = createContextState<
|
|
"light" | "dark"
|
|
>("light");
|
|
|
|
export const useEnableLog = () => useLocalStorage("enable-log", false);
|
|
|
|
interface IConnectionSetting {
|
|
layout: "table" | "list";
|
|
}
|
|
|
|
const defaultConnectionSetting: IConnectionSetting = { layout: "table" };
|
|
|
|
export const useConnectionSetting = () =>
|
|
useLocalStorage<IConnectionSetting>(
|
|
"connections-setting",
|
|
defaultConnectionSetting,
|
|
{
|
|
serializer: JSON.stringify,
|
|
deserializer: JSON.parse,
|
|
}
|
|
);
|
|
|
|
// save the state of each profile item loading
|
|
const [LoadingCacheProvider, useLoadingCache, useSetLoadingCache] =
|
|
createContextState<Record<string, boolean>>({});
|
|
|
|
// save update state
|
|
const [UpdateStateProvider, useUpdateState, useSetUpdateState] =
|
|
createContextState<boolean>(false);
|
|
|
|
export {
|
|
ThemeModeProvider,
|
|
useThemeMode,
|
|
useSetThemeMode,
|
|
LoadingCacheProvider,
|
|
useLoadingCache,
|
|
useSetLoadingCache,
|
|
UpdateStateProvider,
|
|
useUpdateState,
|
|
useSetUpdateState,
|
|
};
|