@defra/wls-eps-web-service
Version:
The web service for wildlife licencing of European Protected Species
49 lines (43 loc) • 1.66 kB
JavaScript
import { COOKIE_INFO } from '../../uris.js'
import { yesNoPage } from '../common/yes-no.js'
import { APIRequests } from '../../services/api-requests.js'
import { boolFromYesNo, yesNoFromBool } from '../common/common.js'
export const getData = async request => {
const journeyData = await request.cache().getData() || {}
const referrer = new URL(request.info.referrer)
if (referrer.pathname !== COOKIE_INFO.uri) {
journeyData.cookiesReferrer = referrer.pathname
}
await request.cache().setData(journeyData)
if (journeyData.userId) {
const user = await APIRequests.USER.getById(journeyData.userId)
return { yesNo: yesNoFromBool(user?.cookiePrefs?.analytics) }
} else if (journeyData.cookies) {
return { yesNo: yesNoFromBool(journeyData?.cookies?.analytics) }
}
return null
}
export const completion = async request => {
// Return to the calling page
const journeyData = await request.cache().getData()
return journeyData.cookiesReferrer
}
export const setData = async request => {
const journeyData = await request.cache().getData() || {}
journeyData.cookies = { analytics: boolFromYesNo(request.payload['yes-no']) }
await request.cache().setData(journeyData)
// If signed save the cookie preferences
if (journeyData.userId) {
const user = await APIRequests.USER.getById(journeyData.userId)
Object.assign(user, { cookiePrefs: journeyData.cookies })
await APIRequests.USER.update(journeyData.userId, user)
}
}
export default yesNoPage({
page: COOKIE_INFO.page,
uri: COOKIE_INFO.uri,
getData: getData,
setData: setData,
completion: completion,
options: { auth: { mode: 'optional' } }
})