Adding multi tenant check and Starting firm initialization

This commit is contained in:
2025-04-12 18:12:56 +02:00
parent 9ef599bbd5
commit c7e946f963
14 changed files with 205 additions and 39 deletions

View File

@@ -55,7 +55,7 @@ function App() {
queries: {
retry: (failureCount, error) => {
// @ts-ignore
if (error.status >= 400 && error.status <= 499) {
if (error.statusCode >= 400 && error.statusCode <= 499) {
return false
}
return failureCount < 4

View File

@@ -2,6 +2,9 @@ import {Route, Routes} from "react-router";
import React, { useContext } from "react";
import { FirmContext, FirmContextProvider } from "../../contexts/FirmContext";
import { Header } from "../../components";
import { useOne } from "@refinedev/core";
import { CrudForm } from "../../lib/crud/components/crud-form";
import { IFirm } from "../../interfaces";
export const FirmRoutes = () => {
return (
@@ -22,7 +25,31 @@ export const FirmRoutes = () => {
const FirmHome = () => {
const { currentFirm } = useContext(FirmContext);
const { data: firm, isError, error, isLoading } = useOne({resource: 'firm', id: `${currentFirm.instance}/${currentFirm.firm}`, errorNotification: false})
if (isLoading) {
return <h1>Loading...</h1>
}
if (isError && error?.statusCode == 405) {
return <FirmInitForm currentFirm={currentFirm} />
}
return (
<h1>This is la firme {currentFirm.instance} / {currentFirm.firm}</h1>
);
}
type FirmInitFormPros = {
currentFirm: IFirm
}
const FirmInitForm = (props: FirmInitFormPros) => {
const { currentFirm } = props;
return (
<>
<h1>Initialization of {`${currentFirm.instance} / ${currentFirm.firm}`}</h1>
<CrudForm schemaName={"CurrentFirmSchemaCreate"} resource={`/firm/${currentFirm.instance}/${currentFirm.firm}`} />
</>
)
}

View File

@@ -1,11 +1,20 @@
import type { DataProvider } from "@refinedev/core";
import type { DataProvider, HttpError } from "@refinedev/core";
const API_URL = "/api/v1";
export const dataProvider: DataProvider = {
getOne: async ({ resource, id, meta }) => {
const response = id !== "" ? await fetch(`${API_URL}/${resource}/${id}`) : await fetch(`${API_URL}/${resource}`);
if (response.status < 200 || response.status > 299) throw response;
if (response.status < 200 || response.status > 299) {
if (response.status == 405) {
const error: HttpError = {
message: "Resource is not ready",
statusCode: 405,
};
return Promise.reject(error);
}
throw response;
}
const data = await response.json();
@@ -22,8 +31,16 @@ export const dataProvider: DataProvider = {
},
});
if (response.status < 200 || response.status > 299) throw response;
if (response.status < 200 || response.status > 299) {
if (response.status == 405) {
const error: HttpError = {
message: "Resource is not ready",
statusCode: 405,
};
return Promise.reject(error);
}
throw response;
}
const data = await response.json();
return { data };
@@ -51,7 +68,16 @@ export const dataProvider: DataProvider = {
const response = await fetch(`${API_URL}/${resource}?${params.toString()}`);
if (response.status < 200 || response.status > 299) throw response;
if (response.status < 200 || response.status > 299) {
if (response.status == 405) {
const error: HttpError = {
message: "Resource is not ready",
statusCode: 405,
};
return Promise.reject(error);
}
throw response;
}
const data = await response.json();
@@ -75,7 +101,16 @@ export const dataProvider: DataProvider = {
},
});
if (response.status < 200 || response.status > 299) throw response;
if (response.status < 200 || response.status > 299) {
if (response.status == 405) {
const error: HttpError = {
message: "Resource is not ready",
statusCode: 405,
};
return Promise.reject(error);
}
throw response;
}
const data = await response.json();
@@ -86,7 +121,16 @@ export const dataProvider: DataProvider = {
method: "DELETE",
});
if (response.status < 200 || response.status > 299) throw response;
if (response.status < 200 || response.status > 299) {
if (response.status == 405) {
const error: HttpError = {
message: "Resource is not ready",
statusCode: 405,
};
return Promise.reject(error);
}
throw response;
}
const data = await response.json();