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 { useEffect } from 'react';
|
||||||
|
|
||||||
import { useSoundStore, useNoteStore } from '@/store';
|
import { useSoundStore, useNoteStore, usePresetStore } from '@/store';
|
||||||
|
|
||||||
interface StoreConsumerProps {
|
interface StoreConsumerProps {
|
||||||
children: React.ReactNode;
|
children: React.ReactNode;
|
||||||
@ -10,6 +10,7 @@ export function StoreConsumer({ children }: StoreConsumerProps) {
|
|||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
useSoundStore.persist.rehydrate();
|
useSoundStore.persist.rehydrate();
|
||||||
useNoteStore.persist.rehydrate();
|
useNoteStore.persist.rehydrate();
|
||||||
|
usePresetStore.persist.rehydrate();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
return <>{children}</>;
|
return <>{children}</>;
|
||||||
|
@ -1,4 +1,6 @@
|
|||||||
import { create } from 'zustand';
|
import { create } from 'zustand';
|
||||||
|
import { createJSONStorage, persist } from 'zustand/middleware';
|
||||||
|
import merge from 'deepmerge';
|
||||||
|
|
||||||
interface PresetStore {
|
interface PresetStore {
|
||||||
addPreset: (label: string, sounds: Record<string, number>) => void;
|
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>) {
|
addPreset(label: string, sounds: Record<string, number>) {
|
||||||
set({ presets: [{ label, sounds }, ...get().presets] });
|
set({ presets: [{ label, sounds }, ...get().presets] });
|
||||||
},
|
},
|
||||||
@ -30,4 +34,19 @@ export const usePresetStore = create<PresetStore>()((set, get) => ({
|
|||||||
},
|
},
|
||||||
|
|
||||||
presets: [],
|
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