autumn-js
Version:
Autumn JS Library
95 lines (91 loc) • 2.11 kB
JavaScript
"use client";
import {
useAutumnBase
} from "./chunk-BMS5CSTF.mjs";
import {
handleCheck,
openDialog
} from "./chunk-HNIQ4O6H.mjs";
import {
useAutumnContext
} from "./chunk-OYO7LPVB.mjs";
// src/libraries/react/hooks/useEntityBase.tsx
import useSWR from "swr";
import { useContext } from "react";
var useEntityBase = ({
entityId,
params,
AutumnContext
}) => {
const { client } = useContext(AutumnContext);
const queryKey = ["entity", entityId, params?.expand];
const context = useAutumnContext({
AutumnContext,
name: "useEntity"
});
const fetchEntity = async () => {
if (!entityId) {
return null;
}
const { data: data2, error: error2 } = await client.entities.get(entityId, params);
if (error2) {
throw error2;
}
if (!data2) {
return null;
}
return data2;
};
const { data, error, isLoading, mutate } = useSWR(queryKey, fetchEntity, {
fallbackData: null,
shouldRetryOnError: false,
onErrorRetry: (error2, key, config) => {
if (error2.code == "entity_not_found") {
return false;
}
return true;
}
});
const {
attach: attachAutumn,
cancel: cancelAutumn,
track: trackAutumn
} = useAutumnBase({ context, client });
const check = (params2) => {
const result = handleCheck({ customer: data, params: params2, isEntity: true });
openDialog({
result: result.data,
params: params2,
context
});
return result;
};
const attach = (params2) => attachAutumn({ ...params2, entityId: entityId || void 0 });
const cancel = (params2) => cancelAutumn({ ...params2, entityId: entityId || void 0 });
const track = (params2) => trackAutumn({ ...params2, entityId: entityId || void 0 });
if (!entityId) {
return {
entity: null,
isLoading: false,
error: null,
refetch: mutate,
check,
attach,
cancel,
track
};
}
return {
entity: error ? null : data,
isLoading,
error,
refetch: mutate,
check,
attach,
cancel,
track
};
};
export {
useEntityBase
};