UNPKG

@focus-reactive/graphql-content-layer

Version:

[![npm version](https://badge.fury.io/js/%40focus-reactive%2Fgraphql-content-layer.svg)](https://badge.fury.io/js/%40focus-reactive%2Fgraphql-content-layer) # GitNation GraphQL Content Layer

79 lines (72 loc) 1.63 kB
const { prepareSpeakers, trySelectSettings } = require('./utils'); const { personFragment } = require('./fragments'); const { getCommittee } = require('./http-utils'); const selectSettings = trySelectSettings(s => ({ ...s.speakerAvatar.dimensions, tagColors: s.tagColors, labelColors: s.labelColors }), { avatarWidth: 500, avatarHeight: 500, tagColors: {} }); const queryPages = /* GraphQL */ ` query( $conferenceTitle: ConferenceTitle $eventYear: EventYear $avatarWidth: Int $avatarHeight: Int ) { conf: conferenceBrand(where: { title: $conferenceTitle }) { id year: conferenceEvents(where: { year: $eventYear }) { id emsEventId useEmsData committee { ...person } } } } ${personFragment} `; const fetchData = async (client, { tagColors, labelColors, ...vars }) => { const data = await client.request(queryPages, vars).then(res => ({ ...res.conf.year[0] })); const { committee: cmsCommittee, useEmsData, emsEventId } = data; // prioritize CMS committee const rawCommittee = cmsCommittee && cmsCommittee.length ? cmsCommittee.map(item => ({ speaker: item })) : useEmsData ? await getCommittee(emsEventId) : []; const speakers = await Promise.all(prepareSpeakers(rawCommittee.map(speaker => ({ ...speaker, decor: true })), tagColors, labelColors)); return { speakers: { committee: speakers } }; }; module.exports = { fetchData, selectSettings, queryPages, getData: data => data.conf.year[0].committee, story: 'Programme Committee' };