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