refactor(guest): retire legacy guest app and move shared modules
This commit is contained in:
47
resources/js/shared/guest/queue/hooks.ts
Normal file
47
resources/js/shared/guest/queue/hooks.ts
Normal file
@@ -0,0 +1,47 @@
|
||||
import React from 'react';
|
||||
import { enqueue, list, processQueue, clearDone, remove, type QueueItem } from './queue';
|
||||
|
||||
export function useUploadQueue() {
|
||||
const [items, setItems] = React.useState<QueueItem[]>([]);
|
||||
const [loading, setLoading] = React.useState(true);
|
||||
|
||||
const refresh = React.useCallback(async () => {
|
||||
setLoading(true);
|
||||
const all = await list();
|
||||
setItems(all);
|
||||
setLoading(false);
|
||||
}, []);
|
||||
|
||||
const add = React.useCallback(async (it: Parameters<typeof enqueue>[0]) => {
|
||||
await enqueue(it);
|
||||
await refresh();
|
||||
await processQueue();
|
||||
}, [refresh]);
|
||||
|
||||
const retryAll = React.useCallback(async () => {
|
||||
await processQueue();
|
||||
await refresh();
|
||||
}, [refresh]);
|
||||
|
||||
const clearFinished = React.useCallback(async () => {
|
||||
await clearDone();
|
||||
await refresh();
|
||||
}, [refresh]);
|
||||
|
||||
const removeItem = React.useCallback(
|
||||
async (id: number) => {
|
||||
await remove(id);
|
||||
await refresh();
|
||||
},
|
||||
[refresh]
|
||||
);
|
||||
|
||||
React.useEffect(() => {
|
||||
refresh();
|
||||
const online = () => processQueue().then(refresh);
|
||||
window.addEventListener('online', online);
|
||||
return () => window.removeEventListener('online', online);
|
||||
}, [refresh]);
|
||||
|
||||
return { items, loading, refresh, add, retryAll, clearFinished, remove: removeItem } as const;
|
||||
}
|
||||
Reference in New Issue
Block a user