diff --git a/src/assets/locales/de/main.json b/src/assets/locales/de/main.json index 24b22440b..3121324ef 100644 --- a/src/assets/locales/de/main.json +++ b/src/assets/locales/de/main.json @@ -1005,14 +1005,14 @@ "technicalIntegration": { "headerTitle": "Technical Integration", "headerDescription": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .", - "step1Header": "1. User Role Upload *", + "step1Header": "1. User Role Upload", "step1HeaderDescription": "[copy] Lorem ipsum sapientem ne neque dolor erat,eros solet invidunt duo Quisque aliquid leo. Pretium patrioque sociis eu nihil Cum enim ad, ipsum alii vidisse justo id. Option porttitor diam voluptua. Cu Eam augue dolor dolores quis,", "clientID": "Client ID", "URL": "URL", "pleaseEnterValidURL": "Please enter a valid URL", "URLPlaceholder": "http://www.loremipsum.de", "clientCreated": "Client created", - "step2Header": "2. Technical User Setup *", + "step2Header": "2. Technical User Setup", "step2HeaderDescription": "[copy] Lorem ipsum sapientem ne neque dolor erat,eros solet invidunt duo Quisque aliquid leo. Pretium patrioque sociis eu nihil Cum enim ad, ipsum alii vidisse justo id. Option porttitor diam voluptua. Cu Eam augue dolor dolores quis,", "uploadRolesDescription": "Upload all app roles by using the available upload template (csv) file added attached", "rolesPreview": "Preview of Roles uploaded", @@ -1538,7 +1538,7 @@ "uploadDocumentTitle": "Please upload your certificate proof:", "note": "Please upload only pdf files with maximum 1 MB.", "descriptionLabel": "Description for verification", - "error": "Something went wrong!", + "error": "Something went wrong. ", "success": "Certificate uploaded successfully." }, "successCertificate": { diff --git a/src/assets/locales/de/notification.json b/src/assets/locales/de/notification.json index 16e6df352..71563f1b2 100644 --- a/src/assets/locales/de/notification.json +++ b/src/assets/locales/de/notification.json @@ -87,13 +87,25 @@ "title": "Assigned User Roles Updated - {{app}}", "content": "Hallo {{username}}, \n\nIhre App-Benutzerrollen wurden von Ihrem Unternehmensadministrator aktualisiert. Mit dem Wechsel der Rolle ändern sich Ihre Zugriffsrechte. Weitere Einzelheiten zu den Rollenänderungen finden sie anbei. \n\nHinzugefügte Rollen: {{addedRoles}} \n\nEntfernte Rollen: {{removedRoles}}" }, + "CREDENTIAL_APPROVAL": { + "title": "Verified Credential {{credentialType}} angelegt", + "content": "Verified Credential {{credentialType}} wurde ihrem Company Wallet hinzugefügt." + }, + "CREDENTIAL_REJECTED": { + "title": "Verified Credential {{credentialType}} abgelehnt", + "content": "Verified Credential {{credentialType}} wurde abgelehnt. Sie können jederzeit die Anfrage wiederholen." + }, + "SUBSCRIPTION_URL_UPDATE": { + "title": "App URL {{app}} updated", + "content": "Der App Provider hat die hinterlegte App Instance URL für ihre abonnierte App {{app}} geändert.\n\nNeue URL: {{newUrl}}" + }, "link": { "appmarketplace": "Zum App Marketplace", "technicalsetup": "Zur Connector Registrierung", "home": "Zur Startseite", "app": "Zur App", "user": "Zum Benutzer", - "usecases": "Zu den Use Cases", + "usecase": "Zu den Use Case", "serviceprovider": "Go to service provider", "appmanagementboard": "App Management Board öffnen", "servicemanagementboard": "Service Management Board öffnen", diff --git a/src/assets/locales/de/servicerelease.json b/src/assets/locales/de/servicerelease.json index ec1eeaebe..bca4d6a03 100644 --- a/src/assets/locales/de/servicerelease.json +++ b/src/assets/locales/de/servicerelease.json @@ -26,18 +26,18 @@ "step1": { "headerTitle": "Service Card Erstellen", "headerDescription": "Die folgenden Eingabefelder und Uploads werden verwendet, um Ihre Service-'Service Card' zu erstellen, die auf dem Marktplatz platziert wird. Die Servicekarte ist der erste Berührungspunkt mit dem Kunden.", - "serviceName": "Service Name*", - "serviceType": "Service Type*", + "serviceName": "Service Name", + "serviceType": "Service Type", "serviceTypePlaceholder": "Wählen Sie den Servicetyp aus", - "shortDescriptionEN": "Kurzbeschreibung (en)*", - "shortDescriptionDE": "Kurzbeschreibung (de)*", + "shortDescriptionEN": "Kurzbeschreibung (en)", + "shortDescriptionDE": "Kurzbeschreibung (de)", "serviceLeadImageUpload": "Service Card Bild" }, "step2": { "headerTitle": "Service Details", "headerDescription": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .", - "longDescriptionEN": "Service Beschreibung (en)*", - "longDescriptionDE": "Service Beschreibung (de)*", + "longDescriptionEN": "Service Beschreibung (en)", + "longDescriptionDE": "Service Beschreibung (de)", "doc": "Supporting Material", "note": "Info:", "providerDetails": "Provider Details", diff --git a/src/assets/locales/en/main.json b/src/assets/locales/en/main.json index 4700e6290..7577e0f8c 100644 --- a/src/assets/locales/en/main.json +++ b/src/assets/locales/en/main.json @@ -930,7 +930,7 @@ "salesManager": "Sales Manager", "salesManagerPlaceholder": "Please select a Sales Manager", "salesManagerDescription": "Please select the app sales manager via the dropdown below. The sales manager can only get set if a user of your company has the respective portal role. The sales manager will get informed as soon as a app subscribtion request is triggered by the customer.", - "pricingInformation": "Pricing Information (e.g. free / charged ( to be defined)", + "pricingInformation": "Pricing Information (e.g. free / charged (to be defined))", "appLeadImageUpload": "App Lead Image Upload" }, "appPage": { @@ -967,14 +967,14 @@ "technicalIntegration": { "headerTitle": "Technical Integration", "headerDescription": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .", - "step1Header": "1. User Role Upload *", + "step1Header": "1. User Role Upload", "step1HeaderDescription": "[copy] Lorem ipsum sapientem ne neque dolor erat,eros solet invidunt duo Quisque aliquid leo. Pretium patrioque sociis eu nihil Cum enim ad, ipsum alii vidisse justo id. Option porttitor diam voluptua. Cu Eam augue dolor dolores quis,", "clientID": "Client ID", "URL": "URL", "pleaseEnterValidURL": "Please enter a valid URL", "URLPlaceholder": "http://www.loremipsum.de", "clientCreated": "Client created", - "step2Header": "2. Technical User Setup *", + "step2Header": "2. Technical User Setup", "step2HeaderDescription": "[copy] Lorem ipsum sapientem ne neque dolor erat,eros solet invidunt duo Quisque aliquid leo. Pretium patrioque sociis eu nihil Cum enim ad, ipsum alii vidisse justo id. Option porttitor diam voluptua. Cu Eam augue dolor dolores quis,", "uploadRolesDescription": "Upload all app roles by using the available upload template (csv) file added attached", "rolesPreview": "Preview of Roles uploaded", @@ -1477,7 +1477,7 @@ "uploadDocumentTitle": "Please upload your certificate proof:", "note": "Please upload only pdf files with maximum 1 MB.", "descriptionLabel": "Description for verification", - "error": "Something went wrong!", + "error": "Something went wrong. ", "success": "Certificate uploaded successfully." }, "successCertificate": { diff --git a/src/assets/locales/en/notification.json b/src/assets/locales/en/notification.json index 6313e9791..6698fc55c 100644 --- a/src/assets/locales/en/notification.json +++ b/src/assets/locales/en/notification.json @@ -83,13 +83,25 @@ "title": "Assigned User Roles Updated - {{app}}", "content": "Hallo {{username}}, \n\nyour app user roles got updated by your company administrator. With the change of the role assignment your access rights have changed. You can find all details regarding the role change below. \n\nNew Roles: {{addedRoles}} \n\nRemoved Roles: {{removedRoles}}" }, + "CREDENTIAL_APPROVAL": { + "title": "Verified Credential {{credentialType}} assigned", + "content": "Verified Credential {{credentialType}} got assigned to your company wallet." + }, + "CREDENTIAL_REJECTED": { + "title": "Verified Credential {{credentialType}} declined", + "content": "Verified Credential {{credentialType}} got declined. You can start a new request immediately." + }, + "SUBSCRIPTION_URL_UPDATE": { + "title": "App URL {{app}} updated", + "content": "The app provider has changed the stored App Instance URL for your subscribed app {{app}}.\n\nNew URL: {{newUrl}}" + }, "link": { "appmarketplace": "Go to app marketplace", "technicalsetup": "Go to connector configuration", "home": "Go to home page", "app": "Go to app", "user": "Go to user", - "usecases": "Go to use cases", + "usecase": "Go to Use Case", "serviceprovider": "Go to service provider", "appmanagementboard": "Get there", "servicemanagementboard": "Get there", diff --git a/src/assets/locales/en/servicerelease.json b/src/assets/locales/en/servicerelease.json index 6d0562dac..02ff0548f 100644 --- a/src/assets/locales/en/servicerelease.json +++ b/src/assets/locales/en/servicerelease.json @@ -26,18 +26,18 @@ "step1": { "headerTitle": "Create Service", "headerDescription": "The following input fields and uploads are used to create your service 'Service Card' which will be placed inside the marketplace. The service card is the first touchpoint with the customer.", - "serviceName": "Service Name*", - "serviceType": "Service Type*", + "serviceName": "Service Name", + "serviceType": "Service Type", "serviceTypePlaceholder": "Select a Service Type Id", - "shortDescriptionEN": "Short Description (en)*", - "shortDescriptionDE": "Short Description (de)*", + "shortDescriptionEN": "Short Description (en)", + "shortDescriptionDE": "Short Description (de)", "serviceLeadImageUpload": "Service Card Image" }, "step2": { "headerTitle": "Service Details", "headerDescription": "Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard .", - "longDescriptionEN": "Long Description (en)*", - "longDescriptionDE": "Long Description (de)*", + "longDescriptionEN": "Long Description (en)", + "longDescriptionDE": "Long Description (de)", "doc": "Supporting Material", "note": "Note:", "providerDetails": "Provider Details", diff --git a/src/components/overlays/UpdateCertificate/index.tsx b/src/components/overlays/UpdateCertificate/index.tsx index dcd427df3..37d048479 100644 --- a/src/components/overlays/UpdateCertificate/index.tsx +++ b/src/components/overlays/UpdateCertificate/index.tsx @@ -66,9 +66,14 @@ export default function UpdateCertificate({ id }: { id: string }) { await addCertificate(data).unwrap() setSubmitClicked(true) } - } catch (err) { + } catch (err: unknown) { setLoading(false) - error(t('content.certificates.updateCertificate.error'), '', '') + error( + t('content.certificates.updateCertificate.error') + + err.data.errors.unknown[0], + '', + '' + ) } } diff --git a/src/components/pages/AppOverview/ChangeDescription.tsx b/src/components/pages/AppOverview/ChangeDescription.tsx index f7f284180..1e968c070 100644 --- a/src/components/pages/AppOverview/ChangeDescription.tsx +++ b/src/components/pages/AppOverview/ChangeDescription.tsx @@ -55,10 +55,10 @@ export default function ChangeDescription() { const defaultValues = useMemo(() => { return { - longDescriptionEN: description?.[0].longDescription ?? '', - longDescriptionDE: description?.[1].longDescription ?? '', - shortDescriptionEN: description?.[0].shortDescription ?? '', - shortDescriptionDE: description?.[1].shortDescription ?? '', + longDescriptionEN: description?.[0]?.longDescription ?? '', + longDescriptionDE: description?.[1]?.longDescription ?? '', + shortDescriptionEN: description?.[0]?.shortDescription ?? '', + shortDescriptionDE: description?.[1]?.shortDescription ?? '', } }, [description]) @@ -247,7 +247,7 @@ export default function ChangeDescription() {
{['shortDescriptionEN', 'shortDescriptionDE'].map( - (item: string, i) => ( + (item: string) => (
@@ -104,6 +106,8 @@ const NotificationContent = ({ coreOfferName: coreOfferName, removedRoles: removedRoles ? removedRoles : '-', addedRoles: addedRoles ? addedRoles : '-', + credentialType: credentialType, + newUrl: newUrl, }} > { case NotificationType.WELCOME_CONNECTOR_REGISTRATION: return case NotificationType.WELCOME_USE_CASES: - return + return case NotificationType.WELCOME_SERVICE_PROVIDER: return ( { return case NotificationType.ROLE_UPDATE_CORE_OFFER: return + case NotificationType.CREDENTIAL_APPROVAL: + return + case NotificationType.CREDENTIAL_REJECTED: + return + case NotificationType.SUBSCRIPTION_URL_UPDATE: + return default: return
{JSON.stringify(item, null, 2)}
} @@ -317,6 +327,7 @@ export default function NotificationItem({ {t(`${item.typeId}.title`, { app: item.contentParsed?.AppName ?? item.contentParsed?.appName, offer: item.contentParsed?.OfferName, + credentialType: item.contentParsed?.type, })} {open && ( diff --git a/src/components/shared/basic/ReleaseProcess/AppMarketCard/index.tsx b/src/components/shared/basic/ReleaseProcess/AppMarketCard/index.tsx index 36a638f2a..ac9532cc6 100644 --- a/src/components/shared/basic/ReleaseProcess/AppMarketCard/index.tsx +++ b/src/components/shared/basic/ReleaseProcess/AppMarketCard/index.tsx @@ -508,7 +508,12 @@ export default function AppMarketCard() { }} name="title" pattern={Patterns.appMarketCard.appTitle} - label={t('content.apprelease.appMarketCard.appTitle') + ' *'} + label={ + <> + {t('content.apprelease.appMarketCard.appTitle')} + * + + } rules={{ required: `${t( 'content.apprelease.appMarketCard.appTitle' @@ -538,7 +543,12 @@ export default function AppMarketCard() { maxLength={30} minLength={3} pattern={Patterns.appMarketCard.appProvider} - label={t('content.apprelease.appMarketCard.appProvider') + ' *'} + label={ + <> + {t('content.apprelease.appMarketCard.appProvider')} + * + + } rules={{ required: `${t( 'content.apprelease.appMarketCard.appProvider' @@ -572,7 +582,8 @@ export default function AppMarketCard() { }} label={ <> - {t(`content.apprelease.appMarketCard.${item}`) + ' *'} + {t(`content.apprelease.appMarketCard.${item}`)} + * @@ -623,9 +634,12 @@ export default function AppMarketCard() { trigger, errors, name: 'useCaseCategory', - label: - t('content.apprelease.appMarketCard.useCaseCategory') + - ' *', + label: ( + <> + {t('content.apprelease.appMarketCard.useCaseCategory')} + * + + ), placeholder: t( 'content.apprelease.appMarketCard.useCaseCategoryPlaceholder' ), @@ -663,8 +677,12 @@ export default function AppMarketCard() { trigger, errors, name: 'appLanguage', - label: - t('content.apprelease.appMarketCard.appLanguage') + ' *', + label: ( + <> + {t('content.apprelease.appMarketCard.appLanguage')} + * + + ), placeholder: t( 'content.apprelease.appMarketCard.appLanguagePlaceholder' ), @@ -735,7 +753,10 @@ export default function AppMarketCard() { maxLength={15} minLength={1} label={ - t('content.apprelease.appMarketCard.pricingInformation') + ' *' + <> + {t('content.apprelease.appMarketCard.pricingInformation')} + * + } rules={{ required: `${t( @@ -764,7 +785,10 @@ export default function AppMarketCard() { errors, }} label={ - t('content.apprelease.appMarketCard.appLeadImageUpload') + ' *' + <> + {t('content.apprelease.appMarketCard.appLeadImageUpload')} + * + } noteDescription={t( 'content.apprelease.appReleaseForm.OnlyOneFileAllowed' diff --git a/src/components/shared/basic/ReleaseProcess/AppPage/index.tsx b/src/components/shared/basic/ReleaseProcess/AppPage/index.tsx index 6eacfb045..457a33649 100644 --- a/src/components/shared/basic/ReleaseProcess/AppPage/index.tsx +++ b/src/components/shared/basic/ReleaseProcess/AppPage/index.tsx @@ -481,7 +481,8 @@ export default function AppPage() { }} label={ <> - {t(`content.apprelease.appPage.${item}`) + ' *'} + {t(`content.apprelease.appPage.${item}`)} + * @@ -521,7 +522,8 @@ export default function AppPage() {
- {t('content.apprelease.appPage.images') + ' *'} + {t('content.apprelease.appPage.images')} + * - {t('content.apprelease.appPage.privacyInformation') + ' *'} + {t('content.apprelease.appPage.privacyInformation')} + * {t('content.apprelease.appPage.privacyInformationDescription')} diff --git a/src/components/shared/basic/ReleaseProcess/ContractAndConsent/index.tsx b/src/components/shared/basic/ReleaseProcess/ContractAndConsent/index.tsx index 97b9a0b09..f9c06d81a 100644 --- a/src/components/shared/basic/ReleaseProcess/ContractAndConsent/index.tsx +++ b/src/components/shared/basic/ReleaseProcess/ContractAndConsent/index.tsx @@ -67,8 +67,10 @@ export default function ContractAndConsent() { 'content.apprelease.appReleaseForm.isMandatory' )} imageFieldLabel={ - t('content.apprelease.contractAndConsent.uploadImageConformity') + - ' *' + <> + {t('content.apprelease.contractAndConsent.uploadImageConformity')} + * + } pageSnackbarDescription={t( 'content.apprelease.appReleaseForm.dataSavedSuccessMessage' diff --git a/src/components/shared/basic/ReleaseProcess/OfferCard/index.tsx b/src/components/shared/basic/ReleaseProcess/OfferCard/index.tsx index 548181cb5..910804b9e 100644 --- a/src/components/shared/basic/ReleaseProcess/OfferCard/index.tsx +++ b/src/components/shared/basic/ReleaseProcess/OfferCard/index.tsx @@ -363,7 +363,12 @@ export default function OfferCard() { }} name="title" pattern={Patterns.offerCard.serviceName} - label={t('step1.serviceName')} + label={ + <> + {t('step1.serviceName')} + * + + } rules={{ required: `${t('step1.serviceName')} ${t( 'serviceReleaseForm.isMandatory' @@ -389,7 +394,12 @@ export default function OfferCard() { trigger, errors, name: 'serviceTypeIds', - label: t('step1.serviceType'), + label: ( + <> + {t('step1.serviceType')} + * + + ), placeholder: t('step1.serviceTypePlaceholder'), type: 'multiSelectList', rules: { @@ -430,6 +440,7 @@ export default function OfferCard() { label={ <> {t(`step1.${desc}`)} + * diff --git a/src/components/shared/basic/ReleaseProcess/OfferPage/index.tsx b/src/components/shared/basic/ReleaseProcess/OfferPage/index.tsx index 38bd30d1f..6fa9d41df 100644 --- a/src/components/shared/basic/ReleaseProcess/OfferPage/index.tsx +++ b/src/components/shared/basic/ReleaseProcess/OfferPage/index.tsx @@ -283,6 +283,7 @@ export default function OfferPage({ label={ <> {t(`step2.${longDesc}`)} + * diff --git a/src/components/shared/basic/ReleaseProcess/TechnicalIntegration/index.tsx b/src/components/shared/basic/ReleaseProcess/TechnicalIntegration/index.tsx index 9bc8703f8..03b700c36 100644 --- a/src/components/shared/basic/ReleaseProcess/TechnicalIntegration/index.tsx +++ b/src/components/shared/basic/ReleaseProcess/TechnicalIntegration/index.tsx @@ -324,7 +324,10 @@ export default function TechnicalIntegration() {
- {t('content.apprelease.technicalIntegration.step1Header')} + <> + {t('content.apprelease.technicalIntegration.step1Header')} + * + {t('content.apprelease.technicalIntegration.step1HeaderDescription')} @@ -552,7 +555,10 @@ export default function TechnicalIntegration() { )} - {t('content.apprelease.technicalIntegration.step2Header')} + <> + {t('content.apprelease.technicalIntegration.step2Header')} + * + {t('content.apprelease.technicalIntegration.step2HeaderDescription')} diff --git a/src/components/shared/basic/ReleaseProcess/components/CommonContractAndConsent.tsx b/src/components/shared/basic/ReleaseProcess/components/CommonContractAndConsent.tsx index 8e7c79ce1..467eae422 100644 --- a/src/components/shared/basic/ReleaseProcess/components/CommonContractAndConsent.tsx +++ b/src/components/shared/basic/ReleaseProcess/components/CommonContractAndConsent.tsx @@ -20,7 +20,7 @@ import { useForm } from 'react-hook-form' import { useTranslation } from 'react-i18next' -import { useCallback, useEffect, useMemo, useState } from 'react' +import { ReactElement, useCallback, useEffect, useMemo, useState } from 'react' import { useDispatch } from 'react-redux' import { decrement, increment } from 'features/appManagement/slice' import { @@ -68,7 +68,7 @@ type CommonConsentType = { stepperTitle: string stepperDescription: string checkBoxMandatoryText: string - imageFieldLabel?: string + imageFieldLabel?: ReactElement pageSnackbarDescription: string pageNotificationObject: { title: string diff --git a/src/features/notification/types.ts b/src/features/notification/types.ts index 2eb5155e5..398e86aaa 100644 --- a/src/features/notification/types.ts +++ b/src/features/notification/types.ts @@ -96,6 +96,9 @@ export enum NotificationType { SERVICE_RELEASE_REQUEST = 'SERVICE_RELEASE_REQUEST', ROLE_UPDATE_APP_OFFER = 'ROLE_UPDATE_APP_OFFER', ROLE_UPDATE_CORE_OFFER = 'ROLE_UPDATE_CORE_OFFER', + CREDENTIAL_REJECTED = 'CREDENTIAL_REJECTED', + CREDENTIAL_APPROVAL = 'CREDENTIAL_APPROVAL', + SUBSCRIPTION_URL_UPDATE = 'SUBSCRIPTION_URL_UPDATE', } export interface NotificationContent { @@ -110,6 +113,8 @@ export interface NotificationContent { appName?: string removedRoles?: string addedRoles?: string + type?: string | number + newUrl?: string } export interface CXNotificationContent { diff --git a/src/types/Config.tsx b/src/types/Config.tsx index 8f3b2dd3f..87fdaa9b2 100644 --- a/src/types/Config.tsx +++ b/src/types/Config.tsx @@ -486,7 +486,7 @@ export const ALL_PAGES: IPage[] = [ { name: PAGES.DATA_SPACE, element: }, { name: PAGES.ADMIN_CREDENTIAL, - role: ROLES.ADMIN_CREDENTIAL_DECISION, + role: ROLES.DECISION_SSICREDENTIAL, element: , }, ] diff --git a/src/types/Constants.ts b/src/types/Constants.ts index 43bb5ad4c..684e4ab75 100644 --- a/src/types/Constants.ts +++ b/src/types/Constants.ts @@ -207,7 +207,7 @@ export enum ROLES { UPDATE_COMPANY_ROLE = 'update_company_role', SUBMITTED_APPLICATION = 'view_submitted_applications', REQUEST_SSICREDENTIAL = 'request_ssicredential', - ADMIN_CREDENTIAL_DECISION = 'admin_credential_decision', + DECISION_SSICREDENTIAL = 'decision_ssicredential', } export enum HINTS {