aboutsummaryrefslogtreecommitdiff
path: root/src/conf/mutator.ts
diff options
context:
space:
mode:
authorKevin Hoerr <kjhoerr@noreply.cybr.es>2022-08-14 21:35:45 +0000
committerKevin Hoerr <kjhoerr@noreply.cybr.es>2022-08-14 21:35:45 +0000
commitc04674fa74c2e43535181431aef5d891f8839619 (patch)
tree2f7ce3b61590b39254bc22ac96272b7533ed96d2 /src/conf/mutator.ts
parent461b1fa053bcc86d06156574ab59fa7000dbf69e (diff)
downloadpantry-c04674fa74c2e43535181431aef5d891f8839619.tar.gz
pantry-c04674fa74c2e43535181431aef5d891f8839619.tar.bz2
pantry-c04674fa74c2e43535181431aef5d891f8839619.zip
Merge planner code (#3)
Reviewed-on: https://git.submelon.dev/kjhoerr/pantry/pulls/3
Diffstat (limited to 'src/conf/mutator.ts')
-rw-r--r--src/conf/mutator.ts29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/conf/mutator.ts b/src/conf/mutator.ts
new file mode 100644
index 0000000..74f29e3
--- /dev/null
+++ b/src/conf/mutator.ts
@@ -0,0 +1,29 @@
+import Axios, { AxiosError, AxiosRequestConfig } from "axios";
+
+export const AXIOS_PANTRY_INSTANCE = Axios.create({
+ baseURL: process.env.REACT_APP_API_SERVER!,
+});
+
+export const useMutator = <T>(): ((
+ config: AxiosRequestConfig
+) => Promise<T>) => {
+ return (config: AxiosRequestConfig) => {
+ const source = Axios.CancelToken.source();
+ const promise = AXIOS_PANTRY_INSTANCE({
+ ...config,
+ cancelToken: source.token,
+ }).then(({ data }) => data);
+
+ // @ts-ignore
+ promise.cancel = () => {
+ source.cancel("Query was cancelled by React Query!");
+ };
+
+ return promise;
+ };
+};
+
+export default useMutator;
+
+// In some case with react-query and swr you want to be able to override the return error type so you can also do it here like this
+export type ErrorType<Error> = AxiosError<Error>;