Files
clash-web/web/src/composables/task.ts
T

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