From 40dfc8b30a04fb30cd026179c09a3ff489966374 Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sat, 17 Feb 2024 11:04:19 -0800 Subject: [PATCH] Add more info to settings --- plugins/filter-jsonpath/vite.config.js | 2 +- plugins/filter-xpath/vite.config.js | 2 +- plugins/importer-insomnia/vite.config.js | 2 +- plugins/importer-postman/vite.config.js | 2 +- plugins/importer-yaak/vite.config.js | 2 +- src-tauri/Cargo.toml | 1 + src-tauri/tauri.conf.json | 3 +++ src-web/components/SettingsDialog.tsx | 28 ++++++++++++++++++++---- src-web/components/SettingsDropdown.tsx | 8 +++---- src-web/components/core/Dialog.tsx | 7 ++---- src-web/components/core/Dropdown.tsx | 2 +- src-web/hooks/useAppInfo.ts | 10 +++++++++ src-web/hooks/useAppVersion.ts | 6 ----- src-web/hooks/useHotKey.ts | 6 ++--- 14 files changed, 53 insertions(+), 28 deletions(-) create mode 100644 src-web/hooks/useAppInfo.ts delete mode 100644 src-web/hooks/useAppVersion.ts diff --git a/plugins/filter-jsonpath/vite.config.js b/plugins/filter-jsonpath/vite.config.js index 7a165919..17baae7e 100644 --- a/plugins/filter-jsonpath/vite.config.js +++ b/plugins/filter-jsonpath/vite.config.js @@ -8,6 +8,6 @@ export default defineConfig({ fileName: 'index', formats: ['es'], }, - outDir: resolve(__dirname, '../../src-tauri/plugins/build/filter-jsonpath'), + outDir: resolve(__dirname, '../../src-tauri/plugins/filter-jsonpath'), }, }); diff --git a/plugins/filter-xpath/vite.config.js b/plugins/filter-xpath/vite.config.js index a7238839..18a43a2a 100644 --- a/plugins/filter-xpath/vite.config.js +++ b/plugins/filter-xpath/vite.config.js @@ -8,6 +8,6 @@ export default defineConfig({ fileName: 'index', formats: ['es'], }, - outDir: resolve(__dirname, '../../src-tauri/plugins/build/filter-xpath'), + outDir: resolve(__dirname, '../../src-tauri/plugins/filter-xpath'), }, }); diff --git a/plugins/importer-insomnia/vite.config.js b/plugins/importer-insomnia/vite.config.js index 52856e29..b7c7bbf6 100644 --- a/plugins/importer-insomnia/vite.config.js +++ b/plugins/importer-insomnia/vite.config.js @@ -8,6 +8,6 @@ export default defineConfig({ fileName: 'index', formats: ['es'], }, - outDir: resolve(__dirname, '../../src-tauri/plugins/build/importer-insomnia'), + outDir: resolve(__dirname, '../../src-tauri/plugins/importer-insomnia'), }, }); diff --git a/plugins/importer-postman/vite.config.js b/plugins/importer-postman/vite.config.js index f6d0834c..1c261948 100644 --- a/plugins/importer-postman/vite.config.js +++ b/plugins/importer-postman/vite.config.js @@ -8,6 +8,6 @@ export default defineConfig({ fileName: 'index', formats: ['es'], }, - outDir: resolve(__dirname, '../../src-tauri/plugins/build/importer-postman'), + outDir: resolve(__dirname, '../../src-tauri/plugins/importer-postman'), }, }); diff --git a/plugins/importer-yaak/vite.config.js b/plugins/importer-yaak/vite.config.js index 6ea993c2..33824ded 100644 --- a/plugins/importer-yaak/vite.config.js +++ b/plugins/importer-yaak/vite.config.js @@ -8,6 +8,6 @@ export default defineConfig({ fileName: 'index', formats: ['es'], }, - outDir: resolve(__dirname, '../../src-tauri/plugins/build/importer-yaak'), + outDir: resolve(__dirname, '../../src-tauri/plugins/importer-yaak'), }, }); diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 2f38ebc0..412c1b20 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -36,6 +36,7 @@ serde_json = { version = "1.0.111", features = ["raw_value"] } sqlx = { version = "0.7.3", features = ["sqlite", "runtime-tokio-rustls", "json", "chrono", "time"] } tauri = { version = "1.5.2", features = [ "config-toml", + "path-all", "devtools", "dialog-open", "dialog-save", diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 1722a25a..73ed87b3 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -47,6 +47,9 @@ "all": false, "open": true, "save": true + }, + "path": { + "all": true } }, "bundle": { diff --git a/src-web/components/SettingsDialog.tsx b/src-web/components/SettingsDialog.tsx index 340c69fd..de8b8a4e 100644 --- a/src-web/components/SettingsDialog.tsx +++ b/src-web/components/SettingsDialog.tsx @@ -1,4 +1,5 @@ import { useActiveWorkspace } from '../hooks/useActiveWorkspace'; +import { useAppInfo } from '../hooks/useAppInfo'; import { useSettings } from '../hooks/useSettings'; import { useUpdateSettings } from '../hooks/useUpdateSettings'; import { useUpdateWorkspace } from '../hooks/useUpdateWorkspace'; @@ -14,6 +15,7 @@ export const SettingsDialog = () => { const updateWorkspace = useUpdateWorkspace(workspace?.id ?? null); const settings = useSettings(); const updateSettings = useUpdateSettings(); + const appInfo = useAppInfo(); if (settings == null || workspace == null) { return null; @@ -25,7 +27,6 @@ export const SettingsDialog = () => { name="appearance" label="Appearance" labelPosition="left" - labelClassName="w-1/3" size="sm" value={settings.appearance} onChange={(appearance) => updateSettings.mutateAsync({ ...settings, appearance })} @@ -49,7 +50,6 @@ export const SettingsDialog = () => { name="updateChannel" label="Update Channel" labelPosition="left" - labelClassName="w-1/3" size="sm" value={settings.updateChannel} onChange={(updateChannel) => updateSettings.mutateAsync({ ...settings, updateChannel })} @@ -80,8 +80,6 @@ export const SettingsDialog = () => { label="Request Timeout (ms)" placeholder="0" labelPosition="left" - labelClassName="w-1/3" - containerClassName="col-span-2" defaultValue={`${workspace.settingRequestTimeout}`} validate={(value) => parseInt(value) >= 0} onChange={(v) => updateWorkspace.mutateAsync({ settingRequestTimeout: parseInt(v) || 0 })} @@ -103,6 +101,28 @@ export const SettingsDialog = () => { } /> + + + + App Info + + + + + + + {appInfo.data && ( + + + + + )} + +
Version + {appInfo.data?.version} +
Data Directory + {appInfo.data.appDataDir} +
); }; diff --git a/src-web/components/SettingsDropdown.tsx b/src-web/components/SettingsDropdown.tsx index 61a1274c..b2c7ec0a 100644 --- a/src-web/components/SettingsDropdown.tsx +++ b/src-web/components/SettingsDropdown.tsx @@ -1,7 +1,7 @@ import { invoke, shell } from '@tauri-apps/api'; import { useRef, useState } from 'react'; import { useAlert } from '../hooks/useAlert'; -import { useAppVersion } from '../hooks/useAppVersion'; +import { useAppInfo } from '../hooks/useAppInfo'; import { useExportData } from '../hooks/useExportData'; import { useImportData } from '../hooks/useImportData'; import { useListenToTauriEvent } from '../hooks/useListenToTauriEvent'; @@ -18,7 +18,7 @@ import { SettingsDialog } from './SettingsDialog'; export function SettingsDropdown() { const importData = useImportData(); const exportData = useExportData(); - const appVersion = useAppVersion(); + const appInfo = useAppInfo(); const dropdownRef = useRef(null); const dialog = useDialog(); const alert = useAlert(); @@ -96,7 +96,7 @@ export function SettingsDropdown() { leftSlot: , onSelect: () => exportData.mutate(), }, - { type: 'separator', label: `Yaak v${appVersion.data}` }, + { type: 'separator', label: `Yaak v${appInfo.data?.version}` }, { key: 'update-check', label: 'Check for Updates', @@ -126,7 +126,7 @@ export function SettingsDropdown() { variant: showChangelog ? 'notify' : 'default', leftSlot: , rightSlot: , - onSelect: () => shell.open(`https://yaak.app/changelog/${appVersion.data}`), + onSelect: () => shell.open(`https://yaak.app/changelog/${appInfo.data?.version}`), }, ]} > diff --git a/src-web/components/core/Dialog.tsx b/src-web/components/core/Dialog.tsx index 9f3a7694..d6f823b8 100644 --- a/src-web/components/core/Dialog.tsx +++ b/src-web/components/core/Dialog.tsx @@ -2,7 +2,7 @@ import classNames from 'classnames'; import { motion } from 'framer-motion'; import type { ReactNode } from 'react'; import { useMemo } from 'react'; -import { useKeyPressEvent } from 'react-use'; +import { useHotKey } from '../../hooks/useHotKey'; import { Overlay } from '../Overlay'; import { Heading } from './Heading'; import { IconButton } from './IconButton'; @@ -34,10 +34,7 @@ export function Dialog({ [description], ); - useKeyPressEvent('Escape', (e) => { - e.preventDefault(); - onClose(); - }); + useHotKey('popup.close', onClose); return ( diff --git a/src-web/components/core/Dropdown.tsx b/src-web/components/core/Dropdown.tsx index 3cc60b3d..00cdb056 100644 --- a/src-web/components/core/Dropdown.tsx +++ b/src-web/components/core/Dropdown.tsx @@ -237,7 +237,7 @@ const Menu = forwardRef, MenuPro [handleClose], ); - useHotKey('dropdown.close', handleClose); + useHotKey('popup.close', handleClose); const handlePrev = useCallback(() => { setSelectedIndex((currIndex) => { diff --git a/src-web/hooks/useAppInfo.ts b/src-web/hooks/useAppInfo.ts new file mode 100644 index 00000000..c1a15896 --- /dev/null +++ b/src-web/hooks/useAppInfo.ts @@ -0,0 +1,10 @@ +import { useQuery } from '@tanstack/react-query'; +import * as app from '@tauri-apps/api/app'; +import * as path from '@tauri-apps/api/path'; + +export function useAppInfo() { + return useQuery(['appInfo'], async () => { + const [version, appDataDir] = await Promise.all([app.getVersion(), path.appDataDir()]); + return { version, appDataDir }; + }); +} diff --git a/src-web/hooks/useAppVersion.ts b/src-web/hooks/useAppVersion.ts deleted file mode 100644 index ae3a9518..00000000 --- a/src-web/hooks/useAppVersion.ts +++ /dev/null @@ -1,6 +0,0 @@ -import { useQuery } from '@tanstack/react-query'; -import { getVersion } from '@tauri-apps/api/app'; - -export function useAppVersion() { - return useQuery(['appVersion'], getVersion); -} diff --git a/src-web/hooks/useHotKey.ts b/src-web/hooks/useHotKey.ts index ce4ee25a..029ecf7f 100644 --- a/src-web/hooks/useHotKey.ts +++ b/src-web/hooks/useHotKey.ts @@ -5,7 +5,7 @@ import { debounce } from '../lib/debounce'; import { useOsInfo } from './useOsInfo'; export type HotkeyAction = - | 'dropdown.close' + | 'popup.close' | 'environmentEditor.toggle' | 'hotkeys.showHelp' | 'grpc_request.send' @@ -20,7 +20,7 @@ export type HotkeyAction = | 'urlBar.focus'; const hotkeys: Record = { - 'dropdown.close': ['Escape'], + 'popup.close': ['Escape'], 'environmentEditor.toggle': ['CmdCtrl+Shift+e'], 'grpc_request.send': ['CmdCtrl+Enter', 'CmdCtrl+r'], 'hotkeys.showHelp': ['CmdCtrl+Shift+/'], @@ -36,7 +36,7 @@ const hotkeys: Record = { }; const hotkeyLabels: Record = { - 'dropdown.close': 'Close Dropdown', + 'popup.close': 'Close Dropdown', 'environmentEditor.toggle': 'Edit Environments', 'grpc_request.send': 'Send Message', 'hotkeys.showHelp': 'Show Keyboard Shortcuts',