Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import {
ShellContext,
useNavigationGetUrl,
} from '@ovh-ux/manager-react-shell-client';
import { useNavigate } from 'react-router-dom';
import { useLocation, useNavigate } from 'react-router-dom';
import { ActionEnum, LifecycleActionsEnum } from '@/alldoms/enum/service.enum';
import { allDomManagerService, RENEW_URL } from '@/alldoms/constants';
import { hasTerminateAtExpirationDateAction } from '@/alldoms/utils/utils';
Expand All @@ -30,6 +30,7 @@ export default function ServiceActionMenu({
}: DatagridColumnActionMenuProps) {
const { t } = useTranslation('allDom');
const navigate = useNavigate();
const location = useLocation();

const {
environment: { user },
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import {
DataGridTextCell,
useFormatDate,
} from '@ovh-ux/manager-react-components';
import React from 'react';

interface DomainDatagridColumnDateProps {
readonly date: string;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
import { useNavigationGetUrl } from '@ovh-ux/manager-react-shell-client';
import React from 'react';
import { toUnicode } from 'punycode';
import { Link } from '@ovhcloud/ods-react';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import {
Badge,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { Badge, BADGE_COLOR, Spinner, SPINNER_SIZE } from '@ovhcloud/ods-react';
import {
Expand All @@ -10,6 +9,7 @@ import { hasTerminateAtExpirationDateAction } from '@/alldoms/utils/utils';

interface DomainDatagridColumnRenewModeProps {
readonly alldomTerminated: boolean;

readonly serviceName: string;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,11 +10,11 @@ import {
Text,
TEXT_PRESET,
} from '@ovhcloud/ods-react';
import ServiceActionMenu from '@/alldoms/components/ActionMenu/ServiceActionMenu';
import ServiceActionMenu from '@/alldoms/components/actionMenu/ServiceActionMenu';
import { AlldomService } from '@/alldoms/types';
import ServiceDetailSubscribingRenewDate from '@/alldoms/components/ServiceDetail/ServiceDetailSubscribing/ServiceDetailSubscribingRenewDate';
import ServiceDetailSubscribingRenewDate from '@/alldoms/components/serviceDetail/serviceDetailSubscribing/ServiceDetailSubscribingRenewDate';
import { ActionEnum } from '@/alldoms/enum/service.enum';
import ServiceDetailSubscribingRenewMode from './ServiceDetailSubscribingRenewMode';
import ServiceDetailSubscribingRenewMode from '@/alldoms/components/serviceDetail/serviceDetailSubscribing/ServiceDetailSubscribingRenewMode';
import { CANCEL_TERMINATE_URL, TERMINATE_URL } from '@/alldoms/constants';

interface ServiceDetailSubscribingProps {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import React from 'react';
import { TServiceInfo } from '@/alldoms/types';
import DomainsCheckboxItem from '@/alldoms/components/terminate/DomainsCheckboxes/DomainCheckboxItem';
import DomainsCheckboxItem from '@/alldoms/components/terminate/domainsCheckboxes/DomainCheckboxItem';
import { hasTerminateAtExpirationDateAction } from '@/alldoms/utils/utils';

interface DomainsCheckboxesProps {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,5 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { NAMESPACES } from '@ovh-ux/manager-common-translations';
import { useNavigate } from 'react-router-dom';
import {
Button,
BUTTON_VARIANT,
Expand All @@ -12,9 +10,12 @@ import {
Text,
TEXT_PRESET,
} from '@ovhcloud/ods-react';
import { useNavigate, useParams } from 'react-router-dom';
import { ModalStepsProps } from '@/alldoms/types';
import DomainsCheckboxList from '@/alldoms/components/terminate/DomainsCheckboxes/DomainsCheckboxList';
import DomainsCheckboxList from '@/alldoms/components/terminate/domainsCheckboxes/DomainsCheckboxList';
import { hasTerminateAtExpirationDateAction } from '@/alldoms/utils/utils';
import { useCloseModal } from '@/common/hooks/closeModal/useCloseModal';
import { urls } from '@/alldoms/routes/routes.constant';

export default function TerminateModalStepOne({
services,
Expand All @@ -25,7 +26,12 @@ export default function TerminateModalStepOne({
setCheckAllDomains,
}: Readonly<ModalStepsProps>) {
const { t } = useTranslation(['allDom', NAMESPACES.ACTIONS]);
const { serviceName } = useParams();
const navigate = useNavigate();
const closeUrl = useCloseModal(
serviceName,
`${urls.alldomsRoot}/${urls.alldomsListingTerminate}`,
);

return (
<div>
Expand Down Expand Up @@ -78,7 +84,10 @@ export default function TerminateModalStepOne({
</Message>

<div className="flex justify-end gap-x-6">
<Button variant={BUTTON_VARIANT.ghost} onClick={() => navigate(-1)}>
<Button
variant={BUTTON_VARIANT.ghost}
onClick={() => navigate(closeUrl)}
>
{t(`${NAMESPACES.ACTIONS}:close`)}
</Button>
<Button
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,14 @@ import { useTranslation } from 'react-i18next';
import { FilterTypeCategories } from '@ovh-ux/manager-core-api';
import { useNavigationGetUrl } from '@ovh-ux/manager-react-shell-client';
import { AlldomService } from '@/alldoms/types';
import DatagridColumnDomainRegisteredAuthorized from '@/alldoms/components/AllDomDatagridColumns/DatagridColumnDomainRegisteredAuthorized';
import DatagridColumnServiceName from '@/alldoms/components/AllDomDatagridColumns/DatagridColumnServiceName';
import { DatagridColumnDate } from '@/alldoms/components/AllDomDatagridColumns/DatagridColumnDate';
import DatagridColumnContact from '@/alldoms/components/AllDomDatagridColumns/DatagridColumnContact';
import DatagridColumnRenewMode from '@/alldoms/components/AllDomDatagridColumns/DatagridColumnRenewMode';
import ServiceActionMenu from '@/alldoms/components/ActionMenu/ServiceActionMenu';
import DatagridColumnDomainRegisteredAuthorized from '@/alldoms/components/allDomDatagridColumns/DatagridColumnDomainRegisteredAuthorized';
import DatagridColumnServiceName from '@/alldoms/components/allDomDatagridColumns/DatagridColumnServiceName';
import { DatagridColumnDate } from '@/alldoms/components/allDomDatagridColumns/DatagridColumnDate';
import DatagridColumnContact from '@/alldoms/components/allDomDatagridColumns/DatagridColumnContact';
import DatagridColumnRenewMode from '@/alldoms/components/allDomDatagridColumns/DatagridColumnRenewMode';
import ServiceActionMenu from '@/alldoms/components/actionMenu/ServiceActionMenu';
import { ActionEnum } from '@/alldoms/enum/service.enum';
import DatagridColumnSkeleton from '@/alldoms/components/AllDomDatagridColumns/DatagridColumnSkeleton';
import DatagridColumnSkeleton from '@/alldoms/components/allDomDatagridColumns/DatagridColumnSkeleton';
import { useNichandle } from '@/alldoms/hooks/nichandle/useNichandle';
import { CANCEL_TERMINATE_URL, TERMINATE_URL } from '@/alldoms/constants';

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
import React from 'react';
import { useTranslation } from 'react-i18next';
import { TDomainsInfo } from '@/alldoms/types';
import DomainDatagridColumnRegisteredStatus from '@/alldoms/components/DomainDatagridColumns/DomainDatagridColumnRegisteredStatus';
import DomainDatagridColumnRegisteredStatus from '@/alldoms/components/domainDatagridColumns/DomainDatagridColumnRegisteredStatus';
import { DomainRegistrationStateEnum } from '@/alldoms/enum/service.enum';
import DomainDatagridColumnDate from '@/alldoms/components/DomainDatagridColumns/DomainDatagridColumnDate';
import DomainDatagridColumnDomain from '@/alldoms/components/DomainDatagridColumns/DomainDatagridColumnDomain';
import DomainDatagridColumnRenewMode from '@/alldoms/components/DomainDatagridColumns/DomainDatagridColumnRenewMode';
import DomainDatagridColumnDate from '@/alldoms/components/domainDatagridColumns/DomainDatagridColumnDate';
import DomainDatagridColumnDomain from '@/alldoms/components/domainDatagridColumns/DomainDatagridColumnDomain';
import DomainDatagridColumnRenewMode from '@/alldoms/components/domainDatagridColumns/DomainDatagridColumnRenewMode';

interface DomainDatagridColumnsProps {
readonly alldomTerminated: boolean;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ import {
} from '@/alldoms/enum/service.enum';
import { TDomainsInfo } from '@/alldoms/types';
import { useGetServices } from '@/alldoms/hooks/data/useGetServices';
import { useCloseModal } from '@/common/hooks/closeModal/useCloseModal';
import { urls } from '@/alldoms/routes/routes.constant';

export const useCancelAllDomTerminate = (
serviceName: string,
Expand All @@ -20,6 +22,10 @@ export const useCancelAllDomTerminate = (
const { t } = useTranslation(['allDom', NAMESPACES.ACTIONS]);
const queryClient = useQueryClient();
const navigate = useNavigate();
const closeUrl = useCloseModal(
serviceName,
`${urls.alldomsRoot}/${urls.alldomsListingCancelTerminate}`,
);

const { data: services } = useGetServices({
names: domains.map((domain) => domain.name),
Expand Down Expand Up @@ -60,16 +66,15 @@ export const useCancelAllDomTerminate = (
serviceName,
}),
);
navigate(-1);
},

onError: () => {
navigate(-1);
addError(
t('allDom_cancel_terminate_error', {
serviceName,
}),
);
},
onSettled: () => navigate(closeUrl),
});
};
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,18 @@ import {
ServiceInfoUpdateEnum,
ServiceRoutes,
} from '@/alldoms/enum/service.enum';
import { useCloseModal } from '@/common/hooks/closeModal/useCloseModal';
import { urls } from '@/alldoms/routes/routes.constant';

export const useTerminateService = (serviceName: string, domains: string[]) => {
const { addError, addSuccess } = useNotifications();
const { t } = useTranslation(['allDom', NAMESPACES.ACTIONS]);
const queryClient = useQueryClient();
const navigate = useNavigate();
const closeUrl = useCloseModal(
serviceName,
`${urls.alldomsRoot}/${urls.alldomsListingTerminate}`,
);

return useMutation({
mutationFn: async () => {
Expand Down Expand Up @@ -45,8 +51,6 @@ export const useTerminateService = (serviceName: string, domains: string[]) => {
}),
);
},
onSettled: () => {
navigate(-1);
},
onSettled: () => navigate(closeUrl),
});
};
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,18 @@ import { ODS_MODAL_COLOR } from '@ovhcloud/ods-components';
import { Spinner, SPINNER_SIZE, Text } from '@ovhcloud/ods-react';
import { useGetAllDomResource } from '@/alldoms/hooks/data/query';
import { useCancelAllDomTerminate } from '@/alldoms/hooks/useCancelAllDomTerminate/useCancelAllDomTerminate';
import { urls } from '@/alldoms/routes/routes.constant';
import { useCloseModal } from '@/common/hooks/closeModal/useCloseModal';

export default function ServiceCancelTerminate() {
const { t } = useTranslation(['allDom', NAMESPACES.ACTIONS]);
const { serviceName } = useParams<{ serviceName: string }>();
const navigate = useNavigate();
const { data: allDomResource, isLoading } = useGetAllDomResource(serviceName);
const navigate = useNavigate();
const closeUrl = useCloseModal(
serviceName,
`${urls.alldomsRoot}/${urls.alldomsListingCancelTerminate}`,
);

const cancelAllDomTerminate = useCancelAllDomTerminate(
serviceName,
Expand All @@ -28,7 +34,7 @@ export default function ServiceCancelTerminate() {
primaryLabel={t(`${NAMESPACES.ACTIONS}:confirm`)}
secondaryLabel={t(`${NAMESPACES.ACTIONS}:cancel`)}
onPrimaryButtonClick={() => cancelAllDomTerminate.mutate()}
onSecondaryButtonClick={() => navigate(-1)}
onSecondaryButtonClick={() => navigate(closeUrl)}
>
{isLoading ? (
<Spinner size={SPINNER_SIZE.xs} />
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,9 @@ import {
TEXT_PRESET,
Link as OdsLink,
} from '@ovhcloud/ods-react';
import ServiceDetailDomains from '@/alldoms/components/ServiceDetail/ServiceDetailDomains';
import ServiceDetailInformation from '@/alldoms/components/ServiceDetail/ServiceDetailInformation';
import ServiceDetailSubscribing from '@/alldoms/components/ServiceDetail/ServiceDetailSubscribing/ServiceDetailSubscribing.component';
import ServiceDetailDomains from '@/alldoms/components/serviceDetail/ServiceDetailDomains';
import ServiceDetailInformation from '@/alldoms/components/serviceDetail/ServiceDetailInformation';
import ServiceDetailSubscribing from '@/alldoms/components/serviceDetail/serviceDetailSubscribing/ServiceDetailSubscribing.component';
import { useGetAllDom } from '@/alldoms/hooks/data/useGetAllDom';
import Loading from '@/alldoms/components/loading/Loading';
import { CANCEL_TERMINATE_URL } from '@/alldoms/constants';
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
import React from 'react';
import { vi } from 'vitest';
import { fireEvent, render, waitFor, screen } from '@testing-library/react';
import { useResourcesIcebergV2 } from '@ovh-ux/manager-react-components';
import ServiceList from './serviceList';
import ServiceList from '@/alldoms/pages/service/serviceList/serviceList';
import { wrapper } from '@/alldoms/utils/test.provider';
import { useGetServices } from '@/alldoms/hooks/data/useGetServices';
import { serviceInfo } from '@/alldoms/__mocks__/serviceInfo';
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ vi.mock('react-router-dom', () => ({
},
Outlet: vi.fn(),
useHref: vi.fn(),
useMatch: vi.fn(),
}));

const mocks = vi.hoisted(() => ({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,5 +76,4 @@ export interface ModalStepsProps {
setIsStepOne: (changeStep: boolean) => void;
setDomainsChecked?: (domainSelected: string[]) => void;
setCheckAllDomains?: (checked: boolean) => void;
closeModal?: () => void;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
import { useMatch } from 'react-router-dom';
import { useGenerateUrl } from '@/common/hooks/generateUrl/useGenerateUrl';
import { urls } from '@/alldoms/routes/routes.constant';

export const useCloseModal = (serviceName: string, url: string) => {
const isListingTerminate = !!useMatch(url);
const closeUrl = useGenerateUrl(
isListingTerminate ? urls.alldomsRoot : urls.alldomsDetail,
'path',
isListingTerminate ? {} : { serviceName },
);

return closeUrl;
};
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
import { useHref } from 'react-router-dom';

/**
* Generates a URL based on a base URL, a type, and optional parameters.
* The hook can generate either a path or a full URL with query parameters.
* @param {string} baseURL - The base URL, which may contain a :serviceName placeholder.
* @param {'path' | 'href'} [type='path'] - The type of URL to generate ('path' or 'href').
* @param {Record<string, string | number>} [params] - Optional parameters to replace placeholders or add as query parameters.
* @returns {string} - The generated URL or path.
*/
export const useGenerateUrl = (
baseURL: string,
type: 'path' | 'href' = 'path',
params?: Record<string, string | number>,
) => {
const URL = baseURL.replace(
':serviceName',
(params?.serviceName as string) || '',
);

const queryParams = {
...params,
};

const queryString = Object.entries(queryParams)
.filter(([key]) => key !== 'serviceName')
.map(([key, value]) => `${key}=${value}`)
.join('&');

const fullURL = queryString ? `${URL}?${queryString}` : URL;

if (type === 'href') {
return useHref(fullURL);
}
return fullURL;
};
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,32 @@
"domain_operations_update_field_bad_value": "Der in das Feld {{t0}} eingegebene Wert ist ungültig.",
"domain_operations_table_header_allDom": "Alldom",
"domain_operations_table_header_name": "Name",
"domain_operations_nicOperation_AlldomDelete": "Löschung des Alldom-Dienstes"
"domain_operations_nicOperation_AlldomDelete": "Löschung des Alldom-Dienstes",
"domain_operations_update_properties": "Bitte aktualisieren Sie die folgenden Eigenschaften und starten Sie Ihre Operation erneut:",
"domain_operations_update_address.city": "Stadt",
"domain_operations_update_address.country": "Land",
"domain_operations_update_address.line1": "Adresse",
"domain_operations_update_address.line2": "Adresse (Zeile 1)",
"domain_operations_update_address.line3": "Adresse (Zeile 2)",
"domain_operations_update_address.otherDetails": "Adresse (sonstige)",
"domain_operations_update_address.province": "Provinz",
"domain_operations_update_address.zip": "Postleitzahl",
"domain_operations_update_birthCity": "Geburtsort",
"domain_operations_update_birthCountry": "Geburtsland",
"domain_operations_update_birthDay": "Geburtstag",
"domain_operations_update_birthZip": "Postleitzahl des Geburtsortes",
"domain_operations_update_cellPhone": "Telefonnummer",
"domain_operations_update_companyNationalIdentificationNumber": "Steuernummer",
"domain_operations_update_email": "E-Mail",
"domain_operations_update_fax": "Fax",
"domain_operations_update_gender": "Geschlecht",
"domain_operations_update_language": "Sprache",
"domain_operations_update_lastName": "Name",
"domain_operations_update_legalForm": "Rechtsform",
"domain_operations_update_nationalIdentificationNumber": "Steuernummer",
"domain_operations_update_nationality": "Nationalität",
"domain_operations_update_organisationName": "Name der Organisation",
"domain_operations_update_phone": "Telefon",
"domain_operations_update_spareEmail": "Alternative E-Mail-Adresse",
"domain_operations_update_vat": "Umsatzsteuer-Identifikationsnummer"
}
Loading
Loading