Newer
Older
// @ts-strict-ignore
Matiss Janis Aboltins
committed
import { useEffect, useState } from 'react';
import { send } from 'loot-core/src/platform/client/fetch';
import type { Handlers } from 'loot-core/src/types/handlers';
Joel Jeremy Marquez
committed
export function useSendPlatformRequest<K extends keyof Handlers>(
Matiss Janis Aboltins
committed
name: K,
args?: Parameters<Handlers[K]>[0],
options?: { catchErrors?: boolean },
) {
const [data, setData] = useState<Awaited<ReturnType<Handlers[K]>>>(null);
Matiss Janis Aboltins
committed
const [isLoading, setIsLoading] = useState<boolean | null>(null);
useEffect(() => {
async function run() {
setIsLoading(true);
setData(await send(name, args, options));
setIsLoading(false);
}
run();
}, [name, args, options]);
return {
data,
isLoading,
};
}