fix(timer): interval-store
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
import { create } from "zustand"
|
import { create } from "zustand"
|
||||||
|
import { persist } from "zustand/middleware"
|
||||||
|
|
||||||
interface TimerStore {
|
interface TimerStore {
|
||||||
timer: NodeJS.Timeout | null
|
timer: NodeJS.Timeout | null
|
||||||
@@ -37,34 +38,41 @@ interface IntervalStore {
|
|||||||
setAutoSaveGap: (autoSaveGap: number) => void
|
setAutoSaveGap: (autoSaveGap: number) => void
|
||||||
}
|
}
|
||||||
|
|
||||||
export const useIntervalStore = create<IntervalStore>((set, get) => ({
|
export const useIntervalStore = create<IntervalStore>()(
|
||||||
timer: null,
|
persist<IntervalStore>(
|
||||||
isAutoSave: false,
|
(set, get) => ({
|
||||||
autoSaveGap: 5,
|
timer: null,
|
||||||
startTimer: (fn, delay) => {
|
isAutoSave: false,
|
||||||
const { timer } = get()
|
autoSaveGap: 5,
|
||||||
if (timer !== null) {
|
startTimer: (fn, delay) => {
|
||||||
clearInterval(timer)
|
const { timer } = get()
|
||||||
|
if (timer !== null) {
|
||||||
|
clearInterval(timer)
|
||||||
|
}
|
||||||
|
const t = setInterval(() => {
|
||||||
|
fn()
|
||||||
|
}, delay)
|
||||||
|
set((state) => ({ ...state, timer: t }))
|
||||||
|
},
|
||||||
|
clearTimer: () => {
|
||||||
|
const { timer } = get()
|
||||||
|
if (timer !== null) {
|
||||||
|
clearInterval(timer)
|
||||||
|
set((state) => ({ ...state, timer: null }))
|
||||||
|
}
|
||||||
|
},
|
||||||
|
setIsAutoSave: (flag: boolean) => {
|
||||||
|
set((state) => ({ ...state, isAutoSave: flag }))
|
||||||
|
},
|
||||||
|
setAutoSaveGap: (value: number) => {
|
||||||
|
set((state) => ({ ...state, autoSaveGap: value }))
|
||||||
|
},
|
||||||
|
}),
|
||||||
|
{
|
||||||
|
name: "interval-store",
|
||||||
}
|
}
|
||||||
const t = setInterval(() => {
|
)
|
||||||
fn()
|
)
|
||||||
}, delay)
|
|
||||||
set((state) => ({ ...state, timer: t }))
|
|
||||||
},
|
|
||||||
clearTimer: () => {
|
|
||||||
const { timer } = get()
|
|
||||||
if (timer !== null) {
|
|
||||||
clearInterval(timer)
|
|
||||||
set((state) => ({ ...state, timer: null }))
|
|
||||||
}
|
|
||||||
},
|
|
||||||
setIsAutoSave: (flag: boolean) => {
|
|
||||||
set((state) => ({ ...state, isAutoSave: flag }))
|
|
||||||
},
|
|
||||||
setAutoSaveGap: (value: number) => {
|
|
||||||
set((state) => ({ ...state, autoSaveGap: value }))
|
|
||||||
},
|
|
||||||
}))
|
|
||||||
|
|
||||||
export interface LabelTimeState {
|
export interface LabelTimeState {
|
||||||
label: number
|
label: number
|
||||||
|
|||||||
Reference in New Issue
Block a user