Files
Netcatty/application/state/useWindowControls.ts
bincxz cd367fa44a 添加全屏支持,更新窗口控制逻辑和图标资源
Adds fullscreen support and updates window controls

Introduces fullscreen detection and change events for windows,
adjusts UI logic for fullscreen state on macOS, and updates icon
and logo assets for improved appearance. Enhances user experience
by better accommodating fullscreen workflows.
2025-12-19 03:24:00 +08:00

65 lines
1.7 KiB
TypeScript

import { useCallback } from "react";
import { netcattyBridge } from "../../infrastructure/services/netcattyBridge";
export const useWindowControls = () => {
const notifyRendererReady = useCallback(() => {
try {
netcattyBridge.get()?.rendererReady?.();
} catch {
// ignore
}
}, []);
const closeSettingsWindow = useCallback(async () => {
const bridge = netcattyBridge.get();
await bridge?.closeSettingsWindow?.();
}, []);
const openSettingsWindow = useCallback(async () => {
const bridge = netcattyBridge.get();
return bridge?.openSettingsWindow?.();
}, []);
const minimize = useCallback(async () => {
const bridge = netcattyBridge.get();
await bridge?.windowMinimize?.();
}, []);
const maximize = useCallback(async () => {
const bridge = netcattyBridge.get();
return bridge?.windowMaximize?.();
}, []);
const close = useCallback(async () => {
const bridge = netcattyBridge.get();
await bridge?.windowClose?.();
}, []);
const isMaximized = useCallback(async () => {
const bridge = netcattyBridge.get();
return bridge?.windowIsMaximized?.();
}, []);
const isFullscreen = useCallback(async () => {
const bridge = netcattyBridge.get();
return bridge?.windowIsFullscreen?.() ?? false;
}, []);
const onFullscreenChanged = useCallback((cb: (isFullscreen: boolean) => void) => {
const bridge = netcattyBridge.get();
return bridge?.onWindowFullScreenChanged?.(cb) ?? (() => {});
}, []);
return {
notifyRendererReady,
closeSettingsWindow,
openSettingsWindow,
minimize,
maximize,
close,
isMaximized,
isFullscreen,
onFullscreenChanged,
};
};