16 lines
514 B
TypeScript
16 lines
514 B
TypeScript
import { ref } from 'vue'
|
|
import { useMessage } from 'naive-ui'
|
|
|
|
export function useTask() {
|
|
const busy = ref(false)
|
|
const message = useMessage()
|
|
async function run(task: () => Promise<unknown>, success?: string) {
|
|
if (busy.value) return false
|
|
busy.value = true
|
|
try { await task(); if (success) message.success(success); return true }
|
|
catch (e) { message.error((e as Error).message, { duration: 6000 }); return false }
|
|
finally { busy.value = false }
|
|
}
|
|
return { busy, run, message }
|
|
}
|