38 lines
1.1 KiB
TypeScript
38 lines
1.1 KiB
TypeScript
import {create} from "zustand";
|
|
|
|
type ExtensionState = {
|
|
isInstalled: boolean;
|
|
// 中文备注:是否已完成“检测扩展是否安装”的流程(避免页面刚刷新时先闪一下“安装扩展”卡片)
|
|
checked: boolean;
|
|
isFirst: boolean;
|
|
isFetching: boolean;
|
|
lastScanError: string;
|
|
extensionInfo: ExtensionInfo;
|
|
setInstalled: (status: boolean) => void;
|
|
setChecked: (value: boolean) => void;
|
|
setFetching: (status: boolean) => void;
|
|
setLastScanError: (message: string) => void;
|
|
}
|
|
|
|
type ExtensionInfo = {
|
|
downloadUrl: string;
|
|
chromeUrl: string;
|
|
}
|
|
|
|
const useExtensionStore = create<ExtensionState>((set) => ({
|
|
isInstalled: false,
|
|
checked: false,
|
|
isFirst: true,
|
|
isFetching: false,
|
|
lastScanError: "",
|
|
extensionInfo: {
|
|
downloadUrl: "/extensions/storeai-extension-v0.1.4.zip",
|
|
chromeUrl:"chrome://extensions"
|
|
},
|
|
setInstalled: (value) => set({isInstalled: value}),
|
|
setChecked: (value) => set({checked: value}),
|
|
setFetching: (value) => set({isFetching: value}),
|
|
setLastScanError: (value) => set({lastScanError: value}),
|
|
}))
|
|
export default useExtensionStore
|