change restore window

This commit is contained in:
Nomi Nonsense (Nonszy) 2025-09-03 12:45:09 +07:00
parent 9471a13388
commit 0b04eed82b
2 changed files with 16 additions and 7 deletions

View File

@ -8,12 +8,16 @@ import React, { useState, useRef, useEffect, useReducer } from "react";
export const RestoreWindowsButton = ({ onClick, className, ...props}: React.ComponentProps<"button">) => {
const windowManager = useWindowManager();
const isAnyWindowsClosed = !windowManager.windows.find(w => w.closed == true);
const isWindowsDataDirty = !windowManager.windows.find(w =>
w.closed == true
|| w.minimized == true
|| (w.offset.x != 0 && w.offset.y != 0)
)
return (
<button
className={clsx("bg-primary border border-[#FFA826]", className, isAnyWindowsClosed && "hidden")}
onClick={windowManager.openAll}
className={clsx("bg-primary border border-[#FFA826]", className, isWindowsDataDirty && "hidden")}
onClick={windowManager.resetAll}
{...props}
/>
)

View File

@ -22,7 +22,7 @@ interface WindowManagerContextType {
close: (name: string) => void;
remove: (name: string) => void;
move: (name: string, offset: { x: number; y: number }) => void;
openAll: () => void;
resetAll: () => void;
}
const WindowManagerContext = createContext<WindowManagerContextType | undefined>(undefined);
@ -64,15 +64,20 @@ export const WindowManagerProvider: React.FC<{ children: React.ReactNode }> = ({
const remove = (name: string) => setWindows(w => w.filter(win => win.name !== name));
const openAll = () => setWindows(w =>
w.map(win => ({ ...win, closed: false }))
const resetAll = () => setWindows(w =>
w.map(win => ({
name: win.name,
closed: false,
minimized: false,
offset: { x: 0, y: 0 }
}))
);
return (
<WindowManagerContext.Provider value={{
windows,
isLocalDataExists,
get, add, updateWindow, toggleMinimize, close, move, remove, openAll
get, add, updateWindow, toggleMinimize, close, move, remove, resetAll
}}>
{children}
</WindowManagerContext.Provider>