theme.keycloak.v2.admin.resources.assets.MappingDetails-FsZeCvYK.js.map Maven / Gradle / Ivy
{"version":3,"file":"MappingDetails-FsZeCvYK.js","sources":["../../src/client-scopes/details/MappingDetails.tsx"],"sourcesContent":["import type ProtocolMapperRepresentation from \"@keycloak/keycloak-admin-client/lib/defs/protocolMapperRepresentation\";\nimport type { ProtocolMapperTypeRepresentation } from \"@keycloak/keycloak-admin-client/lib/defs/serverInfoRepesentation\";\nimport {\n ActionGroup,\n AlertVariant,\n Button,\n ButtonVariant,\n DropdownItem,\n FormGroup,\n PageSection,\n TextInput,\n} from \"@patternfly/react-core\";\nimport { useState } from \"react\";\nimport { FormProvider, useForm } from \"react-hook-form\";\nimport { useTranslation } from \"react-i18next\";\nimport { Link, useMatch, useNavigate } from \"react-router-dom\";\nimport { TextControl } from \"@keycloak/keycloak-ui-shared\";\nimport { useAdminClient } from \"../../admin-client\";\nimport { toDedicatedScope } from \"../../clients/routes/DedicatedScopeDetails\";\nimport { useAlerts } from \"../../components/alert/Alerts\";\nimport { useConfirmDialog } from \"../../components/confirm-dialog/ConfirmDialog\";\nimport { DynamicComponents } from \"../../components/dynamic/DynamicComponents\";\nimport { FormAccess } from \"../../components/form/FormAccess\";\nimport { ViewHeader } from \"../../components/view-header/ViewHeader\";\nimport { useRealm } from \"../../context/realm-context/RealmContext\";\nimport { useServerInfo } from \"../../context/server-info/ServerInfoProvider\";\nimport { convertFormValuesToObject, convertToFormValues } from \"../../util\";\nimport { useFetch } from \"../../utils/useFetch\";\nimport { useParams } from \"../../utils/useParams\";\nimport { toClientScope } from \"../routes/ClientScope\";\nimport { MapperParams, MapperRoute } from \"../routes/Mapper\";\n\nexport default function MappingDetails() {\n const { adminClient } = useAdminClient();\n\n const { t } = useTranslation();\n const { addAlert, addError } = useAlerts();\n\n const { id, mapperId } = useParams();\n const form = useForm();\n const { setValue, handleSubmit } = form;\n const [mapping, setMapping] = useState();\n const [config, setConfig] = useState<{\n protocol?: string;\n protocolMapper?: string;\n }>();\n\n const navigate = useNavigate();\n const { realm } = useRealm();\n const serverInfo = useServerInfo();\n const isGuid = /^[{]?[0-9a-fA-F]{8}-([0-9a-fA-F]{4}-){3}[0-9a-fA-F]{12}[}]?$/;\n const isUpdating = !!mapperId.match(isGuid);\n\n const isOnClientScope = !!useMatch(MapperRoute.path);\n const toDetails = () =>\n isOnClientScope\n ? toClientScope({ realm, id, tab: \"mappers\" })\n : toDedicatedScope({ realm, clientId: id, tab: \"mappers\" });\n\n useFetch(\n async () => {\n let data: ProtocolMapperRepresentation | undefined;\n if (isUpdating) {\n if (isOnClientScope) {\n data = await adminClient.clientScopes.findProtocolMapper({\n id,\n mapperId,\n });\n } else {\n data = await adminClient.clients.findProtocolMapperById({\n id,\n mapperId,\n });\n }\n if (!data) {\n throw new Error(t(\"notFound\"));\n }\n\n const mapperTypes = serverInfo.protocolMapperTypes![data!.protocol!];\n const mapping = mapperTypes.find(\n (type) => type.id === data!.protocolMapper,\n );\n\n return {\n config: {\n protocol: data.protocol,\n protocolMapper: data.protocolMapper,\n },\n mapping,\n data,\n };\n } else {\n const model = isOnClientScope\n ? await adminClient.clientScopes.findOne({ id })\n : await adminClient.clients.findOne({ id });\n if (!model) {\n throw new Error(t(\"notFound\"));\n }\n const protocolMappers =\n serverInfo.protocolMapperTypes![model.protocol!];\n const mapping = protocolMappers.find(\n (mapper) => mapper.id === mapperId,\n );\n if (!mapping) {\n throw new Error(t(\"notFound\"));\n }\n return {\n mapping,\n config: {\n protocol: model.protocol,\n protocolMapper: mapperId,\n },\n };\n }\n },\n ({ config, mapping, data }) => {\n setConfig(config);\n setMapping(mapping);\n if (data) {\n convertToFormValues(data, setValue);\n }\n },\n [],\n );\n\n const [toggleDeleteDialog, DeleteConfirm] = useConfirmDialog({\n titleKey: \"deleteMappingTitle\",\n messageKey: \"deleteMappingConfirm\",\n continueButtonLabel: \"delete\",\n continueButtonVariant: ButtonVariant.danger,\n onConfirm: async () => {\n try {\n if (isOnClientScope) {\n await adminClient.clientScopes.delProtocolMapper({\n id,\n mapperId,\n });\n } else {\n await adminClient.clients.delProtocolMapper({\n id,\n mapperId,\n });\n }\n addAlert(t(\"mappingDeletedSuccess\"), AlertVariant.success);\n navigate(toDetails());\n } catch (error) {\n addError(\"mappingDeletedError\", error);\n }\n },\n });\n\n const save = async (formMapping: ProtocolMapperRepresentation) => {\n const key = isUpdating ? \"Updated\" : \"Created\";\n try {\n const mapping = { ...config, ...convertFormValuesToObject(formMapping) };\n if (isUpdating) {\n isOnClientScope\n ? await adminClient.clientScopes.updateProtocolMapper(\n { id, mapperId },\n { id: mapperId, ...mapping },\n )\n : await adminClient.clients.updateProtocolMapper(\n { id, mapperId },\n { id: mapperId, ...mapping },\n );\n } else {\n isOnClientScope\n ? await adminClient.clientScopes.addProtocolMapper({ id }, mapping)\n : await adminClient.clients.addProtocolMapper({ id }, mapping);\n }\n addAlert(t(`mapping${key}Success`), AlertVariant.success);\n } catch (error) {\n addError(`mapping${key}Error`, error);\n }\n };\n\n return (\n <>\n \n \n {t(\"delete\")}\n ,\n ]\n : undefined\n }\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n >\n );\n}\n"],"names":["MappingDetails","adminClient","useAdminClient","t","useTranslation","addAlert","addError","useAlerts","id","mapperId","useParams","form","useForm","setValue","handleSubmit","mapping","setMapping","useState","config","setConfig","navigate","useNavigate","realm","useRealm","serverInfo","useServerInfo","isGuid","isUpdating","isOnClientScope","useMatch","MapperRoute","toDetails","toClientScope","toDedicatedScope","useFetch","data","type","model","mapper","convertToFormValues","toggleDeleteDialog","DeleteConfirm","useConfirmDialog","ButtonVariant","AlertVariant","error","save","formMapping","key","convertFormValuesToObject","jsxs","Fragment","jsx","ViewHeader","DropdownItem","PageSection","FormProvider","FormAccess","FormGroup","TextInput","TextControl","DynamicComponents","ActionGroup","Button","props","Link"],"mappings":"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"}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy