mirror of
https://github.com/Tria-plc/emaui.git
synced 2026-09-08 03:05:43 +00:00
feat(ApplicationRedirectPage): add page to resolve deep links for applications
fix(LicenseQueuePage): correct sorting logic for "mine" view
This commit is contained in:
@@ -0,0 +1,32 @@
|
|||||||
|
import { Center, Loader } from '@mantine/core';
|
||||||
|
import { Navigate, useParams } from 'react-router-dom';
|
||||||
|
import { useGetApplicationQuery } from '@ema-platform/api';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Resolves `/applications/:applicationId` deep links (notification
|
||||||
|
* callbackUrl, emails) to the canonical `/licensing/:typeCode/applications/:id`
|
||||||
|
* route, which needs the licence type key to load its config.
|
||||||
|
*/
|
||||||
|
export function ApplicationRedirectPage() {
|
||||||
|
const { applicationId } = useParams();
|
||||||
|
const { data, isLoading, isError } = useGetApplicationQuery(applicationId!, {
|
||||||
|
skip: !applicationId,
|
||||||
|
});
|
||||||
|
|
||||||
|
if (!applicationId || isError) {
|
||||||
|
return <Navigate replace to="/licensing/applications" />;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isLoading) {
|
||||||
|
return (
|
||||||
|
<Center h={300}>
|
||||||
|
<Loader />
|
||||||
|
</Center>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
const typeCode = data?.application.licenseType?.key ?? 'FREIGHT_FORWARDER';
|
||||||
|
return <Navigate replace to={`/licensing/${typeCode}/applications/${applicationId}`} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ApplicationRedirectPage;
|
||||||
@@ -42,6 +42,7 @@ import { PaymentCheckPage } from './features/payments/pages/PaymentCheckPage';
|
|||||||
import { PaymentSuccessPage } from './features/payments/pages/PaymentSuccessPage';
|
import { PaymentSuccessPage } from './features/payments/pages/PaymentSuccessPage';
|
||||||
import { PaymentFailurePage } from './features/payments/pages/PaymentFailurePage';
|
import { PaymentFailurePage } from './features/payments/pages/PaymentFailurePage';
|
||||||
import { LicenseApplicationPage } from './features/licensing/pages/LicenseApplicationPage';
|
import { LicenseApplicationPage } from './features/licensing/pages/LicenseApplicationPage';
|
||||||
|
import { ApplicationRedirectPage } from './features/licensing/pages/ApplicationRedirectPage';
|
||||||
import { WaiverPage } from './features/waiver/pages/WaiverPage';
|
import { WaiverPage } from './features/waiver/pages/WaiverPage';
|
||||||
|
|
||||||
|
|
||||||
@@ -98,6 +99,9 @@ export const router = createBrowserRouter([
|
|||||||
path: '/licensing/:typeCode/applications/:applicationId',
|
path: '/licensing/:typeCode/applications/:applicationId',
|
||||||
element: <LicenseApplicationPage />,
|
element: <LicenseApplicationPage />,
|
||||||
},
|
},
|
||||||
|
// Notification / email deep links arrive as /applications/<id>; resolve the
|
||||||
|
// licence type and forward to the canonical route.
|
||||||
|
{ path: '/applications/:applicationId', element: <ApplicationRedirectPage /> },
|
||||||
|
|
||||||
// Seafarer
|
// Seafarer
|
||||||
{ path: '/seafarer-registration', element: <SeafarerRegistrationPage /> },
|
{ path: '/seafarer-registration', element: <SeafarerRegistrationPage /> },
|
||||||
|
|||||||
Reference in New Issue
Block a user