A bunch of improvements to chaining

This commit is contained in:
Gregory Schier
2024-08-19 14:10:44 -07:00
parent 3411575ecc
commit bd02206df2
23 changed files with 218 additions and 82 deletions

View File

@@ -1,7 +1,7 @@
import { useEffect } from 'react';
import { useDebouncedState } from './useDebouncedState';
export function useDebouncedValue<T>(value: T, delay?: number) {
export function useDebouncedValue<T>(value: T, delay = 500) {
const [state, setState] = useDebouncedState<T>(value, delay);
useEffect(() => setState(value), [setState, value]);
return state;

View File

@@ -1,19 +1,11 @@
import { useQuery } from '@tanstack/react-query';
import { useAtomValue } from 'jotai';
import { atom } from 'jotai/index';
import type { Settings } from '../lib/models/Settings';
import { invokeCmd } from '../lib/tauri';
import { getSettings } from '../lib/store';
export function settingsQueryKey() {
return ['settings'];
}
const settings = await getSettings();
export const settingsAtom = atom<Settings>(settings);
export function useSettings() {
return (
useQuery({
queryKey: settingsQueryKey(),
queryFn: async () => {
const settings = (await invokeCmd('cmd_get_settings')) as Settings;
return [settings];
},
}).data?.[0] ?? undefined
);
return useAtomValue(settingsAtom);
}

View File

@@ -1,15 +1,13 @@
import { useMutation } from '@tanstack/react-query';
import type { Settings } from '../lib/models';
import { getSettings } from '../lib/store';
import { invokeCmd } from '../lib/tauri';
import { useSettings } from './useSettings';
export function useUpdateSettings() {
const settings = useSettings();
return useMutation<void, unknown, Partial<Settings>>({
mutationKey: ['update_settings'],
mutationFn: async (patch) => {
if (settings == null) return;
const settings = await getSettings();
const newSettings: Settings = { ...settings, ...patch };
await invokeCmd('cmd_update_settings', { settings: newSettings });
},