From 6e3c05072cb507e2a376b7019836bea7bf663cb0 Mon Sep 17 00:00:00 2001 From: AAGaming Date: Sat, 15 Oct 2022 23:46:42 -0400 Subject: Developer menu (#211) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add settings utils to use settings outside of components * initial implementation of developer menu * ✨ Add support for addScriptToEvaluateOnNewDocument * React DevTools support * increase chance of RDT successfully injecting * Rewrite toaster hook to not re-create the window * remove friends focus workaround because it's fixed * Expose various DFL utilities as DFL in dev mode * try to fix text field focuss * move focusable to outside field * add onTouchEnd and onClick to focusable * Update pnpm-lock.yaml Co-authored-by: FinalDoom <7464170-FinalDoom@users.noreply.gitlab.com> Co-authored-by: TrainDoctor --- frontend/src/utils/hooks/useSetting.ts | 24 +++++------------------- frontend/src/utils/settings.ts | 24 ++++++++++++++++++++++++ 2 files changed, 29 insertions(+), 19 deletions(-) create mode 100644 frontend/src/utils/settings.ts (limited to 'frontend/src/utils') diff --git a/frontend/src/utils/hooks/useSetting.ts b/frontend/src/utils/hooks/useSetting.ts index f950bf6a..afed5239 100644 --- a/frontend/src/utils/hooks/useSetting.ts +++ b/frontend/src/utils/hooks/useSetting.ts @@ -1,25 +1,14 @@ import { useEffect, useState } from 'react'; -interface GetSettingArgs { - key: string; - default: T; -} - -interface SetSettingArgs { - key: string; - value: T; -} +import { getSetting, setSetting } from '../settings'; -export function useSetting(key: string, def: T): [value: T | null, setValue: (value: T) => Promise] { +export function useSetting(key: string, def: T): [value: T, setValue: (value: T) => Promise] { const [value, setValue] = useState(def); useEffect(() => { (async () => { - const res = (await window.DeckyPluginLoader.callServerMethod('get_setting', { - key, - default: def, - } as GetSettingArgs)) as { result: T }; - setValue(res.result); + const res = await getSetting(key, def); + setValue(res); })(); }, []); @@ -27,10 +16,7 @@ export function useSetting(key: string, def: T): [value: T | null, setValue: value, async (val: T) => { setValue(val); - await window.DeckyPluginLoader.callServerMethod('set_setting', { - key, - value: val, - } as SetSettingArgs); + await setSetting(key, val); }, ]; } diff --git a/frontend/src/utils/settings.ts b/frontend/src/utils/settings.ts new file mode 100644 index 00000000..cadfe935 --- /dev/null +++ b/frontend/src/utils/settings.ts @@ -0,0 +1,24 @@ +interface GetSettingArgs { + key: string; + default: T; +} + +interface SetSettingArgs { + key: string; + value: T; +} + +export async function getSetting(key: string, def: T): Promise { + const res = (await window.DeckyPluginLoader.callServerMethod('get_setting', { + key, + default: def, + } as GetSettingArgs)) as { result: T }; + return res.result; +} + +export async function setSetting(key: string, value: T): Promise { + await window.DeckyPluginLoader.callServerMethod('set_setting', { + key, + value, + } as SetSettingArgs); +} -- cgit v1.2.3