mirror of
https://github.com/movie-web/movie-web.git
synced 2025-02-11 11:18:55 +01:00
32 lines
638 B
TypeScript
32 lines
638 B
TypeScript
![]() |
import { StateCreator, create } from "zustand";
|
||
|
import { persist } from "zustand/middleware";
|
||
|
import { immer } from "zustand/middleware/immer";
|
||
|
|
||
|
export interface VolumeStore {
|
||
|
volume: number;
|
||
|
setVolume(v: number): void;
|
||
|
}
|
||
|
|
||
|
export type VolumeState = StateCreator<
|
||
|
VolumeStore,
|
||
|
[["zustand/persist", never]],
|
||
|
[]
|
||
|
>;
|
||
|
|
||
|
// TODO add migration from previous stored volume
|
||
|
export const useVolumeStore: VolumeState = create(
|
||
|
persist(
|
||
|
immer<VolumeStore>((set) => ({
|
||
|
volume: 1,
|
||
|
setVolume(v: number) {
|
||
|
set((s) => {
|
||
|
s.volume = v;
|
||
|
});
|
||
|
},
|
||
|
})),
|
||
|
{
|
||
|
name: "__MW::volume",
|
||
|
}
|
||
|
)
|
||
|
);
|