RuralDatabase/apps/web/composables/stores/notice.ts

55 lines
1.6 KiB
TypeScript
Raw Normal View History

2024-06-30 21:39:37 +08:00
export interface Notice {
state: "loading" | "pending" | "error" | "success"
title: string
desc: string
time: Date
}
export const useNoticeStore = defineStore('notice', {
state: (): {
notices: Notice[]
} => ({
notices: [],
}),
actions: {
update(title: string, desc: string, state: "loading" | "pending" | "error" | "success") {
const index = this.notices.findIndex((i) => i.title === title)
if (index !== -1) {
this.notices.splice(index, 1, { state: "loading", title, desc, time: new Date() })
}
},
noticePending(title: string, desc: string) {
this.notices.push({ state: "pending", title, desc, time: new Date() })
},
async filesPending(path: string, files: File[]) {
files.map((file) => {
this.noticePending(file.name, `${merticKB(file.size)}${file.type}`)
})
},
// async filesUpload() {
// const res = await bucketApi.detail.uploadUrl({ Path: path })
// for (const file of Array.from(files)) {
// try {
// this.update(file.name, `${merticKB(file.size)}${file.type},文件上传中...`, 'loading')
// await bucketApi.detail.upload(file, res.url, res.token)
// } catch (e: any) {
// // 单个文件上传失败报错信息
// this.update(file.name, `${merticKB(file.size)}${file.type},文件上传失败!`, 'error')
// }
// }
// }
},
persist: {
storage: persistedState.sessionStorage
}
})
// @ts-ignore
if (import.meta.hot)
// @ts-ignore
import.meta.hot.accept(acceptHMRUpdate(useUserStore, import.meta.hot))