renamed useFetch to asyncStateFetch (#277)

* renamed `useFetch` to `asyncStateFetch`

otherwise React will mistake it for a react hook and will complain.

* added jsdoc

* fixed the user red stories

* renamed
This commit is contained in:
Erik Jan de Wit 2021-01-11 19:56:19 +01:00 committed by GitHub
parent 1763ee1a50
commit feca61d2b0
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
25 changed files with 113 additions and 49 deletions

View file

@ -19,7 +19,7 @@ import { routes, RouteDef } from "./route-config";
import { PageBreadCrumbs } from "./components/bread-crumb/PageBreadCrumbs"; import { PageBreadCrumbs } from "./components/bread-crumb/PageBreadCrumbs";
import { ForbiddenSection } from "./ForbiddenSection"; import { ForbiddenSection } from "./ForbiddenSection";
import { useRealm } from "./context/realm-context/RealmContext"; import { useRealm } from "./context/realm-context/RealmContext";
import { useAdminClient, useFetch } from "./context/auth/AdminClient"; import { useAdminClient, asyncStateFetch } from "./context/auth/AdminClient";
// This must match the id given as scrollableSelector in scroll-form // This must match the id given as scrollableSelector in scroll-form
const mainPageContentId = "kc-main-content-page-container"; const mainPageContentId = "kc-main-content-page-container";
@ -41,7 +41,7 @@ const RealmPathSelector = ({ children }: { children: ReactNode }) => {
const adminClient = useAdminClient(); const adminClient = useAdminClient();
useEffect( useEffect(
() => () =>
useFetch( asyncStateFetch(
() => adminClient.realms.find(), () => adminClient.realms.find(),
(realms) => { (realms) => {
if (realms.findIndex((r) => r.realm == realm) !== -1) { if (realms.findIndex((r) => r.realm == realm) !== -1) {

View file

@ -24,7 +24,10 @@ import ClientRepresentation from "keycloak-admin/lib/defs/clientRepresentation";
import ProtocolMapperRepresentation from "keycloak-admin/lib/defs/protocolMapperRepresentation"; import ProtocolMapperRepresentation from "keycloak-admin/lib/defs/protocolMapperRepresentation";
import { useAlerts } from "../../components/alert/Alerts"; import { useAlerts } from "../../components/alert/Alerts";
import { RealmContext } from "../../context/realm-context/RealmContext"; import { RealmContext } from "../../context/realm-context/RealmContext";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { ViewHeader } from "../../components/view-header/ViewHeader"; import { ViewHeader } from "../../components/view-header/ViewHeader";
import { HelpItem } from "../../components/help-enabler/HelpItem"; import { HelpItem } from "../../components/help-enabler/HelpItem";
@ -47,7 +50,7 @@ export const RoleMappingForm = () => {
const [clientRoles, setClientRoles] = useState<RoleRepresentation[]>([]); const [clientRoles, setClientRoles] = useState<RoleRepresentation[]>([]);
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
const clients = await adminClient.clients.find(); const clients = await adminClient.clients.find();
@ -76,7 +79,7 @@ export const RoleMappingForm = () => {
}, []); }, []);
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
const client = selectedClient as ClientRepresentation; const client = selectedClient as ClientRepresentation;
if (client && client.name !== "realmRoles") { if (client && client.name !== "realmRoles") {

View file

@ -24,7 +24,10 @@ import { ConfigPropertyRepresentation } from "keycloak-admin/lib/defs/configProp
import ProtocolMapperRepresentation from "keycloak-admin/lib/defs/protocolMapperRepresentation"; import ProtocolMapperRepresentation from "keycloak-admin/lib/defs/protocolMapperRepresentation";
import { ViewHeader } from "../../components/view-header/ViewHeader"; import { ViewHeader } from "../../components/view-header/ViewHeader";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { Controller, useForm } from "react-hook-form"; import { Controller, useForm } from "react-hook-form";
import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog";
import { useAlerts } from "../../components/alert/Alerts"; import { useAlerts } from "../../components/alert/Alerts";
@ -56,7 +59,7 @@ export const MappingDetails = () => {
const isGuid = /^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$/; const isGuid = /^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$/;
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
if (id.match(isGuid)) { if (id.match(isGuid)) {
const data = await adminClient.clientScopes.findProtocolMapper({ const data = await adminClient.clientScopes.findProtocolMapper({

View file

@ -22,7 +22,10 @@ import { Controller, useForm } from "react-hook-form";
import ClientScopeRepresentation from "keycloak-admin/lib/defs/clientScopeRepresentation"; import ClientScopeRepresentation from "keycloak-admin/lib/defs/clientScopeRepresentation";
import { HelpItem } from "../../components/help-enabler/HelpItem"; import { HelpItem } from "../../components/help-enabler/HelpItem";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useAlerts } from "../../components/alert/Alerts"; import { useAlerts } from "../../components/alert/Alerts";
import { useLoginProviders } from "../../context/server-info/ServerInfoProvider"; import { useLoginProviders } from "../../context/server-info/ServerInfoProvider";
import { ViewHeader } from "../../components/view-header/ViewHeader"; import { ViewHeader } from "../../components/view-header/ViewHeader";
@ -49,7 +52,7 @@ export const ClientScopeForm = () => {
const refresh = () => setKey(new Date().getTime()); const refresh = () => setKey(new Date().getTime());
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
if (id) { if (id) {
const data = await adminClient.clientScopes.findOne({ id }); const data = await adminClient.clientScopes.findOne({ id });

View file

@ -19,7 +19,7 @@ import { useAlerts } from "../components/alert/Alerts";
import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog";
import { useDownloadDialog } from "../components/download-dialog/DownloadDialog"; import { useDownloadDialog } from "../components/download-dialog/DownloadDialog";
import { ViewHeader } from "../components/view-header/ViewHeader"; import { ViewHeader } from "../components/view-header/ViewHeader";
import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useAdminClient, asyncStateFetch } from "../context/auth/AdminClient";
import { Credentials } from "./credentials/Credentials"; import { Credentials } from "./credentials/Credentials";
import { import {
convertFormValuesToObject, convertFormValuesToObject,
@ -144,7 +144,7 @@ export const ClientDetails = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.clients.findOne({ id }), () => adminClient.clients.findOne({ id }),
(fetchedClient) => { (fetchedClient) => {
setClient(fetchedClient); setClient(fetchedClient);

View file

@ -22,7 +22,10 @@ import { useAlerts } from "../../components/alert/Alerts";
import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog"; import { useConfirmDialog } from "../../components/confirm-dialog/ConfirmDialog";
import { HelpItem } from "../../components/help-enabler/HelpItem"; import { HelpItem } from "../../components/help-enabler/HelpItem";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { ClientSecret } from "./ClientSecret"; import { ClientSecret } from "./ClientSecret";
import { SignedJWT } from "./SignedJWT"; import { SignedJWT } from "./SignedJWT";
import { X509 } from "./X509"; import { X509 } from "./X509";
@ -64,7 +67,7 @@ export const Credentials = ({ clientId, form, save }: CredentialsProps) => {
const [open, isOpen] = useState(false); const [open, isOpen] = useState(false);
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
const providers = await adminClient.authenticationManagement.getClientAuthenticatorProviders( const providers = await adminClient.authenticationManagement.getClientAuthenticatorProviders(
{ id: clientId } { id: clientId }

View file

@ -23,7 +23,10 @@ import { FilterIcon } from "@patternfly/react-icons";
import ClientScopeRepresentation from "keycloak-admin/lib/defs/clientScopeRepresentation"; import ClientScopeRepresentation from "keycloak-admin/lib/defs/clientScopeRepresentation";
import KeycloakAdminClient from "keycloak-admin"; import KeycloakAdminClient from "keycloak-admin";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { TableToolbar } from "../../components/table-toolbar/TableToolbar"; import { TableToolbar } from "../../components/table-toolbar/TableToolbar";
import { ListEmptyState } from "../../components/list-empty-state/ListEmptyState"; import { ListEmptyState } from "../../components/list-empty-state/ListEmptyState";
import { AddScopeDialog } from "./AddScopeDialog"; import { AddScopeDialog } from "./AddScopeDialog";
@ -137,7 +140,7 @@ export const ClientScopes = ({ clientId, protocol }: ClientScopesProps) => {
const refresh = () => setKey(new Date().getTime()); const refresh = () => setKey(new Date().getTime());
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
const defaultClientScopes = await adminClient.clients.listDefaultClientScopes( const defaultClientScopes = await adminClient.clients.listDefaultClientScopes(
{ id: clientId } { id: clientId }

View file

@ -1,6 +1,6 @@
import React, { useEffect, useState } from "react"; import React, { useEffect, useState } from "react";
import { Spinner } from "@patternfly/react-core"; import { Spinner } from "@patternfly/react-core";
import { useFetch } from "../../context/auth/AdminClient"; import { asyncStateFetch } from "../../context/auth/AdminClient";
type DataLoaderProps<T> = { type DataLoaderProps<T> = {
loader: () => Promise<T>; loader: () => Promise<T>;
@ -20,7 +20,7 @@ export function DataLoader<T>(props: DataLoaderProps<T>) {
const refresh = () => setKey(new Date().getTime()); const refresh = () => setKey(new Date().getTime());
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => props.loader(), () => props.loader(),
(result) => setData({ result }) (result) => setData({ result })
); );

View file

@ -18,7 +18,10 @@ import { ConfirmDialogModal } from "../confirm-dialog/ConfirmDialog";
import { HelpItem } from "../help-enabler/HelpItem"; import { HelpItem } from "../help-enabler/HelpItem";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { useServerInfo } from "../../context/server-info/ServerInfoProvider"; import { useServerInfo } from "../../context/server-info/ServerInfoProvider";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { HelpContext } from "../help-enabler/HelpHeader"; import { HelpContext } from "../help-enabler/HelpHeader";
export type DownloadDialogProps = { export type DownloadDialogProps = {
@ -65,7 +68,7 @@ export const DownloadDialog = ({
const [openType, setOpenType] = useState(false); const [openType, setOpenType] = useState(false);
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
const snippet = await adminClient.clients.getInstallationProviders({ const snippet = await adminClient.clients.getInstallationProviders({
id, id,

View file

@ -14,7 +14,7 @@ import _ from "lodash";
import { PaginatingTableToolbar } from "./PaginatingTableToolbar"; import { PaginatingTableToolbar } from "./PaginatingTableToolbar";
import { TableToolbar } from "./TableToolbar"; import { TableToolbar } from "./TableToolbar";
import { useFetch } from "../../context/auth/AdminClient"; import { asyncStateFetch } from "../../context/auth/AdminClient";
type Row<T> = { type Row<T> = {
data: T; data: T;
@ -132,7 +132,7 @@ export function KeycloakDataTable<T>({
const refresh = () => setKey(new Date().getTime()); const refresh = () => setKey(new Date().getTime());
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
setLoading(true); setLoading(true);
const data = await loader(first, max, search); const data = await loader(first, max, search);

View file

@ -17,7 +17,23 @@ export const useAdminClient = () => {
return adminClient; return adminClient;
}; };
export function useFetch<T>( /**
* Util function to only set the state when the component is still mounted.
*
* It takes 2 functions one you do your adminClient call in and the other to set your state
*
* @example
* useEffect(() => {
* return asyncStateFetch(
* () => adminClient.components.findOne({ id }),
* (component) => setupForm(component)
* );
* }, []);
*
* @param adminClientCall use this to do your adminClient call
* @param callback when the data is fetched this is where you set your state
*/
export function asyncStateFetch<T>(
adminClientCall: () => Promise<T>, adminClientCall: () => Promise<T>,
callback: (param: T) => void callback: (param: T) => void
) { ) {

View file

@ -24,7 +24,7 @@ import { FormAccess } from "../components/form-access/FormAccess";
import { useAlerts } from "../components/alert/Alerts"; import { useAlerts } from "../components/alert/Alerts";
import { ViewHeader } from "../components/view-header/ViewHeader"; import { ViewHeader } from "../components/view-header/ViewHeader";
import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useAdminClient, asyncStateFetch } from "../context/auth/AdminClient";
import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog";
import { RoleAttributes } from "./RoleAttributes"; import { RoleAttributes } from "./RoleAttributes";
import { useRealm } from "../context/realm-context/RealmContext"; import { useRealm } from "../context/realm-context/RealmContext";
@ -113,7 +113,7 @@ export const RealmRolesForm = () => {
const [activeTab, setActiveTab] = useState(0); const [activeTab, setActiveTab] = useState(0);
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
async () => { async () => {
if (id) { if (id) {
const role = await adminClient.roles.findOneById({ id }); const role = await adminClient.roles.findOneById({ id });

View file

@ -17,7 +17,7 @@ import { Controller, useForm } from "react-hook-form";
import { FormAccess } from "../components/form-access/FormAccess"; import { FormAccess } from "../components/form-access/FormAccess";
import { useAlerts } from "../components/alert/Alerts"; import { useAlerts } from "../components/alert/Alerts";
import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useAdminClient, asyncStateFetch } from "../context/auth/AdminClient";
import RoleRepresentation from "keycloak-admin/lib/defs/roleRepresentation"; import RoleRepresentation from "keycloak-admin/lib/defs/roleRepresentation";
import { RoleAttributes } from "./RoleAttributes"; import { RoleAttributes } from "./RoleAttributes";
import "./RealmRolesSection.css"; import "./RealmRolesSection.css";
@ -37,7 +37,7 @@ export const RolesTabs = () => {
const { addAlert } = useAlerts(); const { addAlert } = useAlerts();
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.roles.findOneById({ id }), () => adminClient.roles.findOneById({ id }),
(fetchedRole) => { (fetchedRole) => {
setName(fetchedRole.name!); setName(fetchedRole.name!);

View file

@ -5,7 +5,7 @@ import { useParams } from "react-router-dom";
import { Button, ButtonVariant, TextInput } from "@patternfly/react-core"; import { Button, ButtonVariant, TextInput } from "@patternfly/react-core";
import { useForm } from "react-hook-form"; import { useForm } from "react-hook-form";
import "./RealmRolesSection.css"; import "./RealmRolesSection.css";
import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useAdminClient, asyncStateFetch } from "../context/auth/AdminClient";
import RoleRepresentation from "keycloak-admin/lib/defs/roleRepresentation"; import RoleRepresentation from "keycloak-admin/lib/defs/roleRepresentation";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
@ -46,7 +46,7 @@ export const RoleAttributes = () => {
]; ];
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.roles.findOneById({ id }), () => adminClient.roles.findOneById({ id }),
(fetchedRole) => { (fetchedRole) => {
setName(fetchedRole.name!); setName(fetchedRole.name!);

View file

@ -4,7 +4,7 @@ import KeycloakAdminClient from "keycloak-admin";
import { AccessContextProvider } from "../context/access/Access"; import { AccessContextProvider } from "../context/access/Access";
import { WhoAmIContextProvider } from "../context/whoami/WhoAmI"; import { WhoAmIContextProvider } from "../context/whoami/WhoAmI";
import { RealmContextProvider } from "../context/realm-context/RealmContext"; import { RealmContext } from "../context/realm-context/RealmContext";
import whoamiMock from "../context/whoami/__tests__/mock-whoami.json"; import whoamiMock from "../context/whoami/__tests__/mock-whoami.json";
import { AdminClient } from "../context/auth/AdminClient"; import { AdminClient } from "../context/auth/AdminClient";
@ -39,9 +39,11 @@ export const MockAdminClient = (props: {
} }
> >
<WhoAmIContextProvider> <WhoAmIContextProvider>
<RealmContextProvider> <RealmContext.Provider
value={{ realm: "master", setRealm: () => {} }}
>
<AccessContextProvider>{props.children}</AccessContextProvider> <AccessContextProvider>{props.children}</AccessContextProvider>
</RealmContextProvider> </RealmContext.Provider>
</WhoAmIContextProvider> </WhoAmIContextProvider>
</AdminClient.Provider> </AdminClient.Provider>
</HashRouter> </HashRouter>

View file

@ -12,7 +12,9 @@ export default {
export const view = () => { export const view = () => {
return ( return (
<Page> <Page>
<MockAdminClient> <MockAdminClient
mock={{ components: { findOne: () => Promise.resolve({}) } }}
>
<UserFederationKerberosSettings /> <UserFederationKerberosSettings />
</MockAdminClient> </MockAdminClient>
</Page> </Page>

View file

@ -2,6 +2,7 @@ import React from "react";
import { Meta } from "@storybook/react"; import { Meta } from "@storybook/react";
import { Page } from "@patternfly/react-core"; import { Page } from "@patternfly/react-core";
import { UserFederationLdapSettings } from "../user-federation/UserFederationLdapSettings"; import { UserFederationLdapSettings } from "../user-federation/UserFederationLdapSettings";
import { MockAdminClient } from "./MockAdminClient";
export default { export default {
title: "User Federation LDAP Settings Tab", title: "User Federation LDAP Settings Tab",
@ -11,7 +12,11 @@ export default {
export const view = () => { export const view = () => {
return ( return (
<Page> <Page>
<UserFederationLdapSettings /> <MockAdminClient
mock={{ components: { findOne: () => Promise.resolve({}) } }}
>
<UserFederationLdapSettings />
</MockAdminClient>
</Page> </Page>
); );
}; };

View file

@ -22,7 +22,7 @@ import { ViewHeader } from "../components/view-header/ViewHeader";
import { DatabaseIcon } from "@patternfly/react-icons"; import { DatabaseIcon } from "@patternfly/react-icons";
import { useTranslation } from "react-i18next"; import { useTranslation } from "react-i18next";
import { RealmContext } from "../context/realm-context/RealmContext"; import { RealmContext } from "../context/realm-context/RealmContext";
import { useAdminClient, useFetch } from "../context/auth/AdminClient"; import { useAdminClient, asyncStateFetch } from "../context/auth/AdminClient";
import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog"; import { useConfirmDialog } from "../components/confirm-dialog/ConfirmDialog";
import "./user-federation.css"; import "./user-federation.css";
@ -38,7 +38,7 @@ export const UserFederationSection = () => {
const refresh = () => setKey(new Date().getTime()); const refresh = () => setKey(new Date().getTime());
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => { () => {
const testParams: { [name: string]: string | number } = { const testParams: { [name: string]: string | number } = {
parentId: realm, parentId: realm,

View file

@ -12,7 +12,10 @@ import { convertToFormValues } from "../../util";
import { useForm, Controller, useWatch } from "react-hook-form"; import { useForm, Controller, useWatch } from "react-hook-form";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
import _ from "lodash"; import _ from "lodash";
@ -41,7 +44,7 @@ export const KerberosSettingsCache = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(component) => setupForm(component) (component) => setupForm(component)
); );

View file

@ -6,7 +6,10 @@ import { useForm, Controller } from "react-hook-form";
import { convertToFormValues } from "../../util"; import { convertToFormValues } from "../../util";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
export const LdapSettingsAdvanced = () => { export const LdapSettingsAdvanced = () => {
@ -27,7 +30,7 @@ export const LdapSettingsAdvanced = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent) (fetchedComponent) => setupForm(fetchedComponent)
); );

View file

@ -16,7 +16,10 @@ import { convertToFormValues } from "../../util";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { EyeIcon } from "@patternfly/react-icons"; import { EyeIcon } from "@patternfly/react-icons";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
export const LdapSettingsConnection = () => { export const LdapSettingsConnection = () => {
@ -62,7 +65,7 @@ export const LdapSettingsConnection = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent) (fetchedComponent) => setupForm(fetchedComponent)
); );

View file

@ -12,7 +12,10 @@ import { useForm, Controller } from "react-hook-form";
import { convertToFormValues } from "../../util"; import { convertToFormValues } from "../../util";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
export const LdapSettingsGeneral = () => { export const LdapSettingsGeneral = () => {
@ -37,7 +40,7 @@ export const LdapSettingsGeneral = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent) (fetchedComponent) => setupForm(fetchedComponent)
); );

View file

@ -6,7 +6,10 @@ import { useForm, Controller } from "react-hook-form";
import { convertToFormValues } from "../../util"; import { convertToFormValues } from "../../util";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
export const LdapSettingsKerberosIntegration = () => { export const LdapSettingsKerberosIntegration = () => {
@ -28,7 +31,7 @@ export const LdapSettingsKerberosIntegration = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent) (fetchedComponent) => setupForm(fetchedComponent)
); );

View file

@ -12,7 +12,10 @@ import { HelpItem } from "../../components/help-enabler/HelpItem";
import { useForm, Controller } from "react-hook-form"; import { useForm, Controller } from "react-hook-form";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
import { convertToFormValues } from "../../util"; import { convertToFormValues } from "../../util";
@ -54,7 +57,7 @@ export const LdapSettingsSearching = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent) (fetchedComponent) => setupForm(fetchedComponent)
); );

View file

@ -6,7 +6,10 @@ import { useForm, Controller } from "react-hook-form";
import { convertToFormValues } from "../../util"; import { convertToFormValues } from "../../util";
import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation"; import ComponentRepresentation from "keycloak-admin/lib/defs/componentRepresentation";
import { FormAccess } from "../../components/form-access/FormAccess"; import { FormAccess } from "../../components/form-access/FormAccess";
import { useAdminClient, useFetch } from "../../context/auth/AdminClient"; import {
useAdminClient,
asyncStateFetch,
} from "../../context/auth/AdminClient";
import { useParams } from "react-router-dom"; import { useParams } from "react-router-dom";
export const LdapSettingsSynchronization = () => { export const LdapSettingsSynchronization = () => {
@ -27,7 +30,7 @@ export const LdapSettingsSynchronization = () => {
}; };
useEffect(() => { useEffect(() => {
return useFetch( return asyncStateFetch(
() => adminClient.components.findOne({ id }), () => adminClient.components.findOne({ id }),
(fetchedComponent) => setupForm(fetchedComponent) (fetchedComponent) => setupForm(fetchedComponent)
); );