feat(ApplicationRedirectPage): add page to resolve deep links for applications

fix(LicenseQueuePage): correct sorting logic for "mine" view
This commit is contained in:
estifanos
2026-08-06 07:04:48 +00:00
parent 3610c69a69
commit 27df8b16e8
2 changed files with 36 additions and 0 deletions

View File

@@ -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;

View File

@@ -42,6 +42,7 @@ import { PaymentCheckPage } from './features/payments/pages/PaymentCheckPage';
import { PaymentSuccessPage } from './features/payments/pages/PaymentSuccessPage';
import { PaymentFailurePage } from './features/payments/pages/PaymentFailurePage';
import { LicenseApplicationPage } from './features/licensing/pages/LicenseApplicationPage';
import { ApplicationRedirectPage } from './features/licensing/pages/ApplicationRedirectPage';
import { WaiverPage } from './features/waiver/pages/WaiverPage';
@@ -98,6 +99,9 @@ export const router = createBrowserRouter([
path: '/licensing/:typeCode/applications/:applicationId',
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
{ path: '/seafarer-registration', element: <SeafarerRegistrationPage /> },