@keycloakify/keycloak-admin-ui
Version:
Repackaged Keycloak Admin UI
34 lines • 1.57 kB
JavaScript
import { jsx as _jsx } from "react/jsx-runtime";
import { NetworkError } from "@keycloak/keycloak-admin-client";
import { createNamedContext, useFetch, useRequiredContext, } from "../../ui-shared";
import { useCallback, useState } from "react";
import { useAdminClient } from "../../admin-client";
import { KeycloakSpinner } from "../../ui-shared";
import { sortProviders } from "../../util";
export const ServerInfoContext = createNamedContext("ServerInfoContext", undefined);
export const useServerInfo = () => useRequiredContext(ServerInfoContext);
export const useLoginProviders = () => sortProviders(useServerInfo().providers["login-protocol"].providers);
export const ServerInfoProvider = ({ children }) => {
const { adminClient } = useAdminClient();
const [serverInfo, setServerInfo] = useState();
const findServerInfo = useCallback(async () => {
var _a;
try {
const serverInfo = await adminClient.serverInfo.find();
return serverInfo;
}
catch (error) {
// The user is not allowed to view the server info
if (error instanceof NetworkError && ((_a = error.response) === null || _a === void 0 ? void 0 : _a.status) === 403) {
return {};
}
throw error;
}
}, []);
useFetch(findServerInfo, setServerInfo, []);
if (!serverInfo) {
return _jsx(KeycloakSpinner, {});
}
return (_jsx(ServerInfoContext.Provider, { value: serverInfo, children: children }));
};
//# sourceMappingURL=ServerInfoProvider.js.map