Grabbed dndbeyond's source code

```
~/go/bin/sourcemapper -output ddb -jsurl https://media.dndbeyond.com/character-app/static/js/main.90aa78c5.js
```
This commit is contained in:
2025-05-28 11:50:03 -07:00
commit 8df9031d27
3592 changed files with 319051 additions and 0 deletions
+48
View File
@@ -0,0 +1,48 @@
import { useCallback, useState } from "react";
const identity = (x) => x;
/**
* Hook that encapsulates loading/error state setting when calling an API promise
* Usage:
* const [
* doThing, // callback to invoke to initiate the API call
* isDoingThing, // boolean indicating if the API call is in progress
* errorDoingThing, // error object indicating if there was an error caught (whatever param is passed to the .catch() callback)
* ] = useApiCall(MyApiUtils.doThing);
* @param {function} apiFunc The API function to use for setting loading/error state - Must return a promise!
* @param {function} [onSuccess] Optional callback invoked if the apiFunc promise succeeds
* @returns {[function, boolean, any]} An array containing a callback to initiate the API call, a isLoading boolean, and an error object
*/
const useApiCall = (apiFunc, onSuccess = identity) => {
const [isLoading, setIsLoading] = useState(false);
const [error, setError] = useState(null);
const makeCall = useCallback(
(...args) => {
setIsLoading(true);
setError(null);
apiFunc(...args)
.then(onSuccess)
.then(() => {
setIsLoading(false);
})
.catch((err) => {
setIsLoading(false);
setError(err);
});
},
[apiFunc, onSuccess]
);
return [
makeCall as (...args: any[]) => void,
isLoading as boolean,
error as any,
];
};
export default useApiCall;