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.
65 lines
1.7 KiB
TypeScript
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,
|
|
};
|
|
};
|