Files
mai-bot/dashboard/src/hooks/useWindowControls.ts

30 lines
881 B
TypeScript

import { useCallback, useEffect, useState } from 'react'
import { isElectron } from '@/lib/runtime'
export function useWindowControls() {
const [isMaximized, setIsMaximized] = useState(false)
useEffect(() => {
if (!isElectron()) return
const api = window.electronAPI
if (!api) return
api.isMaximized().then(setIsMaximized)
const unsubMax = api.onWindowMaximized(() => setIsMaximized(true))
const unsubUnmax = api.onWindowUnmaximized(() => setIsMaximized(false))
return () => {
unsubMax?.()
unsubUnmax?.()
}
}, [])
const minimize = useCallback(() => window.electronAPI?.minimizeWindow(), [])
const toggleMaximize = useCallback(() => window.electronAPI?.maximizeWindow(), [])
const close = useCallback(() => window.electronAPI?.closeWindow(), [])
return { close, isMaximized, minimize, toggleMaximize }
}