export function useLongTask() { const isRunning = ref(false); const lastError = shallowRef(); const startTask = async (task: () => Promise) => { if (isRunning.value) { throw Error('Task is still running.'); } isRunning.value = true; lastError.value = undefined; let result = undefined; try { result = await task(); } catch (error) { lastError.value = error; console.error('Task failed:', error); } isRunning.value = false; return result as T; }; return { isRunning, lastError, startTask, }; }