@dwp/govuk-casa
Version:
A framework for building GOVUK Collect-And-Submit-Applications
40 lines • 1.72 kB
JavaScript
;
// Mark a waypoint as skipped
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const JourneyContext_js_1 = __importDefault(require("../lib/JourneyContext.js"));
const waypoint_url_js_1 = __importDefault(require("../lib/waypoint-url.js"));
const logger_js_1 = __importDefault(require("../lib/logger.js"));
const log = (0, logger_js_1.default)("middleware:skip-waypoint");
exports.default = ({ waypoint }) => [
(req, res, next) => {
if (!Object.hasOwn(req.query, "skipto")) {
return next();
}
const skipTo = String(req.query.skipto);
// Inject a special `__skip__` attribute into this waypoint's data
log.info(`Marking waypoint "${waypoint}" as skipped`);
req.casa.journeyContext.clearValidationErrorsForPage(waypoint);
req.casa.journeyContext.setSkipped(waypoint, { to: skipTo });
JourneyContext_js_1.default.putContext(req.session, req.casa.journeyContext);
const redirectUrl = (0, waypoint_url_js_1.default)({
mountUrl: `${req.baseUrl}/`,
waypoint: skipTo,
edit: req.casa.editMode,
editOrigin: req.casa.editOrigin,
journeyContext: req.casa.journeyContext,
});
log.debug(`Will redirect to "${redirectUrl}" after skipping "${waypoint}"`);
return req.session.save((err) => {
if (err) {
next(err);
}
else {
res.redirect(302, redirectUrl);
}
});
},
];
//# sourceMappingURL=skip-waypoint.js.map