diff --git a/desktop/src/ui/components/WindowFrame.tsx b/desktop/src/ui/components/WindowFrame.tsx
index 5194660f..f01cb9e8 100644
--- a/desktop/src/ui/components/WindowFrame.tsx
+++ b/desktop/src/ui/components/WindowFrame.tsx
@@ -4,6 +4,7 @@ import type { JSX } from 'solid-js';
import { createSignal, onMount } from 'solid-js';
import Modal from './overlay/Modal';
import Button from './base/Button';
+import appSettings from '~ui/state/appSettings';
interface TitlebarButtonProps {
icon: (any: any) => JSX.Element;
@@ -25,12 +26,15 @@ function WindowFrame() {
const [isModalVisible, setModalVisible] = createSignal(false);
const minimize = () => Window.getCurrent().minimize();
- const quit = () => Window.getCurrent().destroy();
+ const quit = () => Window.getCurrent().close();
+ // const kill = () => Window.getCurrent().destroy();
onMount(() => {
Window.getCurrent().onCloseRequested((event) => {
- event.preventDefault();
- setModalVisible(true);
+ if (appSettings.settings.closeDialog) {
+ event.preventDefault();
+ setModalVisible(true);
+ }
});
});
@@ -42,7 +46,7 @@ function WindowFrame() {
minimize()} />
- setModalVisible(true)} danger />
+ quit()} danger />
@@ -28,9 +28,9 @@ function SettingsAppearance() {
icon={}
>
{
- setReducedMotion(checked);
+ setSettings('reducedMotion', checked);
}}
/>
diff --git a/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx b/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx
index 55330fa5..da0235b2 100644
--- a/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx
+++ b/desktop/src/ui/pages/settings/launcher/SettingsGeneral.tsx
@@ -1,11 +1,24 @@
-import { Code01Icon } from '@untitled-theme/icons-solid';
+import { XIcon } from '@untitled-theme/icons-solid';
import SettingsRow from '../components';
import ScrollableContainer from '~ui/components/ScrollableContainer';
+import Toggle from '~ui/components/base/Toggle';
+import appSettings from '~ui/state/appSettings';
function SettingsGeneral() {
return (
- } />
+ }
+ >
+ {
+ appSettings.setSettings('closeDialog', checked);
+ }}
+ />
+
);
}
diff --git a/desktop/src/ui/state/appSettings.ts b/desktop/src/ui/state/appSettings.ts
new file mode 100644
index 00000000..1f8a956c
--- /dev/null
+++ b/desktop/src/ui/state/appSettings.ts
@@ -0,0 +1,37 @@
+import { createEffect, createRoot, onMount } from 'solid-js';
+import { createStore } from 'solid-js/store';
+
+export interface AppSettingsStore {
+ reducedMotion: boolean;
+ closeDialog: boolean;
+};
+
+function globalStore() {
+ // TODO: Much better management of this, currently temporary
+ const [settings, setSettings] = createStore({
+ reducedMotion: false,
+ closeDialog: true,
+ });
+
+ function set(key: K, value: AppSettingsStore[K]) {
+ window.localStorage.setItem(key, value.toString());
+ }
+
+ onMount(() => {
+ setSettings('reducedMotion', window.localStorage.getItem('reducedMotion') === 'true');
+ setSettings('closeDialog', window.localStorage.getItem('closeDialog') === 'true');
+ });
+
+ createEffect(() => {
+ // Reduced Motion
+ set('reducedMotion', settings.reducedMotion);
+ document.body.classList.toggle('reduce-motion', settings.reducedMotion);
+
+ // Close Dialog
+ set('closeDialog', settings.closeDialog);
+ });
+
+ return { settings, setSettings };
+}
+
+export default createRoot(globalStore);
diff --git a/desktop/src/ui/state/reducedMotionTracker.ts b/desktop/src/ui/state/reducedMotionTracker.ts
deleted file mode 100644
index 6aa16cf7..00000000
--- a/desktop/src/ui/state/reducedMotionTracker.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { createEffect, createRoot, createSignal, onMount } from 'solid-js';
-
-function createReducedMotionTracker() {
- const [reducedMotion, setReducedMotion] = createSignal(false);
-
- onMount(() => {
- const enabled = window.localStorage.getItem('reduced-motion') === 'true';
- setReducedMotion(enabled);
- });
-
- createEffect(() => {
- const enabled = reducedMotion();
- document.body.classList.toggle('reduce-motion', enabled);
- window.localStorage.setItem('reduced-motion', enabled.toString());
- });
-
- return { reducedMotion, setReducedMotion };
-}
-
-export default createRoot(createReducedMotionTracker);