update BiProvider

This commit is contained in:
Mohamadzadeh 2026-06-14 11:54:06 +03:30
parent ecd210dc3b
commit f3483580f1
2 changed files with 395 additions and 353 deletions

677
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -10,40 +10,59 @@ import { Fonts, theme } from "../core/style.jsx";
export function BiProvider({
children,
apiBaseUrl,
keycloakClientId,
permissionClientId,
loading = <Spinner />,
updateChecker = true,
updateChecker = false,
updateCheckerProps,
keycloakUrl = "https://auth.ibagher.ir",
keycloakRealm = "bi",
permissionUrl = "https://api.d.aiengines.ir/user_api/v1/permissions/list",
keycloakEnabled,
permissionEnabled,
}) {
const [mounted, setMounted] = useState(false);
const shouldUseKeycloak = keycloakEnabled ?? Boolean(keycloakClientId);
const shouldUsePermission = permissionEnabled ?? Boolean(permissionClientId);
const config = useMemo(
() => ({
api: {
baseUrl: apiBaseUrl,
baseUrl: apiBaseUrl || "",
},
keycloak: {
keycloak: shouldUseKeycloak
? {
url: keycloakUrl,
realm: keycloakRealm,
clientId: keycloakClientId,
},
permission: {
}
: null,
permission: shouldUsePermission
? {
url: permissionUrl,
clientId: permissionClientId,
},
}
: null,
}),
[
apiBaseUrl,
keycloakClientId,
permissionClientId,
shouldUseKeycloak,
shouldUsePermission,
keycloakUrl,
keycloakRealm,
keycloakClientId,
permissionUrl,
permissionClientId,
],
);
@ -61,16 +80,32 @@ export function BiProvider({
return null;
}
let content = children;
if (shouldUsePermission) {
content = (
<PermissionProvider config={config.permission} loading={loading}>
{content}
</PermissionProvider>
);
}
if (shouldUseKeycloak) {
content = (
<KeycloakProvider config={config.keycloak} loading={loading}>
{content}
</KeycloakProvider>
);
}
return (
<ChakraProvider theme={theme}>
<Fonts />
<QueryClientProvider client={queryClient}>
{updateChecker && <UpdateChecker {...updateCheckerProps} />}
<KeycloakProvider config={config.keycloak} loading={loading}>
<PermissionProvider config={config.permission} loading={loading}>
{children}
</PermissionProvider>
</KeycloakProvider>
{content}
</QueryClientProvider>
</ChakraProvider>
);