import SessionCache from './session-cache' import { request } from 'graphql-request' import DateTimeWrapper from './date-time-wrapper' export function getUpcomingEvents({ url, limit }) { const query = ` query ($limit: Int) { events(limit: $limit) { elements { id, title, url, beginsOn, endsOn, physicalAddress { description, locality } }, total } } ` const dataInCache = SessionCache.get(sessionStorage, { url, query, variables: { limit }}) if (dataInCache !== null) return Promise.resolve(dataInCache) return request(url, query, { limit }) .then((data) => { SessionCache.add(sessionStorage, { url, query, variables: { limit }}, data) return Promise.resolve(data) }) } export function getUpcomingEventsByGroupName({ url, limit, groupName }) { const query = ` query ($afterDatetime: DateTime, $groupName: String, $limit: Int) { group(preferredUsername: $groupName) { organizedEvents(afterDatetime: $afterDatetime, limit: $limit) { elements { id, title, url, beginsOn, endsOn, physicalAddress { description, locality } }, total } } } ` const afterDatetime = DateTimeWrapper.getCurrentDatetimeAsString() const dataInCache = SessionCache.get(sessionStorage, { url, query, variables: { afterDatetime, groupName, limit }}) if (dataInCache !== null) return Promise.resolve(dataInCache) return request(url, query, { afterDatetime, groupName, limit }) .then((data) => { SessionCache.add(sessionStorage, { url, query, variables: { afterDatetime, groupName, limit }}, data) return Promise.resolve(data) }) }