clash-verge-rev/src/hooks/use-window.ts
Sline 0b4403b67b
refactor: frontend (#5068)
* refactor: setting components

* refactor: frontend

* fix: settings router
2025-10-15 18:57:44 +08:00

47 lines
1.0 KiB
TypeScript

import { use } from "react";
import { WindowContext, type WindowContextType } from "@/providers/window";
export const useWindow = () => {
const context = use(WindowContext);
if (context === undefined) {
throw new Error("useWindow must be used within WindowProvider");
}
return context;
};
export const useWindowControls = () => {
const {
maximized,
minimize,
toggleMaximize,
close,
toggleFullscreen,
currentWindow,
} = useWindow();
return {
maximized,
minimize,
toggleMaximize,
close,
toggleFullscreen,
currentWindow,
} satisfies Pick<
WindowContextType,
| "maximized"
| "minimize"
| "toggleMaximize"
| "close"
| "toggleFullscreen"
| "currentWindow"
>;
};
export const useWindowDecorations = () => {
const { decorated, toggleDecorations, refreshDecorated } = useWindow();
return { decorated, toggleDecorations, refreshDecorated } satisfies Pick<
WindowContextType,
"decorated" | "toggleDecorations" | "refreshDecorated"
>;
};