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) } ) }