diff --git a/src/core/usecases/softwareDetails/state.ts b/src/core/usecases/softwareDetails/state.ts index 4e4cbc33..b38e99ea 100644 --- a/src/core/usecases/softwareDetails/state.ts +++ b/src/core/usecases/softwareDetails/state.ts @@ -79,6 +79,7 @@ export namespace State { testUrl: string | undefined; instances: | { + id: number; organization: string; instanceUrl: string; targetAudience: string; diff --git a/src/core/usecases/softwareDetails/thunks.ts b/src/core/usecases/softwareDetails/thunks.ts index d61e3a3f..8e26334d 100644 --- a/src/core/usecases/softwareDetails/thunks.ts +++ b/src/core/usecases/softwareDetails/thunks.ts @@ -267,6 +267,7 @@ function apiSoftwareToSoftware(params: { instance.publicUrl === undefined ? undefined : { + "id": instance.id, "instanceUrl": instance.publicUrl, "organization": instance.organization, "targetAudience": instance.targetAudience diff --git a/src/ui/App.tsx b/src/ui/App.tsx index f2a443e9..7ba56850 100644 --- a/src/ui/App.tsx +++ b/src/ui/App.tsx @@ -193,6 +193,7 @@ export const { i18n } = declareComponentKeys< | "update software" | "add software or service" | "add instance" + | "update instance" | "required" | "invalid url" | "invalid version" diff --git a/src/ui/i18n/i18n.tsx b/src/ui/i18n/i18n.tsx index 66b50ef9..fa5b1f27 100644 --- a/src/ui/i18n/i18n.tsx +++ b/src/ui/i18n/i18n.tsx @@ -67,6 +67,7 @@ const { "update software": "Update Software", "add software or service": "Add Software or Service", "add instance": "Add Instance", + "update instance": "Update Instance", "required": "This field is required", "invalid url": 'Invalid URL. It must start with "http"', "invalid version": "The value must be numeric (e.g., 2.0.1)", @@ -580,7 +581,8 @@ const { `${instanceCount} maintained instance by ${publicOrganizationCount} public organisation`, "concerned public": "Concerned public : ", "go to instance": "Open the instance", - "add instance": "Reference new instance" + "add instance": "Reference new instance", + "edit instance": "Edit instance" }, "SimilarSoftwareTab": { "similar software in sill": "Alike software in the SILL", @@ -749,6 +751,7 @@ const { "update software": "Mettre à jour un logiciel", "add software or service": "Ajouter un logiciel ou un service", "add instance": "Ajouter une instance", + "update instance": "Modifier une instance", "required": "Ce champ est requis", "invalid url": 'URL invalide. Elle doit commencer par "http"', "invalid version": "La valeur doit être numérique (Exemple : 2.0.1)", @@ -1281,7 +1284,8 @@ const { `${instanceCount} instances maintenues par ${publicOrganizationCount} organisations publiques`, "concerned public": "Public concerné : ", "go to instance": "Accéder à l'instance", - "add instance": "Référencer une nouvelle instance" + "add instance": "Référencer une nouvelle instance", + "edit instance": "Éditer l'instance" }, "SimilarSoftwareTab": { "similar software in sill": "Logiciels similaires dans le SILL", diff --git a/src/ui/pages/instanceForm/InstanceForm.tsx b/src/ui/pages/instanceForm/InstanceForm.tsx index 36ce7168..a88b979f 100644 --- a/src/ui/pages/instanceForm/InstanceForm.tsx +++ b/src/ui/pages/instanceForm/InstanceForm.tsx @@ -86,6 +86,24 @@ export default function InstanceForm(props: Props) { const { t } = useTranslation({ InstanceForm }); const { t: tCommon } = useTranslation({ "App": null }); + const translationByRoute: Record< + PageRoute["name"], + { title: string; submitLabel: string; breadcrumbs: string } + > = { + instanceCreationForm: { + title: t("title add instance form"), + breadcrumbs: t("breadcrumb add instance"), + submitLabel: tCommon("add instance") + }, + instanceUpdateForm: { + title: t("title update instance form"), + breadcrumbs: t("breadcrumb update instance"), + submitLabel: tCommon("update instance") + } + }; + + const translations = translationByRoute[route.name]; + const evtActionSubmitStep = useConst(() => Evt.create()); const { lang } = useLang(); @@ -106,14 +124,7 @@ export default function InstanceForm(props: Props) { "label": tCommon("add software or service") } ]} - currentPageLabel={(() => { - switch (route.name) { - case "instanceCreationForm": - return t("breadcrumb add instance"); - case "instanceUpdateForm": - return t("breadcrumb update instance"); - } - })()} + currentPageLabel={translations.breadcrumbs} className={classes.breadcrumb} />
@@ -125,16 +136,7 @@ export default function InstanceForm(props: Props) { > -

- {(() => { - switch (route.name) { - case "instanceCreationForm": - return t("title add instance form"); - case "instanceUpdateForm": - return t("title update instance form"); - } - })()} -

+

{translations.title}

{isLastStep ? ( <> - {tCommon("add instance")} + {translations.submitLabel} {isSubmitting && ( { const { className, instanceList, createInstanceLink, ...rest } = props; + const { userAuthentication } = useCore().functions; + const isUserLoggedIn = userAuthentication.getIsUserLoggedIn(); /** Assert to make sure all props are deconstructed */ assert>(); @@ -73,6 +82,21 @@ export const ReferencedInstancesTab = (props: Props) => { {targetAudience}

+ {isUserLoggedIn && ( + + )} + ()({ ReferencedInstancesTab });