21 lines
653 B
TypeScript
21 lines
653 B
TypeScript
type TaskHandle = number
|
|
|
|
export const useTasks = () => {
|
|
const taskQueue = useState<Set<number>>('spinner:taskQueue', () => new Set())
|
|
const taskId = useState<number>('spinner:taskId', () => 1)
|
|
const hasTasks = computed(() => taskQueue.value.size > 0)
|
|
|
|
const addTask = (): TaskHandle => {
|
|
const handle = taskId.value++
|
|
taskQueue.value = new Set(taskQueue.value).add(handle)
|
|
return handle
|
|
}
|
|
|
|
const completeTask = (handle: TaskHandle) => {
|
|
const newSet = new Set(taskQueue.value)
|
|
newSet.delete(handle)
|
|
taskQueue.value = newSet
|
|
}
|
|
|
|
return { hasTasks, addTask, completeTask }
|
|
} |