You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

142 lines
4.0 KiB

import { do_request } from './graphql-api-request.mjs';
4 years ago
const sleep = (s) => new Promise((res) => setTimeout(res, s * 1000));
4 years ago
/// PageEventsTabPastEventsCardRendererQuery
export const past_render_query = async ({ pageID }) => {
4 years ago
const doc_id = '4421910857857782';
4 years ago
const resp = await do_request(doc_id, { pageID });
const page = resp?.data?.page?.past_events ?? null;
4 years ago
return page;
};
4 years ago
/// PageEventsTabPastEventsCardPaginationQuery
export const past_pagination_query = async ({ pageID, cursor }) => {
const doc_id = '6953034388071359';
const count = 9;
const resp = await do_request(doc_id, { pageID, cursor, count });
const page = resp?.data?.page?.past_events ?? null;
4 years ago
return page;
};
4 years ago
/// PageEventsTabUpcomingEventsCardRendererQuery
export const upcoming_render_query = async ({ pageID }) => {
const doc_id = '5182274978466320';
const resp = await do_request(doc_id, { pageID });
const page = resp?.data?.page?.upcoming_events ?? null;
4 years ago
return page;
};
4 years ago
// PageEventsTabUpcomingEventsCardPaginationQuery
export const upcoming_pagination_query = async ({ pageID, cursor }) => {
4 years ago
const doc_id = '6985622308176123';
let count = 9;
4 years ago
const resp = await do_request(doc_id, { pageID, cursor, count });
const page = resp?.data?.page?.upcoming_events ?? null;
4 years ago
return page;
};
// PageEventsTabRecurringEventsCardRendererQuery
export const upcoming_reoccuring_render_query = async ({ pageID }) => {
const doc_id = '4458618790924188';
const resp = await do_request(doc_id, { pageID });
const page = resp?.data?.page?.upcomingRecurringEvents?.edges ?? null;
if (page === null || !Array.isArray(page)) {
return null;
}
let res = [];
page.forEach(({ node }) => {
let { childEvents, ...parent } = node;
childEvents.edges.forEach(({ node }) => {
let event = {
...parent,
...{
id: node.id,
time_range: { start: new Date(node.currentStartTimestamp * 1000) }
}
};
res.push(event);
});
});
return res;
};
4 years ago
export const get_page_events = async ({
4 years ago
pageID,
get_past_events,
get_upcoming_events
}) => {
let res = [];
4 years ago
if (get_past_events) {
4 years ago
const result = await past_render_query({ pageID });
4 years ago
if (result !== null) {
let { has_next_page, end_cursor: cursor } = result.page_info;
let { edges } = result;
4 years ago
let retries = 0;
4 years ago
while (has_next_page) {
4 years ago
sleep(0.1);
4 years ago
const paginationResult = await past_pagination_query({
cursor,
pageID
});
4 years ago
if (paginationResult === null) {
4 years ago
++retries;
4 years ago
console.error(retries, 'retrying');
4 years ago
continue;
}
if (retries > 10) {
4 years ago
break;
}
4 years ago
retries = 0;
4 years ago
edges = [...edges, ...paginationResult.edges];
4 years ago
has_next_page = paginationResult?.page_info?.has_next_page ?? false;
4 years ago
cursor = paginationResult.page_info.end_cursor;
}
res = [...edges.map(({ node }) => node)];
4 years ago
}
}
if (get_upcoming_events) {
4 years ago
const result = await upcoming_render_query({ pageID });
4 years ago
if (result !== null) {
let { has_next_page, end_cursor: cursor } = result.page_info;
let { edges } = result;
4 years ago
let retries = 0;
4 years ago
while (has_next_page) {
4 years ago
sleep(0.1);
4 years ago
const paginationResult = await upcoming_pagination_query({
cursor,
pageID
});
4 years ago
if (paginationResult === null) {
4 years ago
++retries;
4 years ago
console.error(retries, 'retrying');
4 years ago
continue;
}
if (retries > 10) {
4 years ago
break;
}
edges = [...edges, ...paginationResult.edges];
4 years ago
has_next_page = paginationResult?.page_info?.has_next_page ?? false;
cursor = paginationResult?.page_info?.end_cursor;
4 years ago
}
res = [...edges.map(({ node }) => node)];
}
const reoccuring = await upcoming_reoccuring_render_query({ pageID });
if (reoccuring !== null) {
res = [...res, ...reoccuring];
4 years ago
}
}
return res;
4 years ago
};
4 years ago
export default get_page_events;