diff --git a/src/router/methods/before-each.js b/src/router/methods/before-each.js index 923059b34..cae308ccb 100644 --- a/src/router/methods/before-each.js +++ b/src/router/methods/before-each.js @@ -13,6 +13,7 @@ import { checkPagePrerequisites } from "@/router/methods/page-prerequisites"; import { checkLogParam } from "@/helpers/debug-log-helper"; import { debugLog } from "@/helpers/debug-log-helper"; import { handleHeritageReturn } from "@/router/methods/helpers/handle-heritage-return"; +import { isVirtualRoute } from "@/router/methods/helpers/is-virtual-route"; export async function beforeEach(to, from) { try { @@ -45,7 +46,9 @@ export async function beforeEach(to, from) { // Block navigation if an order has been submitted. if (window.sessionStorage.getItem(sessionStorageKeyConstants.SUBMITTED_STATE) !== null) { - if (to.name !== FUNNEL_START_PAGE.name && to.name !== routeData.CONFIRMATION.name) { + const exceptionPages = [FUNNEL_START_PAGE.name, routeData.CONFIRMATION.name]; + + if (!exceptionPages.some((name) => to.name === name) && !isVirtualRoute(to.name)) { return false; } } diff --git a/src/router/methods/helpers/is-virtual-route.js b/src/router/methods/helpers/is-virtual-route.js new file mode 100644 index 000000000..2067eba9c --- /dev/null +++ b/src/router/methods/helpers/is-virtual-route.js @@ -0,0 +1,7 @@ +import { routeData } from "@/router/constants/routes"; + +export function isVirtualRoute(routeName) { + const matchedRoute = Object.values(routeData).find((route) => route.name === routeName); + + return matchedRoute?.virtual ?? false; +}