Admin App Generator is a package for generating strongly typed components from backend admin contracts. It uses schema
and api factory generated by admin
and client
plugins of
Contracts Generator It
relies on Ant Design and
react-query-cqrs-client.
import { createApiComponents } from "@leancodepl/admin"; // function that generates strongly typed components
import { QueryClient } from "@tanstack/react-query";
import schema from "./api-components-schema"; // schema of api components generated by "admin" plugin
import cqrs from "./cqrs"; // api factory generated by "client" plugin
import { loginManager } from "../services/loginManager";
export type ReactQueryCqrs = ReturnType<typeof mkCqrsClient>;
export const tokenProvider: TokenProvider = {
getToken: () => loginManager.getToken().then(t => (t ? `Bearer ${t}` : undefined)),
invalidateToken: () => loginManager.tryRefreshToken().then(r => r ?? false),
};
export const queryClient = new QueryClient({
defaultOptions: {
queries: {
retry: 3,
},
},
});
const cqrsAdminClientConfig = {
cqrsEndpoint: "api.local.lncd.pl",
queryClient,
tokenProvider,
};
// Generated dictionary of Api Components
export const apiComponents = createApiComponents(schema, { cqrsClientConfig: cqrsAdminClientConfig, cqrs });
export function HomePage() {
return (
<apiComponents.TenantsListApiTable
NameRender={(_, { id, name }) => <>{name} - {id}</>}
pagination={{ defaultPageSize: 20 }}
rowKey={({ id }) => id}
/>
);
}