@websolutespa/payload-plugin-bowl
Version:
Bowl PayloadCms plugin of the BOM Repository
83 lines (82 loc) • 3.08 kB
JavaScript
import { options } from '../../options';
import { getCollectionItems, getGlobalItems } from './collection.service';
import { getRoutes } from './route.service';
export function getObjectParam(value) {
if (typeof value === 'object') {
return value;
}
return undefined;
}
export function getNumericParam(value) {
if (typeof value === 'string') {
return parseInt(value);
}
return undefined;
}
export function getStringParam(value) {
if (typeof value === 'string') {
return value;
}
return undefined;
}
export function getSubRequest(req) {
const { pathname, payload, transactionID, url, user, context } = req;
const { where, ...rest } = req.query;
const subRequest = {
pathname,
payload,
query: {
...rest
},
transactionID,
url,
user,
context
};
// console.log('getSubRequest', path);
return subRequest;
}
export async function setMixerContext(req, market, locale) {
// console.log('setMixerContext', market, locale);
/*
const requestOptions = { lng: (req as any).lng, locale: req.locale, language: (req as any).language, languages: (req as any).languages };
console.log('setMixerContext.requestOptions', requestOptions);
*/ const subRequest = getSubRequest(req);
// console.log('subRequest');
const localeItems = await getGlobalItems(subRequest, options.slug.locale, 0);
const locales = localeItems.filter((x)=>x.isActive).map((x)=>x.id);
// console.log('setMixerContext.locales', locales.length);
const marketItems = await getCollectionItems(subRequest, options.slug.market, 0);
const markets = marketItems.filter((x)=>x.isActive).map((x)=>x.id);
// console.log('setMixerContext.markets', markets.length);
const routes = await getRoutes(subRequest);
// console.log('setMixerContext.routes', routes.length);
const currentRoutes = filterRoutes(routes, market, locale);
// console.log('setMixerContext.currentRoutes', currentRoutes.length);
const categories = await getCollectionItems(subRequest, options.slug.category, 2);
// console.log('setMixerContext.categories', categories.length);
const richText = req.query?.richText === 'true';
// console.log('setMixerContext.richText', richText);
const context = Object.assign(req.context, {
market,
locale,
markets,
locales,
routes,
currentRoutes,
categories,
richText
});
// console.log('setMixerContext.context', context);
return context;
}
export function filterRoutes(routes, market, locale) {
market = market === 'all' ? options.defaultMarket : market;
locale = locale === 'all' ? options.defaultLocale : locale;
// console.log('filterRoutes', market, locale);
return routes.filter((x)=>x.market === market && x.locale === locale);
}
export function isMixerRequest(req) {
return typeof req.query?.market === 'string' && typeof req.query?.locale === 'string';
}
//# sourceMappingURL=utils.js.map