import { do_request } from './graphql-api-request.mjs'; const sleep = (s) => new Promise((res) => setTimeout(res, s * 1000)); /// PageEventsTabPastEventsCardRendererQuery export const past_render_query = async ({ pageID }) => { const doc_id = '4421910857857782'; const resp = await do_request(doc_id, { pageID }); const page = resp?.data?.page?.past_events ?? null; return page; }; /// 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; return page; }; /// 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; return page; }; // PageEventsTabUpcomingEventsCardPaginationQuery export const upcoming_pagination_query = async ({ pageID, cursor }) => { const doc_id = '6985622308176123'; let count = 9; const resp = await do_request(doc_id, { pageID, cursor, count }); const page = resp?.data?.page?.upcoming_events ?? null; return page; }; export const get_page_events = async ({ pageID, get_past_events, get_upcoming_events }) => { let past_events = []; if (get_past_events) { const result = await past_render_query({ pageID }); if (result !== null) { let { has_next_page, end_cursor: cursor } = result.page_info; let { edges } = result; let retries = 0; while (has_next_page) { sleep(2); const paginationResult = await past_pagination_query({ cursor, pageID }); if (paginationResult === null) { ++retries; continue; } if (retries > 10) { break; } retries = 0; edges = [...edges, ...paginationResult.edges]; has_next_page = paginationResult?.page_info?.has_next_page ?? false; cursor = paginationResult.page_info.end_cursor; } past_events = [...edges]; } } let upcoming_events = []; if (get_upcoming_events) { const result = await upcoming_render_query({ pageID }); if (result !== null) { upcoming_events = []; let { has_next_page, end_cursor: cursor } = result.page_info; let { edges } = result; let retries = 0; while (has_next_page) { sleep(2); const paginationResult = await upcoming_pagination_query({ cursor, pageID }); if (paginationResult === null) { ++retries; continue; } if (retries > 10) { break; } edges = [...edges, ...paginationResult.edges]; has_next_page = paginationResult?.page_info?.has_next_page ?? false; cursor = paginationResult?.page_info?.end_cursor; } upcoming_events = [...edges]; } } return [...upcoming_events, ...past_events].map(({ node }) => node); }; export default get_page_events;