23 lines
1.0 KiB
JavaScript
23 lines
1.0 KiB
JavaScript
import { matchSegment } from "../match-segments";
|
|
// TODO-APP: flightSegmentPath will be empty in case of static response, needs to be handled.
|
|
export function shouldHardNavigate(flightSegmentPath, flightRouterState) {
|
|
const [segment, parallelRoutes] = flightRouterState;
|
|
// TODO-APP: Check if `as` can be replaced.
|
|
const [currentSegment, parallelRouteKey] = flightSegmentPath;
|
|
// Check if current segment matches the existing segment.
|
|
if (!matchSegment(currentSegment, segment)) {
|
|
// If dynamic parameter in tree doesn't match up with segment path a hard navigation is triggered.
|
|
if (Array.isArray(currentSegment)) {
|
|
return true;
|
|
}
|
|
// If the existing segment did not match soft navigation is triggered.
|
|
return false;
|
|
}
|
|
const lastSegment = flightSegmentPath.length <= 2;
|
|
if (lastSegment) {
|
|
return false;
|
|
}
|
|
return shouldHardNavigate(flightSegmentPath.slice(2), parallelRoutes[parallelRouteKey]);
|
|
}
|
|
|
|
//# sourceMappingURL=should-hard-navigate.js.map
|