diff --git a/src/renderer/src/hooks/usePendingMap.ts b/src/renderer/src/hooks/usePendingMap.ts new file mode 100644 index 0000000000..3cc293941a --- /dev/null +++ b/src/renderer/src/hooks/usePendingMap.ts @@ -0,0 +1,31 @@ +import { useCache } from '@data/hooks/useCache' +import { useCallback } from 'react' + +export const usePendingMap = () => { + const [pendingMap, setPendingMap] = useCache('app.pending_map') + + const setPending = useCallback( + (id: string, value: boolean | undefined) => { + if (value !== undefined) { + setPendingMap({ + ...pendingMap, + [id]: value + }) + } else { + const newMap = { ...pendingMap } + delete newMap[id] + setPendingMap(newMap) + } + }, + [pendingMap, setPendingMap] + ) + + const isPending = useCallback( + (id: string) => { + return pendingMap[id] + }, + [pendingMap] + ) + + return { pendingMap, setPending, isPending } +}