Skip to content

Commit

Permalink
feat: cookie independent GET params
Browse files Browse the repository at this point in the history
  • Loading branch information
Davide M committed Jan 3, 2024
1 parent 519b142 commit 8bc9f3d
Showing 1 changed file with 31 additions and 4 deletions.
35 changes: 31 additions & 4 deletions packages/api-client/src/index.server.ts
Original file line number Diff line number Diff line change
Expand Up @@ -71,40 +71,67 @@ const tokenExtension: ApiClientExtension = {
const storeCookieName: string = configuration.cookies?.storeCookieName || defaultSettings.cookies.storeCookieName;
const currencyCookieName: string = configuration.cookies?.currencyCookieName || defaultSettings.cookies.currencyCookieName;

const cookieParams = [];
let body = null;

if (req.query.body) {
if (typeof req.query.body === 'string') {
body = JSON.parse(req.query.body);
}
if (body[1]) {
if (body[1].hasOwnProperty(cartCookieName)) {
cookieParams[cartCookieName] = body[1][cartCookieName];
}
if (body[1].hasOwnProperty(customerCookieName)) {
cookieParams[customerCookieName] = body[1][customerCookieName];
}
if (body[1].hasOwnProperty(storeCookieName)) {
cookieParams[storeCookieName] = body[1][storeCookieName];
}
if (body[1].hasOwnProperty(currencyCookieName)) {
cookieParams[currencyCookieName] = body[1][currencyCookieName];
}
}
}

return {
...configuration,
state: {
getCartId: () => req.cookies[cartCookieName],
getCartId: () => req.query[cartCookieName] ?? (cookieParams[cartCookieName] ?? req.cookies[cartCookieName]),
setCartId: (id) => {
if (!id) {
// eslint-disable-next-line no-param-reassign
delete req.query[cartCookieName];
delete req.cookies[cartCookieName];
return;
}
res.cookie(cartCookieName, JSON.stringify(id));
},
getCustomerToken: () => req.cookies[customerCookieName],
getCustomerToken: () => req.query[customerCookieName] ?? (cookieParams[cartCookieName] ?? req.cookies[customerCookieName]),
setCustomerToken: (token) => {
if (!token) {
// eslint-disable-next-line no-param-reassign
delete req.query[customerCookieName];
delete req.cookies[customerCookieName];
return;
}
res.cookie(customerCookieName, JSON.stringify(token));
},
getStore: () => configuration?.storeViewCode ?? req.cookies[storeCookieName],
getStore: () => req.query[storeCookieName] ?? (cookieParams[storeCookieName] ?? (configuration?.storeViewCode ?? req.cookies[storeCookieName])),
setStore: (id) => {
if (!id) {
// eslint-disable-next-line no-param-reassign
delete req.query[storeCookieName];
delete req.cookies[storeCookieName];
return;
}
res.cookie(storeCookieName, JSON.stringify(id));
},
getCurrency: () => req.cookies[currencyCookieName],
getCurrency: () => req.query[currencyCookieName] ?? (cookieParams[storeCookieName] ?? req.cookies[currencyCookieName]),
setCurrency: (id) => {
if (!id) {
// eslint-disable-next-line no-param-reassign
delete req.query[currencyCookieName];
delete req.cookies[currencyCookieName];
return;
}
Expand Down

0 comments on commit 8bc9f3d

Please sign in to comment.