mirror of
https://github.com/remvze/moodist.git
synced 2025-09-29 15:30:49 -04:00
feat: persist presets
This commit is contained in:
parent
2484e01273
commit
38a9a23790
@ -1,6 +1,6 @@
|
||||
import { useEffect } from 'react';
|
||||
|
||||
import { useSoundStore, useNoteStore } from '@/store';
|
||||
import { useSoundStore, useNoteStore, usePresetStore } from '@/store';
|
||||
|
||||
interface StoreConsumerProps {
|
||||
children: React.ReactNode;
|
||||
@ -10,6 +10,7 @@ export function StoreConsumer({ children }: StoreConsumerProps) {
|
||||
useEffect(() => {
|
||||
useSoundStore.persist.rehydrate();
|
||||
useNoteStore.persist.rehydrate();
|
||||
usePresetStore.persist.rehydrate();
|
||||
}, []);
|
||||
|
||||
return <>{children}</>;
|
||||
|
@ -1,4 +1,6 @@
|
||||
import { create } from 'zustand';
|
||||
import { createJSONStorage, persist } from 'zustand/middleware';
|
||||
import merge from 'deepmerge';
|
||||
|
||||
interface PresetStore {
|
||||
addPreset: (label: string, sounds: Record<string, number>) => void;
|
||||
@ -10,7 +12,9 @@ interface PresetStore {
|
||||
}>;
|
||||
}
|
||||
|
||||
export const usePresetStore = create<PresetStore>()((set, get) => ({
|
||||
export const usePresetStore = create<PresetStore>()(
|
||||
persist(
|
||||
(set, get) => ({
|
||||
addPreset(label: string, sounds: Record<string, number>) {
|
||||
set({ presets: [{ label, sounds }, ...get().presets] });
|
||||
},
|
||||
@ -30,4 +34,19 @@ export const usePresetStore = create<PresetStore>()((set, get) => ({
|
||||
},
|
||||
|
||||
presets: [],
|
||||
}));
|
||||
}),
|
||||
{
|
||||
merge: (persisted, current) =>
|
||||
merge(
|
||||
current,
|
||||
// @ts-ignore
|
||||
persisted,
|
||||
),
|
||||
name: 'moodist-presets',
|
||||
partialize: state => ({ presets: state.presets }),
|
||||
skipHydration: true,
|
||||
storage: createJSONStorage(() => localStorage),
|
||||
version: 0,
|
||||
},
|
||||
),
|
||||
);
|
||||
|
Loading…
x
Reference in New Issue
Block a user