fix(timer): interval-store

This commit is contained in:
zhangheng
2026-04-08 17:13:15 +08:00
parent 8c18cc2b78
commit 8a2bc25c8d

View File

@@ -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