返回 oh-my-ppt
stylePreviewStore.ts
根目录 / src / renderer / src / store / stylePreviewStore.ts
1 import { create } from 'zustand'
2 import { ipc } from '@renderer/lib/ipc'
3
4 interface StylePreviewStore {
5 generatingStyleId: string
6 completionVersion: number
7 generatePreview: (styleId: string) => Promise<boolean>
8 }
9
10 export const useStylePreviewStore = create<StylePreviewStore>((set, get) => ({
11 generatingStyleId: '',
12 completionVersion: 0,
13
14 generatePreview: async (styleId) => {
15 if (get().generatingStyleId) return false
16 set({ generatingStyleId: styleId })
17 try {
18 await ipc.generateStylePreview({ styleId })
19 return true
20 } finally {
21 set((state) => ({
22 generatingStyleId: '',
23 completionVersion: state.completionVersion + 1
24 }))
25 }
26 }
27 }))
28
28 lines TYPESCRIPT