diff --git a/app/soapbox/entity-store/hooks/useEntityRequest.ts b/app/soapbox/entity-store/hooks/useEntityRequest.ts new file mode 100644 index 000000000..7d2697e61 --- /dev/null +++ b/app/soapbox/entity-store/hooks/useEntityRequest.ts @@ -0,0 +1,30 @@ +import { useState } from 'react'; + +import { useApi } from 'soapbox/hooks'; + +import { EntityRequest } from './types'; +import { toAxiosRequest } from './utils'; + +function useEntityRequest() { + const api = useApi(); + const [isLoading, setIsLoading] = useState(false); + + async function request(entityRequest: EntityRequest) { + setIsLoading(true); + try { + const response = await api.request(toAxiosRequest(entityRequest)); + setIsLoading(false); + return response; + } catch (e) { + setIsLoading(false); + throw e; + } + } + + return { + request, + isLoading, + }; +} + +export { useEntityRequest }; \ No newline at end of file