@verii/components-organizations-registrar 1.0.0 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/chunks/HolderWalletSelection.BYj3foq0.js +167 -0
  2. package/dist/chunks/HolderWalletSelection.BYj3foq0.js.map +1 -0
  3. package/dist/chunks/HolderWalletSelection.BvPFTrTh.js +166 -0
  4. package/dist/chunks/HolderWalletSelection.BvPFTrTh.js.map +1 -0
  5. package/dist/chunks/{ServicesEdit.BnnqC203.js → ServicesEdit.CrmS66vz.js} +75 -50
  6. package/dist/chunks/ServicesEdit.CrmS66vz.js.map +1 -0
  7. package/dist/chunks/{ServicesEdit.DDgjS5kU.js → ServicesEdit.DFxcohIF.js} +75 -50
  8. package/dist/chunks/ServicesEdit.DFxcohIF.js.map +1 -0
  9. package/dist/chunks/{SetInvitationService.PxAGwk-I.js → SetInvitationService.BeU7-IBo.js} +3 -3
  10. package/dist/chunks/{SetInvitationService.PxAGwk-I.js.map → SetInvitationService.BeU7-IBo.js.map} +1 -1
  11. package/dist/chunks/{SetInvitationService.ZT5lP003.js → SetInvitationService.DtVH6OkH.js} +3 -3
  12. package/dist/chunks/{SetInvitationService.ZT5lP003.js.map → SetInvitationService.DtVH6OkH.js.map} +1 -1
  13. package/dist/chunks/{ValidateTextInput.D5kgjulG.js → ValidateTextInput.1Fv1GPyZ.js} +2 -2
  14. package/dist/chunks/{ValidateTextInput.D5kgjulG.js.map → ValidateTextInput.1Fv1GPyZ.js.map} +1 -1
  15. package/dist/chunks/{ValidateTextInput.DEBaVB1L.js → ValidateTextInput.DPruGgff.js} +2 -2
  16. package/dist/chunks/{ValidateTextInput.DEBaVB1L.js.map → ValidateTextInput.DPruGgff.js.map} +1 -1
  17. package/dist/chunks/{index.Cmn4FlUL.js → index.BDTIIDNe.js} +251 -114
  18. package/dist/chunks/index.BDTIIDNe.js.map +1 -0
  19. package/dist/chunks/{index.YjnxLFjk.js → index.CaxYybSL.js} +115 -56
  20. package/dist/chunks/index.CaxYybSL.js.map +1 -0
  21. package/dist/chunks/{index.DIizFYFZ.js → index.Cjk52g3G.js} +115 -56
  22. package/dist/chunks/index.Cjk52g3G.js.map +1 -0
  23. package/dist/chunks/{index.DMWKdmxs.js → index.DFMQZMWE.js} +12 -2
  24. package/dist/chunks/index.DFMQZMWE.js.map +1 -0
  25. package/dist/chunks/{index.DND10PiY.js → index.DTlm8AhC.js} +11 -1
  26. package/dist/chunks/index.DTlm8AhC.js.map +1 -0
  27. package/dist/chunks/{index.CYCWawJT.js → index.DmF-wFBs.js} +249 -112
  28. package/dist/chunks/index.DmF-wFBs.js.map +1 -0
  29. package/dist/chunks/{serviceTypes.D7c4G5GY.js → serviceTypes.BWVBK33e.js} +52 -31
  30. package/dist/chunks/serviceTypes.BWVBK33e.js.map +1 -0
  31. package/dist/chunks/{serviceTypes.CxLXtDIT.js → serviceTypes.BbBTNXB9.js} +52 -31
  32. package/dist/chunks/serviceTypes.BbBTNXB9.js.map +1 -0
  33. package/dist/components/common.cjs +1 -1
  34. package/dist/components/common.js +1 -1
  35. package/dist/components/invitations.cjs +1 -1
  36. package/dist/components/invitations.js +1 -1
  37. package/dist/components/organizations.cjs +1 -1
  38. package/dist/components/organizations.js +1 -1
  39. package/dist/components/services.cjs +1 -1
  40. package/dist/components/services.js +1 -1
  41. package/dist/index.cjs +1 -1
  42. package/dist/index.js +1 -1
  43. package/dist/pages/invitations.cjs +5 -6
  44. package/dist/pages/invitations.cjs.map +1 -1
  45. package/dist/pages/invitations.js +4 -5
  46. package/dist/pages/invitations.js.map +1 -1
  47. package/dist/pages/organizations.cjs +11 -16
  48. package/dist/pages/organizations.cjs.map +1 -1
  49. package/dist/pages/organizations.js +10 -15
  50. package/dist/pages/organizations.js.map +1 -1
  51. package/dist/pages/services.cjs +27 -30
  52. package/dist/pages/services.cjs.map +1 -1
  53. package/dist/pages/services.js +26 -29
  54. package/dist/pages/services.js.map +1 -1
  55. package/package.json +3 -3
  56. package/dist/chunks/ServicesEdit.BnnqC203.js.map +0 -1
  57. package/dist/chunks/ServicesEdit.DDgjS5kU.js.map +0 -1
  58. package/dist/chunks/index.CYCWawJT.js.map +0 -1
  59. package/dist/chunks/index.Cmn4FlUL.js.map +0 -1
  60. package/dist/chunks/index.DIizFYFZ.js.map +0 -1
  61. package/dist/chunks/index.DMWKdmxs.js.map +0 -1
  62. package/dist/chunks/index.DND10PiY.js.map +0 -1
  63. package/dist/chunks/index.YjnxLFjk.js.map +0 -1
  64. package/dist/chunks/invitations.BI_Qo5Ca.js +0 -10
  65. package/dist/chunks/invitations.BI_Qo5Ca.js.map +0 -1
  66. package/dist/chunks/invitations.BbK6WSY8.js +0 -11
  67. package/dist/chunks/invitations.BbK6WSY8.js.map +0 -1
  68. package/dist/chunks/serviceTypes.CxLXtDIT.js.map +0 -1
  69. package/dist/chunks/serviceTypes.D7c4G5GY.js.map +0 -1
  70. package/dist/chunks/useIsIssuingInspection.C76mY_wb.js +0 -14
  71. package/dist/chunks/useIsIssuingInspection.C76mY_wb.js.map +0 -1
  72. package/dist/chunks/useIsIssuingInspection.DavhBs5B.js +0 -13
  73. package/dist/chunks/useIsIssuingInspection.DavhBs5B.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"invitations.js","sources":["../../src/pages/invitations/CreateOrganisationFromInvitation.jsx","../../src/pages/invitations/utils/getStatusByCode.js","../../src/pages/invitations/InvitationCreateForm.jsx","../../src/pages/invitations/InvitationExistingOrgPopup.jsx","../../src/pages/invitations/InvitationResend.jsx","../../src/pages/invitations/InvitationsList.jsx","../../src/pages/invitations/SecretKeysPopup.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Stack, Typography } from '@mui/material';\nimport { Link as ReactRouterLink, useParams } from 'react-router';\nimport { useCreateController, useGetOne, useRedirect, useLogout, useRefresh } from 'react-admin';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport { useEffect, useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { FOOTER_HEIGHT } from '@/theme/theme.js';\nimport CreateOrganisation from '@/components/organizations/CreateOrganization.jsx';\nimport InvitationServiceInfo from '@/components/invitations/InvitationServiceInfo.jsx';\nimport Popup from '@/components/common/Popup.jsx';\nimport Loading from '@/components/Loading.jsx';\nimport { MESSAGE_CODES } from '@/constants/messageCodes.js';\nimport { formatWebSiteUrl, formatRegistrationNumbers, parseJwt } from '@/utils/index.jsx';\nimport useCountryCodes from '@/utils/countryCodes.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport { useAuth } from '@/utils/auth/AuthContext.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { SecretKeysPopup } from '../services/components/SecretKeysPopup/index.jsx';\n\nconst CreateOrganizationFromInvitation = ({ InterceptOnCreate }) => {\n const { code } = useParams();\n const refresh = useRefresh();\n const redirect = useRedirect();\n const auth = useAuth();\n const { user, getAccessToken } = auth;\n const logout = useLogout();\n\n const [, setDid] = useSelectedOrganization();\n const { data: countryCodes, isLoading } = useCountryCodes();\n\n const [hasOrganisations, setHasOrganisations] = useState(false);\n\n const [isLoader, setIsLoader] = useState(false);\n const [secretKeys, setSecretKeys] = useState(null);\n // popups\n const [isOpenSecretPopup, setIsOpenSecretPopup] = useState(false);\n const [isOpenNotExistingPopup, setIsOpenNotExistingPopup] = useState(false);\n const [isOpenExpiredPopup, setIsOpenExpiredPopup] = useState(false);\n const [isInterceptOnCreateOpen, setIsInterceptOnCreateOpen] = useState(false);\n\n const { save, saving: creatingIsLoading } = useCreateController({\n resource: 'organizations',\n mutationOptions: {\n onSuccess: async (resp) => {\n refresh();\n setDid(resp.id);\n setSecretKeys({ keys: resp.keys, authClients: resp.authClients });\n },\n },\n });\n\n const { data: userData, isLoading: isUserDataLoading } = useGetOne(dataResources.USERS, {\n id: user.sub,\n });\n\n const { data: invitationData, isLoading: invitationIsLoading } = useGetOne(\n 'invitations',\n {\n id: code,\n },\n {\n onError: (error) => {\n if (error?.body?.statusCode === 404) {\n setIsOpenNotExistingPopup(true);\n }\n if (\n error?.body?.statusCode === 400 &&\n error?.body?.errorCode === MESSAGE_CODES.INVITATION_EXPIRED\n ) {\n setIsOpenExpiredPopup(true);\n }\n },\n },\n );\n\n const { data: inviterInfo = { credentialSubject: { name: '' } }, isLoading: isLoadingOrgData } =\n useGetOne(\n dataResources.VERIFIED_PROFILE,\n { id: invitationData?.inviterDid },\n { enabled: !!invitationData?.inviterDid },\n );\n\n // Check if the user has an organization\n useEffect(() => {\n (async () => {\n try {\n const token = await getAccessToken();\n const tokenDecoded = parseJwt(token);\n setHasOrganisations(\n Boolean(\n tokenDecoded['http://velocitynetwork.foundation/groupId'] ||\n tokenDecoded.scope.includes('admin'),\n ),\n );\n } catch (e) {\n console.error(e);\n }\n })();\n }, [getAccessToken]);\n\n useEffect(() => {\n const inviteeEmail = invitationData?.inviteeEmail;\n const userEmail = userData?.email;\n\n if (inviteeEmail && userEmail && userEmail !== inviteeEmail) {\n localStorage.setItem('createInvitationURL', window.location.pathname);\n logout(auth, window.location.href, true);\n }\n }, [userData, invitationData, logout, auth]);\n\n useEffect(() => {\n if (secretKeys) {\n if (InterceptOnCreate) {\n setIsInterceptOnCreateOpen(true);\n } else {\n setIsOpenSecretPopup(true);\n }\n }\n }, [InterceptOnCreate, secretKeys]);\n\n const handleSubmit = useCallback(\n async (formData) => {\n await save({\n profile: {\n ...formData,\n website: formatWebSiteUrl(formData.website),\n linkedInProfile: formatWebSiteUrl(formData.linkedInProfile),\n registrationNumbers: formatRegistrationNumbers(formData.registrationNumbers),\n },\n serviceEndpoints: invitationData?.inviteeService,\n invitationCode: code,\n });\n },\n [save, code, invitationData],\n );\n\n useEffect(() => {\n setIsLoader(isLoading || invitationIsLoading || isLoadingOrgData || isUserDataLoading);\n }, [isLoading, invitationIsLoading, isLoadingOrgData, isUserDataLoading]);\n\n return (\n <Stack sx={sxStyles.root}>\n <AppBar position=\"static\" sx={sxStyles.appBar}>\n <Toolbar>\n <ReactRouterLink to=\"/\" style={{ display: 'flex' }} role=\"link\">\n <img src=\"/assets/images/logo.svg\" alt=\"Velocity\" />\n </ReactRouterLink>\n </Toolbar>\n </AppBar>\n <Stack sx={{ flexGrow: 1 }}>\n {isLoader ? (\n <Loading sx={sxStyles.loader} />\n ) : (\n <CreateOrganisation\n buttonTitle=\"Save\"\n userData={userData}\n isLoading={creatingIsLoading}\n title=\"Welcome\"\n subTitle={`${inviterInfo.credentialSubject.name} has invited you to join Velocity Network™. Complete/edit your organization\n profile below and click SAVE to complete your registration.`}\n onSubmit={handleSubmit}\n defaultValues={{\n ...invitationData?.inviteeProfile,\n ...invitationData?.keyIndividuals,\n }}\n countryCodes={countryCodes}\n hasOrganisations={hasOrganisations}\n >\n <InvitationServiceInfo inviteeService={invitationData?.inviteeService} />\n </CreateOrganisation>\n )}\n\n {InterceptOnCreate && (\n <InterceptOnCreate\n isInterceptOnCreateOpen={isInterceptOnCreateOpen}\n serviceId={invitationData?.inviteeService?.[0]?.id}\n // did={did}\n onNext={() => {\n setIsOpenSecretPopup(true);\n }}\n onClose={() => {\n setIsOpenSecretPopup(true);\n }}\n isIssueOrInspection={true}\n selectedCAO={invitationData?.inviterDid}\n />\n )}\n\n <SecretKeysPopup\n isOpen={isOpenSecretPopup}\n secretKeys={secretKeys}\n onClose={() => {\n setIsOpenSecretPopup(false);\n getAccessToken({ cacheMode: 'off' });\n redirect('/');\n }}\n wording={{\n title: 'Your organization is now registered on Velocity Network™.',\n subtitle:\n 'Please save your organization’s unique keys in a secure location, as they will not be available once you close this window.',\n }}\n warningWording={{\n title: 'You must download a copy of your keys before exiting',\n subtitle:\n 'They will not be available again and are critical for managing your organization data.',\n }}\n />\n\n <Popup\n isOpen={isOpenNotExistingPopup}\n onClose={() => {\n setIsOpenNotExistingPopup(false);\n redirect('/');\n }}\n title=\"That invitation link either has been deleted or doesn’t exist\"\n mainContainerStyles={sxStyles.errorPopupContainer}\n titleStyles={{ ...sxStyles.errorTitle, ...sxStyles.noInvitation }}\n />\n <Popup\n isOpen={isOpenExpiredPopup}\n onClose={() => {\n setIsOpenExpiredPopup(false);\n redirect('/');\n }}\n title=\"This invitation link either has expired\"\n mainContainerStyles={sxStyles.errorPopupContainer}\n titleStyles={sxStyles.errorTitle}\n >\n <Stack flexDirection=\"row\" justifyContent=\"center\">\n <Typography variant=\"pl\">Ask your service provider to resend the invitation</Typography>\n </Stack>\n </Popup>\n </Stack>\n </Stack>\n );\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nCreateOrganizationFromInvitation.propTypes = {\n InterceptOnCreate: PropTypes.elementType,\n};\n\nexport default CreateOrganizationFromInvitation;\n\nconst sxStyles = {\n root: { minHeight: '100vh' },\n loader: { flexGrow: 1, pb: FOOTER_HEIGHT },\n appBar: {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n minHeight: '79px',\n display: 'flex',\n justifyContent: 'center',\n },\n serviceContainer: {\n backgroundColor: (theme) => theme.customColors.grey1,\n borderRadius: '12px',\n p: '32px 40px',\n mt: '25px',\n },\n errorPopupContainer: {\n px: '50px',\n },\n errorTitle: { textAlign: 'center' },\n noInvitation: { p: 0 },\n};\n","import { MESSAGE_CODES } from '@/constants/messageCodes.js';\n\nexport const getStatusByCode = (errorCode) => {\n switch (errorCode) {\n case MESSAGE_CODES.BAD_INVITEE_EMAIL: {\n return 'The email address is invalid and the invitation was not sent';\n }\n case MESSAGE_CODES.INVITATION_SENT: {\n return 'The invitation was sent';\n }\n case MESSAGE_CODES.INVITATION_NOT_SENT: {\n return 'Invitation was not sent. Check the email address';\n }\n\n default:\n return 'The invitation was not sent';\n }\n};\n\nexport default getStatusByCode;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useLocation } from 'react-router';\nimport { useGetOne, useCreateController, useRedirect, useRefresh } from 'react-admin';\nimport { Box, Typography, Button } from '@mui/material';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\n// eslint-disable-next-line import/no-extraneous-dependencies\n\nimport Popup from '../../components/common/Popup.jsx';\nimport CreateInvitationForOrganization from '../../components/organizations/CreateInvitationForOrganization.jsx';\nimport { CREDENTIAL_TYPES_IDS } from '../../utils/serviceTypes.js';\nimport useCountryCodes from '../../utils/countryCodes.js';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport StatusPopup from '../../components/common/StatusPopup.jsx';\nimport SetInvitationService from '../../components/invitations/SetInvitationService.jsx';\nimport { MESSAGE_CODES } from '../../constants/messageCodes.js';\nimport SetKeyIndividuals from '../../components/invitations/SetKeyIndividuals.jsx';\nimport { formatWebSiteUrl, formatRegistrationNumbers } from '../../utils/index.jsx';\nimport { getStatusByCode } from './utils/index.js';\n\nconst DEFAULT_STATUS_STATE = { error: null, title: '' };\n\nconst InvitationCreateForm = () => {\n const { pathname } = useLocation();\n const redirect = useRedirect();\n const [did] = useSelectedOrganization();\n const refresh = useRefresh();\n const { data: countryCodes } = useCountryCodes();\n\n const isModalOpened = /\\/invitations\\/create/.test(pathname);\n const isStep1 = /\\/invitations\\/create\\/step-1/.test(pathname);\n const isStep2 = /\\/invitations\\/create\\/step-2/.test(pathname);\n const isStep3 = /\\/invitations\\/create\\/step-3/.test(pathname);\n\n const [organizationProfileData, setOrganizationProfileData] = useState(null);\n const [serviceData, setServiceData] = useState(null);\n const [keyIndividualsData, setKeyIndividualsData] = useState(null);\n\n const [statusPopup, setStatusPopup] = useState(DEFAULT_STATUS_STATE);\n const [isStatusPopupOpen, setIsStatusPopupOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const { data: organisationData } = useGetOne('organizations', { id: did }, { enabled: !!did });\n const serviceEndpointsOptions = useMemo(\n () =>\n (organisationData?.didDoc?.service || []).reduce((acc, { type, id, serviceEndpoint }) => {\n if (type === CREDENTIAL_TYPES_IDS.VLC_CREDENTIAL_AGENT_OPERATOR) {\n return [...acc, { name: `${id} ${serviceEndpoint}`, id: `${did}${id}` }];\n }\n return acc;\n }, []),\n [did, organisationData?.didDoc?.service],\n );\n const openedStateRef = useRef(isModalOpened);\n\n const onClose = useCallback(\n (_event, reason) => {\n if (reason === 'backdropClick') {\n return;\n }\n\n setOrganizationProfileData(null);\n redirect('/invitations');\n },\n [redirect],\n );\n\n const handleCloseStatusPopup = useCallback(() => {\n setStatusPopup(DEFAULT_STATUS_STATE);\n setIsStatusPopupOpen(false);\n onClose();\n }, [onClose]);\n\n // clear previous state after close\n useEffect(() => {\n if (openedStateRef.current === false && isModalOpened) {\n redirect('/invitations/create/step-1');\n setServiceData(null);\n setKeyIndividualsData(null);\n setOrganizationProfileData(null);\n setStatusPopup(DEFAULT_STATUS_STATE);\n }\n\n // eslint-disable-next-line better-mutation/no-mutation\n openedStateRef.current = isModalOpened;\n }, [isModalOpened, redirect]);\n\n useEffect(() => {\n if (\n (!organizationProfileData && (isStep2 || isStep3)) ||\n (isStatusPopupOpen && !statusPopup.title)\n ) {\n redirect('/invitations/create/step-1');\n }\n }, [\n isStatusPopupOpen,\n isStep2,\n isStep3,\n statusPopup.title,\n serviceData,\n organizationProfileData,\n redirect,\n ]);\n\n const goToCreateServiceStep = (data, authority) => {\n setOrganizationProfileData({\n ...data,\n website: formatWebSiteUrl(data.website),\n linkedInProfile: formatWebSiteUrl(data.linkedInProfile),\n registrationNumbers: formatRegistrationNumbers(data.registrationNumbers, authority),\n });\n redirect('/invitations/create/step-2');\n };\n\n const goToSetKeyIndividualsStep = (data) => {\n setServiceData(data);\n redirect('/invitations/create/step-3');\n };\n\n const handleBackToServiceStep = (data) => {\n setKeyIndividualsData(data);\n redirect('/invitations/create/step-2');\n };\n\n const { save } = useCreateController({\n resource: 'invitations',\n mutationOptions: {\n meta: { id: did },\n onSuccess: async (resp) => {\n refresh();\n if (resp.invitation.code && organizationProfileData?.org?.id) {\n redirect(`/invitations?code=${resp.invitation.code}`);\n\n return;\n }\n\n setStatusPopup({\n error: resp.messageCode === MESSAGE_CODES.INVITATION_SENT ? null : resp.messageCode,\n title: getStatusByCode(resp.messageCode),\n });\n setIsStatusPopupOpen(true);\n redirect('/invitations/create/status');\n },\n onError: (error) => {\n setStatusPopup({\n error: error?.body?.errorCode || 'bad request',\n title: getStatusByCode(error?.body?.errorCode),\n });\n setIsStatusPopupOpen(true);\n redirect('/invitations/create/status');\n },\n },\n });\n\n const handleSubmit = async (data) => {\n setLoading(true);\n const { org, ...inviteeProfile } = organizationProfileData;\n const { signatoryEmail, ...keyIndividuals } = data;\n\n await save({\n inviteeEmail: data.adminEmail,\n inviteeService: [serviceData],\n inviteeProfile,\n keyIndividuals: {\n ...keyIndividuals,\n ...(signatoryEmail ? { signatoryEmail } : {}),\n },\n inviteeDid: org?.id || undefined,\n });\n\n setLoading(false);\n };\n\n return (\n <>\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n >\n <Box sx={{ width: '524px' }}>\n {isStep1 && (\n <>\n <Typography variant=\"pm\" sx={styles.step}>\n Step 1/3\n </Typography>\n <CreateInvitationForOrganization\n buttonTitle=\"Next\"\n onSubmit={goToCreateServiceStep}\n onCancel={onClose}\n defaultValues={organizationProfileData}\n countryCodes={countryCodes}\n />\n </>\n )}\n {isStep2 && (\n <>\n <Typography variant=\"pm\" sx={styles.step}>\n Step 2/3\n </Typography>\n <Typography variant=\"h1\" mb={2}>\n Service\n </Typography>\n <Typography>Please complete the details below to continue</Typography>\n <SetInvitationService\n onSubmit={goToSetKeyIndividualsStep}\n defaultValues={serviceData}\n serviceEndpointsOptions={serviceEndpointsOptions}\n >\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.backButton}\n onClick={() => redirect('/invitations/create/step-1')}\n startIcon={<KeyboardArrowLeftIcon />}\n >\n Back\n </Button>\n </SetInvitationService>\n </>\n )}\n {isStep3 && (\n <>\n <Typography variant=\"pm\" sx={styles.step}>\n Step 3/3\n </Typography>\n <Typography variant=\"h1\" mb={2}>\n Key Individuals\n </Typography>\n <SetKeyIndividuals\n onSubmit={handleSubmit}\n serviceEndpointsOptions={serviceEndpointsOptions}\n defaultValues={keyIndividualsData}\n onBack={handleBackToServiceStep}\n loading={loading}\n />\n </>\n )}\n </Box>\n </Popup>\n\n <StatusPopup\n isModalOpened={isStatusPopupOpen}\n buttonLabel=\"Back to invitations\"\n title={statusPopup.title}\n subTitle={statusPopup.error}\n error={statusPopup.error}\n onClose={handleCloseStatusPopup}\n onButtonClick={handleCloseStatusPopup}\n />\n </>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2 },\n step: { color: (theme) => theme.palette.primary.main, pb: '30px', display: 'block' },\n backButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n },\n};\n\nexport default InvitationCreateForm;\n","import { useCallback, useState } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { useGetOne, useRedirect, useCreate } from 'react-admin';\nimport { Box, Button, Typography } from '@mui/material';\nimport { kebabCase } from 'lodash-es';\n\nimport { credentialTypesByServiceTypes } from '../../utils/serviceTypes.js';\nimport InvitationServiceInfo from '../../components/invitations/InvitationServiceInfo.jsx';\nimport Popup from '../../components/common/Popup.jsx';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\nimport Loading from '../../components/Loading.jsx';\nimport { getNewServiceIndex } from '../../utils/invitations.js';\n\nconst InvitationExistingOrgPopup = () => {\n const [searchParams] = useSearchParams();\n const redirect = useRedirect();\n const code = searchParams.get('code');\n const isModalOpened = !!code;\n\n const [createService] = useCreate();\n const [loading, setLoading] = useState(false);\n\n const { data: invitationData, isLoading } = useGetOne(\n dataResources.INVITATIONS,\n { meta: { code } },\n { enabled: !!code },\n );\n\n const handleClose = useCallback(() => {\n redirect('/invitations');\n }, [redirect]);\n\n const handleSave = useCallback(async () => {\n try {\n setLoading(true);\n const inviteeService = invitationData.inviteeService[0];\n const kebabType = kebabCase(inviteeService.type);\n const result = await createService(\n dataResources.SERVICES,\n {\n data: {\n organizationId: invitationData.inviterDid,\n payload: {\n id: `${invitationData.inviterDid}#${kebabType}-${getNewServiceIndex(\n invitationData.inviteeService,\n kebabType,\n )}`,\n serviceEndpoint: inviteeService.serviceEndpoint,\n type: inviteeService.type,\n credentialTypes: credentialTypesByServiceTypes[inviteeService.type],\n },\n },\n },\n { returnPromise: true },\n );\n\n if (result) {\n setLoading(false);\n handleClose();\n }\n } catch (e) {\n setLoading(false);\n }\n }, [createService, handleClose, invitationData]);\n\n return (\n <Popup\n onClose={handleClose}\n title=\"Invitation\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n titleStyles={styles.title}\n >\n {isLoading && !invitationData ? (\n <Box style={styles.modalContainer}>\n <Loading />\n </Box>\n ) : (\n <>\n <Typography variant=\"pl\">{invitationData?.inviteeProfile?.name} invited</Typography>\n <InvitationServiceInfo\n inviteeService={invitationData?.inviteeService}\n agreementStyles={styles.agreement}\n />\n <Box display=\"flex\" justifyContent=\"center\" pt={4}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n size=\"large\"\n sx={styles.cancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n size=\"large\"\n sx={styles.cancelButton}\n onClick={handleSave}\n isLoading={loading}\n >\n {loading ? <Loading color=\"error\" sx={{ pl: '10px' }} size={26} /> : 'Save'}\n </Button>\n </Box>\n </>\n )}\n </Popup>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2, paddingTop: '40px !important' },\n modalContainer: {\n width: '524px',\n },\n title: {\n paddingBottom: '12px',\n },\n agreement: { textAlign: 'start' },\n cancelButton: {\n minWidth: 160,\n mr: 2,\n },\n};\n\nexport default InvitationExistingOrgPopup;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState, useCallback } from 'react';\nimport { useUpdate, useRedirect, useRefresh } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { Typography, Button } from '@mui/material';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport { MESSAGE_CODES } from '../../constants/messageCodes.js';\nimport { getStatusByCode } from './utils/index.js';\nimport SetInvitationEmail from '../../components/invitations/SetInvitationEmail.jsx';\nimport Popup from '../../components/common/Popup.jsx';\nimport StatusPopup from '../../components/common/StatusPopup.jsx';\n\nconst DEFAULT_STATUS_STATE = { error: null, title: '' };\n\nconst InvitationResend = ({ selectedInvitation, inviteeEmail }) => {\n const [did] = useSelectedOrganization();\n const refresh = useRefresh();\n const [statusPopup, setStatusPopup] = useState(DEFAULT_STATUS_STATE);\n const [isStatusPopupOpen, setStatusPopupOpen] = useState(false);\n const redirect = useRedirect();\n const { pathname } = useLocation();\n\n const resendInvitationURL = `invitations/${selectedInvitation}/resend`;\n\n const isModalOpened = new RegExp(resendInvitationURL).test(pathname);\n\n const onClose = useCallback(() => {\n redirect('/invitations');\n }, [redirect]);\n\n const handleCloseStatusPopup = useCallback(() => {\n setStatusPopup(DEFAULT_STATUS_STATE);\n onClose();\n }, [onClose]);\n\n const handleSubmit = async (emailData) => {\n await update(\n 'invitations',\n {\n id: selectedInvitation,\n data: {\n organizationId: did,\n payload: {\n ...emailData,\n },\n },\n },\n { returnPromise: true },\n );\n };\n\n const [update] = useUpdate(undefined, undefined, {\n onSuccess: async (resp) => {\n refresh();\n setStatusPopup({\n error: resp.messageCode === MESSAGE_CODES.INVITATION_SENT ? null : resp.messageCode,\n title: getStatusByCode(resp.messageCode),\n });\n setStatusPopupOpen(true);\n },\n onError: (error) => {\n setStatusPopup({\n error: error?.body?.errorCode || 'bad request',\n title: getStatusByCode(error?.body?.errorCode),\n });\n setStatusPopupOpen(true);\n },\n });\n\n if (isStatusPopupOpen && statusPopup.title) {\n return (\n <StatusPopup\n isModalOpened={isStatusPopupOpen}\n buttonLabel=\"Back to invitations\"\n title={statusPopup.title}\n subTitle={statusPopup.error}\n error={statusPopup.error}\n onClose={handleCloseStatusPopup}\n onButtonClick={handleCloseStatusPopup}\n />\n );\n }\n\n return (\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n >\n <Typography variant=\"h1\" mb={2}>\n Email address\n </Typography>\n <Typography pb=\"30px\">Please complete the details below to continue.</Typography>\n <SetInvitationEmail onSubmit={handleSubmit} defaultValue={inviteeEmail}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.cancelButton}\n onClick={() => redirect('/invitations')}\n >\n Cancel\n </Button>\n </SetInvitationEmail>\n </Popup>\n );\n};\n\nexport default InvitationResend;\n\nconst styles = {\n mainContainer: { pt: 2 },\n cancelButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationResend.propTypes = {\n selectedInvitation: PropTypes.string,\n inviteeEmail: PropTypes.string,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, Container, Typography } from '@mui/material';\nimport { Loop as LoopIcon, Clear as ClearIcon } from '@mui/icons-material';\nimport { useGetList, useGetOne, useRedirect, useDelete } from 'react-admin';\nimport { useMemo, useState, useCallback, useEffect, useRef } from 'react';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport InfoBlock from '../../components/common/infoBlock.jsx';\nimport InvitationsListContainer from '../../components/invitations/InvitationsListContainer.jsx';\nimport InvitationCreateForm from './InvitationCreateForm.jsx';\nimport InvitationResend from './InvitationResend.jsx';\nimport InvitationExistingOrgPopup from './InvitationExistingOrgPopup.jsx';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\n\nconst INVITATIONS_UNAVAILABLE =\n 'This feature is only available to organizations that have set up a Credential Agent Operator service.';\n\nconst InvitationsList = () => {\n const redirect = useRedirect();\n const [did] = useSelectedOrganization();\n const { data: organizationData, isLoading: isLoadingOrganization } = useGetOne(\n 'organizations',\n { id: did },\n { enabled: !!did },\n );\n\n const [page, setPage] = useState(0);\n\n const {\n data,\n isLoading,\n refetch: refetchInvitationsList,\n } = useGetList('invitations', { meta: { id: did, skip: page }, enabled: !!did });\n\n const [invitationToResend, setInvitationToResend] = useState(null);\n const [inviteeEmail, setInviteeEmail] = useState(null);\n const [invitationToDelete, setInvitationToDelete] = useState(null);\n\n // TODO Paging should be fixed after API invitations returns total\n const handleChangePage = useCallback((nextpage) => {\n setPage(nextpage);\n }, []);\n\n const [deleteOne] = useDelete(\n dataResources.INVITATIONS,\n {\n id: invitationToDelete,\n meta: { organizationId: did },\n },\n {\n onSettled: () =>\n refetchInvitationsList().finally(() => {\n setInvitationToDelete(null);\n }),\n },\n );\n\n const timerId = useRef(null);\n useEffect(() => {\n if (invitationToDelete) {\n // eslint-disable-next-line better-mutation/no-mutation\n timerId.current = setTimeout(() => {\n deleteOne();\n }, 5000);\n } else {\n clearTimeout(timerId.current);\n }\n return () => {\n clearTimeout(timerId.current);\n if (invitationToDelete) {\n deleteOne();\n }\n };\n }, [invitationToDelete, deleteOne]);\n\n const withdrawAction = useMemo(\n () => ({\n title: 'WITHDRAW',\n icon: <ClearIcon />,\n action: (id) => {\n setInvitationToDelete(id);\n },\n }),\n [setInvitationToDelete],\n );\n\n const resendAction = useMemo(\n () => ({\n title: 'RESEND',\n icon: <LoopIcon />,\n action: (id) => {\n setInvitationToResend(id);\n setInviteeEmail(data.find((item) => item.id === id).inviteeEmail);\n redirect(`${id}/resend/`, 'invitations');\n },\n }),\n [data, redirect, setInvitationToResend, setInviteeEmail],\n );\n\n const isCredentialAgentOperator =\n !!organizationData &&\n organizationData.profile.permittedVelocityServiceCategory.includes('CredentialAgentOperator');\n return (\n <Container maxWidth=\"xl\" sx={{ mt: 5 }}>\n <Typography variant=\"h3\">Invitations</Typography>\n <Box sx={{ mt: 2, mb: 4 }}>\n <Typography variant=\"subtitle1\">\n Manage your sent invitations below by viewing the status of each invitation and resending\n or withdrawing pending invitations.\n </Typography>\n </Box>\n\n {isCredentialAgentOperator && !isLoading && (\n <InvitationsListContainer\n invitations={data}\n invitationToDelete={invitationToDelete}\n onUndoDelete={() => setInvitationToDelete(null)}\n withdrawAction={withdrawAction}\n resendAction={resendAction}\n onCreateInvite={() => redirect('./create/step-1')}\n changePage={handleChangePage}\n currentPage={page}\n />\n )}\n\n {!isCredentialAgentOperator && !isLoadingOrganization && (\n <InfoBlock text={INVITATIONS_UNAVAILABLE} />\n )}\n\n <InvitationCreateForm />\n <InvitationResend selectedInvitation={invitationToResend} inviteeEmail={inviteeEmail} />\n <InvitationExistingOrgPopup />\n </Container>\n );\n};\n\nexport default InvitationsList;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo, useState } from 'react';\nimport { Box, Typography, Button, Grid, Stack } from '@mui/material';\nimport { Form, useRedirect } from 'react-admin';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport InfoIcon from '@mui/icons-material/Info';\nimport DownloadIcon from '@mui/icons-material/Download';\nimport PropTypes from 'prop-types';\n\nimport { copyTextToClipboard, objectToString } from '../../utils/index.jsx';\nimport downloadTxtAsFile from '../../utils/downloadTxtAsFile.js';\nimport Popup from '../../components/common/Popup.jsx';\n\nconst SecretKeysPopup = ({\n isModalOpened,\n secretKeys,\n onClose,\n isSecureTransfare,\n isTransferConfirmed,\n onShowWarning,\n}) => {\n const [isCopied, setIsCopied] = useState(false);\n const [isDownloaded, setIsDownloaded] = useState(false);\n const [isLoadingKeys, setIsLoadingKeys] = useState(false);\n const [isLoadingKeysError, setIsLoadingKeysError] = useState(false);\n const redirect = useRedirect();\n\n const formattedSecrets = useMemo(() => {\n return secretKeys\n ? [\n ...secretKeys.keys.map((item) => ({\n ...item,\n id: item.didDocumentKey.id.replace('#', ''),\n })),\n ...(secretKeys.authClients\n ? secretKeys.authClients.reduce(\n (acc, { clientId, clientSecret }) => [\n ...acc,\n { id: 'Client Id', key: clientId },\n { id: 'Client Secret', key: clientSecret },\n ],\n [],\n )\n : []),\n ]\n : [];\n }, [secretKeys]);\n\n const onCopy = () => {\n copyTextToClipboard(objectToString(secretKeys), (err) => {\n setIsCopied(!err);\n });\n };\n\n const handleClose = () => {\n if ((!isCopied && !isDownloaded) || isLoadingKeysError) {\n onClose();\n onShowWarning();\n } else {\n onClose();\n redirect('/');\n }\n };\n\n return (\n <Popup\n onClose={handleClose}\n title=\"Congratulations!\"\n isOpen={isModalOpened}\n mainContainerStyles={{ p: '48px 0 0 0' }}\n titleStyles={{ pl: '48px' }}\n disableCloseButton={isLoadingKeys}\n >\n <Box sx={{ px: 6 }}>\n <Typography variant=\"h4\" sx={styles.congratulationsText}>\n Your organization is now registered on Velocity Network™.\n </Typography>\n <Typography variant=\"pl\" fontWeight={600}>\n Please save your organization’s unique keys in a secure location, as they will not be\n available once you close this window.\n </Typography>\n </Box>\n <Box sx={{ backgroundColor: '#F5F7FB', px: 6, pb: 6, pt: 4 }}>\n {isSecureTransfare && isTransferConfirmed && (\n <Stack flexDirection=\"row\" alignItems=\"center\">\n <CheckCircleIcon sx={styles.circleIcon} />\n <Typography component=\"div\">\n Your organization’s keys were securely transferred to Company\n </Typography>\n </Stack>\n )}\n {isSecureTransfare && !isTransferConfirmed && (\n <Stack flexDirection=\"row\" alignItems=\"top\">\n <InfoIcon sx={styles.infoIcon} />\n <Stack flexDirection=\"column\">\n <Typography>\n Your keys may have been sent to your selected credential agent operator, check with\n them to see if they have securely received the keys.\n </Typography>\n <Typography sx={styles.warningText}>\n Make sure you download your keys immediately.\n </Typography>\n </Stack>\n </Stack>\n )}\n <Form>\n {formattedSecrets.map(({ id, key }) => (\n <Grid key={id} container spacing={2} columns={14} sx={styles.keysBlock}>\n <Grid item xs={5} sx={styles.keyLabel}>\n <Typography>{id}</Typography>\n </Grid>\n <Grid item xs={9}>\n <Typography sx={styles.keyValue}>{key}</Typography>\n </Grid>\n </Grid>\n ))}\n <Box marginTop=\"30px\" sx={styles.doNotDisclosureBlock}>\n <ErrorOutlineIcon />\n <Typography marginLeft=\"20px\">\n Do not disclose these keys to unauthorised persons or transmit via unsecured channels.\n </Typography>\n </Box>\n\n <Box sx={styles.buttonBlock}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={[styles.button, { marginRight: '30px' }]}\n onClick={onCopy}\n >\n {isCopied ? 'Copied' : 'Copy'}\n </Button>\n\n <Button\n variant=\"outlined\"\n endIcon={<DownloadIcon />}\n sx={styles.button}\n onClick={() => {\n downloadTxtAsFile(\n 'keys.json',\n objectToString(secretKeys),\n (isLoading) => setIsLoadingKeys(isLoading),\n (isError) => setIsLoadingKeysError(isError),\n (isClicked) => setIsDownloaded(isClicked),\n );\n }}\n >\n Download\n </Button>\n </Box>\n </Form>\n </Box>\n </Popup>\n );\n};\n\nconst styles = {\n button: { px: 4, py: 1, fontSize: '16px', width: '160px' },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: '40px',\n },\n congratulationsText: {\n marginBottom: '20px',\n lineHeight: '130%',\n },\n keysBlock: {\n marginTop: '7px',\n },\n keyLabel: {\n display: 'flex',\n alignItems: 'center',\n wordBreak: 'break-all',\n },\n keyValue: {\n width: '100%',\n borderColor: 'divider.main',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: '6px',\n padding: '16px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n },\n doNotDisclosureBlock: {\n color: 'secondary.light',\n fontSize: '14px',\n display: 'flex',\n flexDirection: 'row',\n },\n circleIcon: { color: 'primary.success', fontSize: '1.75rem', mr: 3 },\n infoIcon: { color: 'primary.warning', fontSize: '1.5rem', mr: 3 },\n warningText: { fontWeight: 'bold', mt: 2 },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSecretKeysPopup.propTypes = {\n isModalOpened: PropTypes.bool,\n // eslint-disable-next-line react/forbid-prop-types\n secretKeys: PropTypes.object,\n onClose: PropTypes.func,\n onShowWarning: PropTypes.func,\n isSecureTransfare: PropTypes.bool,\n isTransferConfirmed: PropTypes.bool,\n};\n\nexport default SecretKeysPopup;\n"],"names":["ReactRouterLink","CreateOrganisation","SecretKeysPopup","DEFAULT_STATUS_STATE","styles","useLocation","ClearIcon","LoopIcon"],"mappings":"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"}
1
+ {"version":3,"file":"invitations.js","sources":["../../src/pages/invitations/CreateOrganisationFromInvitation.jsx","../../src/pages/invitations/utils/getStatusByCode.js","../../src/pages/invitations/InvitationCreateForm.jsx","../../src/pages/invitations/InvitationExistingOrgPopup.jsx","../../src/pages/invitations/InvitationResend.jsx","../../src/pages/invitations/InvitationsList.jsx","../../src/pages/invitations/SecretKeysPopup.jsx"],"sourcesContent":["/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Stack, Typography } from '@mui/material';\nimport { Link as ReactRouterLink, useParams } from 'react-router';\nimport { useCreateController, useGetOne, useRedirect, useLogout, useRefresh } from 'react-admin';\nimport AppBar from '@mui/material/AppBar';\nimport Toolbar from '@mui/material/Toolbar';\nimport { useEffect, useState, useCallback } from 'react';\nimport PropTypes from 'prop-types';\nimport { FOOTER_HEIGHT } from '@/theme/theme.js';\nimport CreateOrganisation from '@/components/organizations/CreateOrganization.jsx';\nimport InvitationServiceInfo from '@/components/invitations/InvitationServiceInfo.jsx';\nimport Popup from '@/components/common/Popup.jsx';\nimport Loading from '@/components/Loading.jsx';\nimport { MESSAGE_CODES } from '@/constants/messageCodes.js';\nimport { formatWebSiteUrl, formatRegistrationNumbers, parseJwt } from '@/utils/index.jsx';\nimport useCountryCodes from '@/utils/countryCodes.js';\nimport { dataResources } from '@/utils/remoteDataProvider.js';\nimport { useAuth } from '@/utils/auth/AuthContext.js';\nimport useSelectedOrganization from '@/state/selectedOrganizationState.js';\nimport { SecretKeysPopup } from '../services/components/SecretKeysPopup/index.jsx';\n\nconst CreateOrganizationFromInvitation = ({ InterceptOnCreate }) => {\n const { code } = useParams();\n const refresh = useRefresh();\n const redirect = useRedirect();\n const auth = useAuth();\n const { user, getAccessToken } = auth;\n const logout = useLogout();\n\n const [, setDid] = useSelectedOrganization();\n const { data: countryCodes, isLoading } = useCountryCodes();\n\n const [hasOrganisations, setHasOrganisations] = useState(false);\n\n const [isLoader, setIsLoader] = useState(false);\n const [secretKeys, setSecretKeys] = useState(null);\n // popups\n const [isOpenSecretPopup, setIsOpenSecretPopup] = useState(false);\n const [isOpenNotExistingPopup, setIsOpenNotExistingPopup] = useState(false);\n const [isOpenExpiredPopup, setIsOpenExpiredPopup] = useState(false);\n const [isInterceptOnCreateOpen, setIsInterceptOnCreateOpen] = useState(false);\n\n const { save, saving: creatingIsLoading } = useCreateController({\n resource: 'organizations',\n mutationOptions: {\n onSuccess: async (resp) => {\n refresh();\n setDid(resp.id);\n setSecretKeys({ keys: resp.keys, authClients: resp.authClients });\n },\n },\n });\n\n const { data: userData, isLoading: isUserDataLoading } = useGetOne(dataResources.USERS, {\n id: user.sub,\n });\n\n const { data: invitationData, isLoading: invitationIsLoading } = useGetOne(\n 'invitations',\n {\n id: code,\n },\n {\n onError: (error) => {\n if (error?.body?.statusCode === 404) {\n setIsOpenNotExistingPopup(true);\n }\n if (\n error?.body?.statusCode === 400 &&\n error?.body?.errorCode === MESSAGE_CODES.INVITATION_EXPIRED\n ) {\n setIsOpenExpiredPopup(true);\n }\n },\n },\n );\n\n const { data: inviterInfo = { credentialSubject: { name: '' } }, isLoading: isLoadingOrgData } =\n useGetOne(\n dataResources.VERIFIED_PROFILE,\n { id: invitationData?.inviterDid },\n { enabled: !!invitationData?.inviterDid },\n );\n\n // Check if the user has an organization\n useEffect(() => {\n (async () => {\n try {\n const token = await getAccessToken();\n const tokenDecoded = parseJwt(token);\n setHasOrganisations(\n Boolean(\n tokenDecoded['http://velocitynetwork.foundation/groupId'] ||\n tokenDecoded.scope.includes('admin'),\n ),\n );\n } catch (e) {\n console.error(e);\n }\n })();\n }, [getAccessToken]);\n\n useEffect(() => {\n const inviteeEmail = invitationData?.inviteeEmail;\n const userEmail = userData?.email;\n\n if (inviteeEmail && userEmail && userEmail !== inviteeEmail) {\n localStorage.setItem('createInvitationURL', window.location.pathname);\n logout(auth, window.location.href, true);\n }\n }, [userData, invitationData, logout, auth]);\n\n useEffect(() => {\n if (secretKeys) {\n if (InterceptOnCreate) {\n setIsInterceptOnCreateOpen(true);\n } else {\n setIsOpenSecretPopup(true);\n }\n }\n }, [InterceptOnCreate, secretKeys]);\n\n const handleSubmit = useCallback(\n async (formData) => {\n await save({\n profile: {\n ...formData,\n website: formatWebSiteUrl(formData.website),\n linkedInProfile: formatWebSiteUrl(formData.linkedInProfile),\n registrationNumbers: formatRegistrationNumbers(formData.registrationNumbers),\n },\n serviceEndpoints: invitationData?.inviteeService,\n invitationCode: code,\n });\n },\n [save, code, invitationData],\n );\n\n useEffect(() => {\n setIsLoader(isLoading || invitationIsLoading || isLoadingOrgData || isUserDataLoading);\n }, [isLoading, invitationIsLoading, isLoadingOrgData, isUserDataLoading]);\n\n return (\n <Stack sx={sxStyles.root}>\n <AppBar position=\"static\" sx={sxStyles.appBar}>\n <Toolbar>\n <ReactRouterLink to=\"/\" style={{ display: 'flex' }} role=\"link\">\n <img src=\"/assets/images/logo.svg\" alt=\"Velocity\" />\n </ReactRouterLink>\n </Toolbar>\n </AppBar>\n <Stack sx={{ flexGrow: 1 }}>\n {isLoader ? (\n <Loading sx={sxStyles.loader} />\n ) : (\n <CreateOrganisation\n buttonTitle=\"Save\"\n userData={userData}\n isLoading={creatingIsLoading}\n title=\"Welcome\"\n subTitle={`${inviterInfo.credentialSubject.name} has invited you to join Velocity Network™. Complete/edit your organization\n profile below and click SAVE to complete your registration.`}\n onSubmit={handleSubmit}\n defaultValues={{\n ...invitationData?.inviteeProfile,\n ...invitationData?.keyIndividuals,\n }}\n countryCodes={countryCodes}\n hasOrganisations={hasOrganisations}\n >\n <InvitationServiceInfo inviteeService={invitationData?.inviteeService} />\n </CreateOrganisation>\n )}\n\n {InterceptOnCreate && (\n <InterceptOnCreate\n isInterceptOnCreateOpen={isInterceptOnCreateOpen}\n serviceId={invitationData?.inviteeService?.[0]?.id}\n // did={did}\n onNext={() => {\n setIsOpenSecretPopup(true);\n }}\n onClose={() => {\n setIsOpenSecretPopup(true);\n }}\n isIssueOrInspection={true}\n selectedCAO={invitationData?.inviterDid}\n />\n )}\n\n <SecretKeysPopup\n isOpen={isOpenSecretPopup}\n secretKeys={secretKeys}\n onClose={() => {\n setIsOpenSecretPopup(false);\n getAccessToken({ cacheMode: 'off' });\n redirect('/');\n }}\n wording={{\n title: 'Your organization is now registered on Velocity Network™.',\n subtitle:\n 'Please save your organization’s unique keys in a secure location, as they will not be available once you close this window.',\n }}\n warningWording={{\n title: 'You must download a copy of your keys before exiting',\n subtitle:\n 'They will not be available again and are critical for managing your organization data.',\n }}\n />\n\n <Popup\n isOpen={isOpenNotExistingPopup}\n onClose={() => {\n setIsOpenNotExistingPopup(false);\n redirect('/');\n }}\n title=\"That invitation link either has been deleted or doesn’t exist\"\n mainContainerStyles={sxStyles.errorPopupContainer}\n titleStyles={{ ...sxStyles.errorTitle, ...sxStyles.noInvitation }}\n />\n <Popup\n isOpen={isOpenExpiredPopup}\n onClose={() => {\n setIsOpenExpiredPopup(false);\n redirect('/');\n }}\n title=\"This invitation link either has expired\"\n mainContainerStyles={sxStyles.errorPopupContainer}\n titleStyles={sxStyles.errorTitle}\n >\n <Stack flexDirection=\"row\" justifyContent=\"center\">\n <Typography variant=\"pl\">Ask your service provider to resend the invitation</Typography>\n </Stack>\n </Popup>\n </Stack>\n </Stack>\n );\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nCreateOrganizationFromInvitation.propTypes = {\n InterceptOnCreate: PropTypes.elementType,\n};\n\nexport default CreateOrganizationFromInvitation;\n\nconst sxStyles = {\n root: { minHeight: '100vh' },\n loader: { flexGrow: 1, pb: FOOTER_HEIGHT },\n appBar: {\n boxShadow: 'none',\n backgroundColor: 'transparent',\n minHeight: '79px',\n display: 'flex',\n justifyContent: 'center',\n },\n serviceContainer: {\n backgroundColor: (theme) => theme.customColors.grey1,\n borderRadius: '12px',\n p: '32px 40px',\n mt: '25px',\n },\n errorPopupContainer: {\n px: '50px',\n },\n errorTitle: { textAlign: 'center' },\n noInvitation: { p: 0 },\n};\n","import { MESSAGE_CODES } from '@/constants/messageCodes.js';\n\nexport const getStatusByCode = (errorCode) => {\n switch (errorCode) {\n case MESSAGE_CODES.BAD_INVITEE_EMAIL: {\n return 'The email address is invalid and the invitation was not sent';\n }\n case MESSAGE_CODES.INVITATION_SENT: {\n return 'The invitation was sent';\n }\n case MESSAGE_CODES.INVITATION_NOT_SENT: {\n return 'Invitation was not sent. Check the email address';\n }\n\n default:\n return 'The invitation was not sent';\n }\n};\n\nexport default getStatusByCode;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\nimport { useLocation } from 'react-router';\nimport { useGetOne, useCreateController, useRedirect, useRefresh } from 'react-admin';\nimport { Box, Typography, Button } from '@mui/material';\nimport KeyboardArrowLeftIcon from '@mui/icons-material/KeyboardArrowLeft';\n// eslint-disable-next-line import/no-extraneous-dependencies\n\nimport Popup from '../../components/common/Popup.jsx';\nimport CreateInvitationForOrganization from '../../components/organizations/CreateInvitationForOrganization.jsx';\nimport { CREDENTIAL_TYPES_IDS } from '../../utils/serviceTypes.js';\nimport useCountryCodes from '../../utils/countryCodes.js';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport StatusPopup from '../../components/common/StatusPopup.jsx';\nimport SetInvitationService from '../../components/invitations/SetInvitationService.jsx';\nimport { MESSAGE_CODES } from '../../constants/messageCodes.js';\nimport SetKeyIndividuals from '../../components/invitations/SetKeyIndividuals.jsx';\nimport { formatWebSiteUrl, formatRegistrationNumbers } from '../../utils/index.jsx';\nimport { getStatusByCode } from './utils/index.js';\n\nconst DEFAULT_STATUS_STATE = { error: null, title: '' };\n\nconst InvitationCreateForm = () => {\n const { pathname } = useLocation();\n const redirect = useRedirect();\n const [did] = useSelectedOrganization();\n const refresh = useRefresh();\n const { data: countryCodes } = useCountryCodes();\n\n const isModalOpened = /\\/invitations\\/create/.test(pathname);\n const isStep1 = /\\/invitations\\/create\\/step-1/.test(pathname);\n const isStep2 = /\\/invitations\\/create\\/step-2/.test(pathname);\n const isStep3 = /\\/invitations\\/create\\/step-3/.test(pathname);\n\n const [organizationProfileData, setOrganizationProfileData] = useState(null);\n const [serviceData, setServiceData] = useState(null);\n const [keyIndividualsData, setKeyIndividualsData] = useState(null);\n\n const [statusPopup, setStatusPopup] = useState(DEFAULT_STATUS_STATE);\n const [isStatusPopupOpen, setIsStatusPopupOpen] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const { data: organisationData } = useGetOne('organizations', { id: did }, { enabled: !!did });\n const serviceEndpointsOptions = useMemo(\n () =>\n (organisationData?.didDoc?.service || []).reduce((acc, { type, id, serviceEndpoint }) => {\n if (type === CREDENTIAL_TYPES_IDS.VLC_CREDENTIAL_AGENT_OPERATOR) {\n return [...acc, { name: `${id} ${serviceEndpoint}`, id: `${did}${id}` }];\n }\n return acc;\n }, []),\n [did, organisationData?.didDoc?.service],\n );\n const openedStateRef = useRef(isModalOpened);\n\n const onClose = useCallback(\n (_event, reason) => {\n if (reason === 'backdropClick') {\n return;\n }\n\n setOrganizationProfileData(null);\n redirect('/invitations');\n },\n [redirect],\n );\n\n const handleCloseStatusPopup = useCallback(() => {\n setStatusPopup(DEFAULT_STATUS_STATE);\n setIsStatusPopupOpen(false);\n onClose();\n }, [onClose]);\n\n // clear previous state after close\n useEffect(() => {\n if (openedStateRef.current === false && isModalOpened) {\n redirect('/invitations/create/step-1');\n setServiceData(null);\n setKeyIndividualsData(null);\n setOrganizationProfileData(null);\n setStatusPopup(DEFAULT_STATUS_STATE);\n }\n\n // eslint-disable-next-line better-mutation/no-mutation\n openedStateRef.current = isModalOpened;\n }, [isModalOpened, redirect]);\n\n useEffect(() => {\n if (\n (!organizationProfileData && (isStep2 || isStep3)) ||\n (isStatusPopupOpen && !statusPopup.title)\n ) {\n redirect('/invitations/create/step-1');\n }\n }, [\n isStatusPopupOpen,\n isStep2,\n isStep3,\n statusPopup.title,\n serviceData,\n organizationProfileData,\n redirect,\n ]);\n\n const goToCreateServiceStep = (data, authority) => {\n setOrganizationProfileData({\n ...data,\n website: formatWebSiteUrl(data.website),\n linkedInProfile: formatWebSiteUrl(data.linkedInProfile),\n registrationNumbers: formatRegistrationNumbers(data.registrationNumbers, authority),\n });\n redirect('/invitations/create/step-2');\n };\n\n const goToSetKeyIndividualsStep = (data) => {\n setServiceData(data);\n redirect('/invitations/create/step-3');\n };\n\n const handleBackToServiceStep = (data) => {\n setKeyIndividualsData(data);\n redirect('/invitations/create/step-2');\n };\n\n const { save } = useCreateController({\n resource: 'invitations',\n mutationOptions: {\n meta: { id: did },\n onSuccess: async (resp) => {\n refresh();\n if (resp.invitation.code && organizationProfileData?.org?.id) {\n redirect(`/invitations?code=${resp.invitation.code}`);\n\n return;\n }\n\n setStatusPopup({\n error: resp.messageCode === MESSAGE_CODES.INVITATION_SENT ? null : resp.messageCode,\n title: getStatusByCode(resp.messageCode),\n });\n setIsStatusPopupOpen(true);\n redirect('/invitations/create/status');\n },\n onError: (error) => {\n setStatusPopup({\n error: error?.body?.errorCode || 'bad request',\n title: getStatusByCode(error?.body?.errorCode),\n });\n setIsStatusPopupOpen(true);\n redirect('/invitations/create/status');\n },\n },\n });\n\n const handleSubmit = async (data) => {\n setLoading(true);\n const { org, ...inviteeProfile } = organizationProfileData;\n const { signatoryEmail, ...keyIndividuals } = data;\n\n await save({\n inviteeEmail: data.adminEmail,\n inviteeService: [serviceData],\n inviteeProfile,\n keyIndividuals: {\n ...keyIndividuals,\n ...(signatoryEmail ? { signatoryEmail } : {}),\n },\n inviteeDid: org?.id || undefined,\n });\n\n setLoading(false);\n };\n\n return (\n <>\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n >\n <Box sx={{ width: '524px' }}>\n {isStep1 && (\n <>\n <Typography variant=\"pm\" sx={styles.step}>\n Step 1/3\n </Typography>\n <CreateInvitationForOrganization\n buttonTitle=\"Next\"\n onSubmit={goToCreateServiceStep}\n onCancel={onClose}\n defaultValues={organizationProfileData}\n countryCodes={countryCodes}\n />\n </>\n )}\n {isStep2 && (\n <>\n <Typography variant=\"pm\" sx={styles.step}>\n Step 2/3\n </Typography>\n <Typography variant=\"h1\" mb={2}>\n Service\n </Typography>\n <Typography>Please complete the details below to continue</Typography>\n <SetInvitationService\n onSubmit={goToSetKeyIndividualsStep}\n defaultValues={serviceData}\n serviceEndpointsOptions={serviceEndpointsOptions}\n >\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.backButton}\n onClick={() => redirect('/invitations/create/step-1')}\n startIcon={<KeyboardArrowLeftIcon />}\n >\n Back\n </Button>\n </SetInvitationService>\n </>\n )}\n {isStep3 && (\n <>\n <Typography variant=\"pm\" sx={styles.step}>\n Step 3/3\n </Typography>\n <Typography variant=\"h1\" mb={2}>\n Key Individuals\n </Typography>\n <SetKeyIndividuals\n onSubmit={handleSubmit}\n serviceEndpointsOptions={serviceEndpointsOptions}\n defaultValues={keyIndividualsData}\n onBack={handleBackToServiceStep}\n loading={loading}\n />\n </>\n )}\n </Box>\n </Popup>\n\n <StatusPopup\n isModalOpened={isStatusPopupOpen}\n buttonLabel=\"Back to invitations\"\n title={statusPopup.title}\n subTitle={statusPopup.error}\n error={statusPopup.error}\n onClose={handleCloseStatusPopup}\n onButtonClick={handleCloseStatusPopup}\n />\n </>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2 },\n step: { color: (theme) => theme.palette.primary.main, pb: '30px', display: 'block' },\n backButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n },\n};\n\nexport default InvitationCreateForm;\n","import { useCallback, useState } from 'react';\nimport { useSearchParams } from 'react-router';\nimport { useGetOne, useRedirect, useCreate } from 'react-admin';\nimport { Box, Button, Typography } from '@mui/material';\nimport { kebabCase } from 'lodash-es';\n\nimport { credentialTypesByServiceTypes } from '../../utils/serviceTypes.js';\nimport InvitationServiceInfo from '../../components/invitations/InvitationServiceInfo.jsx';\nimport Popup from '../../components/common/Popup.jsx';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\nimport Loading from '../../components/Loading.jsx';\nimport { getNewServiceIndex } from '../../utils/invitations.js';\n\nconst InvitationExistingOrgPopup = () => {\n const [searchParams] = useSearchParams();\n const redirect = useRedirect();\n const code = searchParams.get('code');\n const isModalOpened = !!code;\n\n const [createService] = useCreate();\n const [loading, setLoading] = useState(false);\n\n const { data: invitationData, isLoading } = useGetOne(\n dataResources.INVITATIONS,\n { meta: { code } },\n { enabled: !!code },\n );\n\n const handleClose = useCallback(() => {\n redirect('/invitations');\n }, [redirect]);\n\n const handleSave = useCallback(async () => {\n try {\n setLoading(true);\n const inviteeService = invitationData.inviteeService[0];\n const kebabType = kebabCase(inviteeService.type);\n const result = await createService(\n dataResources.SERVICES,\n {\n data: {\n organizationId: invitationData.inviterDid,\n payload: {\n id: `${invitationData.inviterDid}#${kebabType}-${getNewServiceIndex(\n invitationData.inviteeService,\n kebabType,\n )}`,\n serviceEndpoint: inviteeService.serviceEndpoint,\n type: inviteeService.type,\n credentialTypes: credentialTypesByServiceTypes[inviteeService.type],\n },\n },\n },\n { returnPromise: true },\n );\n\n if (result) {\n setLoading(false);\n handleClose();\n }\n } catch (e) {\n setLoading(false);\n }\n }, [createService, handleClose, invitationData]);\n\n return (\n <Popup\n onClose={handleClose}\n title=\"Invitation\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n titleStyles={styles.title}\n >\n {isLoading && !invitationData ? (\n <Box style={styles.modalContainer}>\n <Loading />\n </Box>\n ) : (\n <>\n <Typography variant=\"pl\">{invitationData?.inviteeProfile?.name} invited</Typography>\n <InvitationServiceInfo\n inviteeService={invitationData?.inviteeService}\n agreementStyles={styles.agreement}\n />\n <Box display=\"flex\" justifyContent=\"center\" pt={4}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n size=\"large\"\n sx={styles.cancelButton}\n onClick={handleClose}\n >\n Cancel\n </Button>\n <Button\n variant=\"outlined\"\n color=\"primary\"\n size=\"large\"\n sx={styles.cancelButton}\n onClick={handleSave}\n isLoading={loading}\n >\n {loading ? <Loading color=\"error\" sx={{ pl: '10px' }} size={26} /> : 'Save'}\n </Button>\n </Box>\n </>\n )}\n </Popup>\n );\n};\n\nconst styles = {\n mainContainer: { pt: 2, paddingTop: '40px !important' },\n modalContainer: {\n width: '524px',\n },\n title: {\n paddingBottom: '12px',\n },\n agreement: { textAlign: 'start' },\n cancelButton: {\n minWidth: 160,\n mr: 2,\n },\n};\n\nexport default InvitationExistingOrgPopup;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useState, useCallback } from 'react';\nimport { useUpdate, useRedirect, useRefresh } from 'react-admin';\nimport { useLocation } from 'react-router-dom';\nimport PropTypes from 'prop-types';\nimport { Typography, Button } from '@mui/material';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport { MESSAGE_CODES } from '../../constants/messageCodes.js';\nimport { getStatusByCode } from './utils/index.js';\nimport SetInvitationEmail from '../../components/invitations/SetInvitationEmail.jsx';\nimport Popup from '../../components/common/Popup.jsx';\nimport StatusPopup from '../../components/common/StatusPopup.jsx';\n\nconst DEFAULT_STATUS_STATE = { error: null, title: '' };\n\nconst InvitationResend = ({ selectedInvitation, inviteeEmail }) => {\n const [did] = useSelectedOrganization();\n const refresh = useRefresh();\n const [statusPopup, setStatusPopup] = useState(DEFAULT_STATUS_STATE);\n const [isStatusPopupOpen, setStatusPopupOpen] = useState(false);\n const redirect = useRedirect();\n const { pathname } = useLocation();\n\n const resendInvitationURL = `invitations/${selectedInvitation}/resend`;\n\n const isModalOpened = new RegExp(resendInvitationURL).test(pathname);\n\n const onClose = useCallback(() => {\n redirect('/invitations');\n }, [redirect]);\n\n const handleCloseStatusPopup = useCallback(() => {\n setStatusPopup(DEFAULT_STATUS_STATE);\n onClose();\n }, [onClose]);\n\n const handleSubmit = async (emailData) => {\n await update(\n 'invitations',\n {\n id: selectedInvitation,\n data: {\n organizationId: did,\n payload: {\n ...emailData,\n },\n },\n },\n { returnPromise: true },\n );\n };\n\n const [update] = useUpdate(undefined, undefined, {\n onSuccess: async (resp) => {\n refresh();\n setStatusPopup({\n error: resp.messageCode === MESSAGE_CODES.INVITATION_SENT ? null : resp.messageCode,\n title: getStatusByCode(resp.messageCode),\n });\n setStatusPopupOpen(true);\n },\n onError: (error) => {\n setStatusPopup({\n error: error?.body?.errorCode || 'bad request',\n title: getStatusByCode(error?.body?.errorCode),\n });\n setStatusPopupOpen(true);\n },\n });\n\n if (isStatusPopupOpen && statusPopup.title) {\n return (\n <StatusPopup\n isModalOpened={isStatusPopupOpen}\n buttonLabel=\"Back to invitations\"\n title={statusPopup.title}\n subTitle={statusPopup.error}\n error={statusPopup.error}\n onClose={handleCloseStatusPopup}\n onButtonClick={handleCloseStatusPopup}\n />\n );\n }\n\n return (\n <Popup\n onClose={onClose}\n title=\"\"\n isOpen={isModalOpened}\n mainContainerStyles={styles.mainContainer}\n >\n <Typography variant=\"h1\" mb={2}>\n Email address\n </Typography>\n <Typography pb=\"30px\">Please complete the details below to continue.</Typography>\n <SetInvitationEmail onSubmit={handleSubmit} defaultValue={inviteeEmail}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={styles.cancelButton}\n onClick={() => redirect('/invitations')}\n >\n Cancel\n </Button>\n </SetInvitationEmail>\n </Popup>\n );\n};\n\nexport default InvitationResend;\n\nconst styles = {\n mainContainer: { pt: 2 },\n cancelButton: {\n px: 4,\n py: 1,\n fontSize: '16px',\n width: '160px',\n marginRight: '20px',\n },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nInvitationResend.propTypes = {\n selectedInvitation: PropTypes.string,\n inviteeEmail: PropTypes.string,\n};\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { Box, Container, Typography } from '@mui/material';\nimport { Loop as LoopIcon, Clear as ClearIcon } from '@mui/icons-material';\nimport { useGetList, useGetOne, useRedirect, useDelete } from 'react-admin';\nimport { useMemo, useState, useCallback, useEffect, useRef } from 'react';\nimport useSelectedOrganization from '../../state/selectedOrganizationState.js';\nimport InfoBlock from '../../components/common/infoBlock.jsx';\nimport InvitationsListContainer from '../../components/invitations/InvitationsListContainer.jsx';\nimport InvitationCreateForm from './InvitationCreateForm.jsx';\nimport InvitationResend from './InvitationResend.jsx';\nimport InvitationExistingOrgPopup from './InvitationExistingOrgPopup.jsx';\nimport { dataResources } from '../../utils/remoteDataProvider.js';\n\nconst INVITATIONS_UNAVAILABLE =\n 'This feature is only available to organizations that have set up a Credential Agent Operator service.';\n\nconst InvitationsList = () => {\n const redirect = useRedirect();\n const [did] = useSelectedOrganization();\n const { data: organizationData, isLoading: isLoadingOrganization } = useGetOne(\n 'organizations',\n { id: did },\n { enabled: !!did },\n );\n\n const [page, setPage] = useState(0);\n\n const {\n data,\n isLoading,\n refetch: refetchInvitationsList,\n } = useGetList('invitations', { meta: { id: did, skip: page }, enabled: !!did });\n\n const [invitationToResend, setInvitationToResend] = useState(null);\n const [inviteeEmail, setInviteeEmail] = useState(null);\n const [invitationToDelete, setInvitationToDelete] = useState(null);\n\n // TODO Paging should be fixed after API invitations returns total\n const handleChangePage = useCallback((nextpage) => {\n setPage(nextpage);\n }, []);\n\n const [deleteOne] = useDelete(\n dataResources.INVITATIONS,\n {\n id: invitationToDelete,\n meta: { organizationId: did },\n },\n {\n onSettled: () =>\n refetchInvitationsList().finally(() => {\n setInvitationToDelete(null);\n }),\n },\n );\n\n const timerId = useRef(null);\n useEffect(() => {\n if (invitationToDelete) {\n // eslint-disable-next-line better-mutation/no-mutation\n timerId.current = setTimeout(() => {\n deleteOne();\n }, 5000);\n } else {\n clearTimeout(timerId.current);\n }\n return () => {\n clearTimeout(timerId.current);\n if (invitationToDelete) {\n deleteOne();\n }\n };\n }, [invitationToDelete, deleteOne]);\n\n const withdrawAction = useMemo(\n () => ({\n title: 'WITHDRAW',\n icon: <ClearIcon />,\n action: (id) => {\n setInvitationToDelete(id);\n },\n }),\n [setInvitationToDelete],\n );\n\n const resendAction = useMemo(\n () => ({\n title: 'RESEND',\n icon: <LoopIcon />,\n action: (id) => {\n setInvitationToResend(id);\n setInviteeEmail(data.find((item) => item.id === id).inviteeEmail);\n redirect(`${id}/resend/`, 'invitations');\n },\n }),\n [data, redirect, setInvitationToResend, setInviteeEmail],\n );\n\n const isCredentialAgentOperator =\n !!organizationData &&\n organizationData.profile.permittedVelocityServiceCategory.includes('CredentialAgentOperator');\n return (\n <Container maxWidth=\"xl\" sx={{ mt: 5 }}>\n <Typography variant=\"h3\">Invitations</Typography>\n <Box sx={{ mt: 2, mb: 4 }}>\n <Typography variant=\"subtitle1\">\n Manage your sent invitations below by viewing the status of each invitation and resending\n or withdrawing pending invitations.\n </Typography>\n </Box>\n\n {isCredentialAgentOperator && !isLoading && (\n <InvitationsListContainer\n invitations={data}\n invitationToDelete={invitationToDelete}\n onUndoDelete={() => setInvitationToDelete(null)}\n withdrawAction={withdrawAction}\n resendAction={resendAction}\n onCreateInvite={() => redirect('./create/step-1')}\n changePage={handleChangePage}\n currentPage={page}\n />\n )}\n\n {!isCredentialAgentOperator && !isLoadingOrganization && (\n <InfoBlock text={INVITATIONS_UNAVAILABLE} />\n )}\n\n <InvitationCreateForm />\n <InvitationResend selectedInvitation={invitationToResend} inviteeEmail={inviteeEmail} />\n <InvitationExistingOrgPopup />\n </Container>\n );\n};\n\nexport default InvitationsList;\n","/**\n * Copyright 2023 Velocity Team\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { useMemo, useState } from 'react';\nimport { Box, Typography, Button, Grid, Stack } from '@mui/material';\nimport { Form, useRedirect } from 'react-admin';\nimport ErrorOutlineIcon from '@mui/icons-material/ErrorOutline';\nimport CheckCircleIcon from '@mui/icons-material/CheckCircle';\nimport InfoIcon from '@mui/icons-material/Info';\nimport DownloadIcon from '@mui/icons-material/Download';\nimport PropTypes from 'prop-types';\n\nimport { copyTextToClipboard, objectToString } from '../../utils/index.jsx';\nimport downloadTxtAsFile from '../../utils/downloadTxtAsFile.js';\nimport Popup from '../../components/common/Popup.jsx';\n\nconst SecretKeysPopup = ({\n isModalOpened,\n secretKeys,\n onClose,\n isSecureTransfare,\n isTransferConfirmed,\n onShowWarning,\n}) => {\n const [isCopied, setIsCopied] = useState(false);\n const [isDownloaded, setIsDownloaded] = useState(false);\n const [isLoadingKeys, setIsLoadingKeys] = useState(false);\n const [isLoadingKeysError, setIsLoadingKeysError] = useState(false);\n const redirect = useRedirect();\n\n const formattedSecrets = useMemo(() => {\n return secretKeys\n ? [\n ...secretKeys.keys.map((item) => ({\n ...item,\n id: item.didDocumentKey.id.replace('#', ''),\n })),\n ...(secretKeys.authClients\n ? secretKeys.authClients.reduce(\n (acc, { clientId, clientSecret }) => [\n ...acc,\n { id: 'Client Id', key: clientId },\n { id: 'Client Secret', key: clientSecret },\n ],\n [],\n )\n : []),\n ]\n : [];\n }, [secretKeys]);\n\n const onCopy = () => {\n copyTextToClipboard(objectToString(secretKeys), (err) => {\n setIsCopied(!err);\n });\n };\n\n const handleClose = () => {\n if ((!isCopied && !isDownloaded) || isLoadingKeysError) {\n onClose();\n onShowWarning();\n } else {\n onClose();\n redirect('/');\n }\n };\n\n return (\n <Popup\n onClose={handleClose}\n title=\"Congratulations!\"\n isOpen={isModalOpened}\n mainContainerStyles={{ p: '48px 0 0 0' }}\n titleStyles={{ pl: '48px' }}\n disableCloseButton={isLoadingKeys}\n >\n <Box sx={{ px: 6 }}>\n <Typography variant=\"h4\" sx={styles.congratulationsText}>\n Your organization is now registered on Velocity Network™.\n </Typography>\n <Typography variant=\"pl\" fontWeight={600}>\n Please save your organization’s unique keys in a secure location, as they will not be\n available once you close this window.\n </Typography>\n </Box>\n <Box sx={{ backgroundColor: '#F5F7FB', px: 6, pb: 6, pt: 4 }}>\n {isSecureTransfare && isTransferConfirmed && (\n <Stack flexDirection=\"row\" alignItems=\"center\">\n <CheckCircleIcon sx={styles.circleIcon} />\n <Typography component=\"div\">\n Your organization’s keys were securely transferred to Company\n </Typography>\n </Stack>\n )}\n {isSecureTransfare && !isTransferConfirmed && (\n <Stack flexDirection=\"row\" alignItems=\"top\">\n <InfoIcon sx={styles.infoIcon} />\n <Stack flexDirection=\"column\">\n <Typography>\n Your keys may have been sent to your selected credential agent operator, check with\n them to see if they have securely received the keys.\n </Typography>\n <Typography sx={styles.warningText}>\n Make sure you download your keys immediately.\n </Typography>\n </Stack>\n </Stack>\n )}\n <Form>\n {formattedSecrets.map(({ id, key }) => (\n <Grid key={id} container spacing={2} columns={14} sx={styles.keysBlock}>\n <Grid item xs={5} sx={styles.keyLabel}>\n <Typography>{id}</Typography>\n </Grid>\n <Grid item xs={9}>\n <Typography sx={styles.keyValue}>{key}</Typography>\n </Grid>\n </Grid>\n ))}\n <Box marginTop=\"30px\" sx={styles.doNotDisclosureBlock}>\n <ErrorOutlineIcon />\n <Typography marginLeft=\"20px\">\n Do not disclose these keys to unauthorised persons or transmit via unsecured channels.\n </Typography>\n </Box>\n\n <Box sx={styles.buttonBlock}>\n <Button\n variant=\"outlined\"\n color=\"secondary\"\n sx={[styles.button, { marginRight: '30px' }]}\n onClick={onCopy}\n >\n {isCopied ? 'Copied' : 'Copy'}\n </Button>\n\n <Button\n variant=\"outlined\"\n endIcon={<DownloadIcon />}\n sx={styles.button}\n onClick={() => {\n downloadTxtAsFile(\n 'keys.json',\n objectToString(secretKeys),\n (isLoading) => setIsLoadingKeys(isLoading),\n (isError) => setIsLoadingKeysError(isError),\n (isClicked) => setIsDownloaded(isClicked),\n );\n }}\n >\n Download\n </Button>\n </Box>\n </Form>\n </Box>\n </Popup>\n );\n};\n\nconst styles = {\n button: { px: 4, py: 1, fontSize: '16px', width: '160px' },\n buttonBlock: {\n display: 'flex',\n flexDirection: 'row',\n justifyContent: 'center',\n marginTop: '40px',\n },\n congratulationsText: {\n marginBottom: '20px',\n lineHeight: '130%',\n },\n keysBlock: {\n marginTop: '7px',\n },\n keyLabel: {\n display: 'flex',\n alignItems: 'center',\n wordBreak: 'break-all',\n },\n keyValue: {\n width: '100%',\n borderColor: 'divider.main',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderRadius: '6px',\n padding: '16px',\n boxSizing: 'border-box',\n wordBreak: 'break-word',\n },\n doNotDisclosureBlock: {\n color: 'secondary.light',\n fontSize: '14px',\n display: 'flex',\n flexDirection: 'row',\n },\n circleIcon: { color: 'primary.success', fontSize: '1.75rem', mr: 3 },\n infoIcon: { color: 'primary.warning', fontSize: '1.5rem', mr: 3 },\n warningText: { fontWeight: 'bold', mt: 2 },\n};\n\n// eslint-disable-next-line better-mutation/no-mutation\nSecretKeysPopup.propTypes = {\n isModalOpened: PropTypes.bool,\n // eslint-disable-next-line react/forbid-prop-types\n secretKeys: PropTypes.object,\n onClose: PropTypes.func,\n onShowWarning: PropTypes.func,\n isSecureTransfare: PropTypes.bool,\n isTransferConfirmed: PropTypes.bool,\n};\n\nexport default SecretKeysPopup;\n"],"names":["ReactRouterLink","CreateOrganisation","SecretKeysPopup","DEFAULT_STATUS_STATE","styles","useLocation","ClearIcon","LoopIcon"],"mappings":"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"}
@@ -7,17 +7,16 @@ const PropTypes = require("prop-types");
7
7
  const lodashEs = require("lodash-es");
8
8
  const Loading = require("../chunks/Loading.cGHE59CV.js");
9
9
  const Popup = require("../chunks/Popup.H_MqnNtr.js");
10
- const serviceTypes = require("../chunks/serviceTypes.D7c4G5GY.js");
11
10
  const remoteDataProvider = require("../chunks/remoteDataProvider.BCiFSYnk.js");
12
- const index = require("../chunks/index.CYCWawJT.js");
13
- const index$1 = require("../chunks/index.DND10PiY.js");
14
- const useIsIssuingInspection = require("../chunks/useIsIssuingInspection.DavhBs5B.js");
11
+ const index = require("../chunks/index.DmF-wFBs.js");
12
+ const index$1 = require("../chunks/index.DTlm8AhC.js");
13
+ const HolderWalletSelection = require("../chunks/HolderWalletSelection.BvPFTrTh.js");
15
14
  const reactRouter = require("react-router");
16
15
  const material = require("@mui/material");
17
16
  const InfoIcon = require("@mui/icons-material/Info");
18
17
  const selectedOrganizationState = require("../chunks/selectedOrganizationState.BR4G8K3M.js");
19
18
  const CreateOrganizationUtils = require("../chunks/CreateOrganizationUtils.C5C_r3Zp.js");
20
- const index$2 = require("../chunks/index.DIizFYFZ.js");
19
+ const index$2 = require("../chunks/index.Cjk52g3G.js");
21
20
  const PlusButtonBlock = require("../chunks/PlusButtonBlock.DxCg5qLP.js");
22
21
  const index$3 = require("../chunks/index.iexmV4Mr.js");
23
22
  const countryCodes = require("../chunks/countryCodes.B2bnzZrX.js");
@@ -55,7 +54,7 @@ const OrganizationAddService = ({
55
54
  return "";
56
55
  }, [selectedServiceType]);
57
56
  const openedStateRef = React.useRef(isModalOpened);
58
- const { isIssuingOrInspection, isCAO } = useIsIssuingInspection.useIsIssuingInspection(selectedServiceType);
57
+ const { isIssuingOrInspection, isCAO } = HolderWalletSelection.useIsIssuingInspection(selectedServiceType);
59
58
  const { data: credentialAgentOperators, isLoading: isLoadingCAO } = reactAdmin.useGetList(
60
59
  remoteDataProvider.dataResources.SEARCH_PROFILES,
61
60
  {
@@ -78,15 +77,12 @@ const OrganizationAddService = ({
78
77
  }
79
78
  }, [InterceptOnCreate, isCreated]);
80
79
  const onCreateCallback = React.useCallback(
81
- ({ serviceEndpoint }) => {
80
+ (service) => {
82
81
  const type = selectedServiceType.id.match(/.+v1/);
83
- setSelectedCAO(serviceEndpoint.split("#")[0]);
82
+ setSelectedCAO(service.serviceEndpoint.split("#")[0]);
83
+ const payload = index.buildPayload(service, type[0]);
84
84
  onCreate({
85
- serviceEndpoint,
86
- type: type[0],
87
- ...selectedServiceType.id.includes("Issuing") && {
88
- credentialTypes: serviceTypes.credentialTypesByServiceTypes[selectedServiceType.id]
89
- }
85
+ ...payload
90
86
  });
91
87
  },
92
88
  [onCreate, selectedServiceType.id, setSelectedCAO]
@@ -119,6 +115,7 @@ const OrganizationAddService = ({
119
115
  {
120
116
  credentialAgentOperators,
121
117
  isIssueOrInspection: isIssuingOrInspection,
118
+ selectedServiceType,
122
119
  inProgress: isSending,
123
120
  onCreate: onCreateCallback,
124
121
  handleBack: () => setSelectedStep(1)
@@ -377,9 +374,7 @@ const OrganizationCreate = ({
377
374
  serviceEndpoints: serviceData ? [
378
375
  {
379
376
  id: `${did}#${lodashEs.kebabCase(serviceData.type)}-1`,
380
- serviceEndpoint: serviceData.serviceEndpoint,
381
- type: serviceData.type,
382
- credentialTypes: serviceTypes.credentialTypesByServiceTypes[serviceData.type]
377
+ ...serviceData
383
378
  }
384
379
  ] : []
385
380
  });