mirror of
https://github.com/urosran/cally.git
synced 2025-11-26 00:24:53 +00:00
All day event package
This commit is contained in:
@ -1,50 +1,64 @@
|
||||
export async function fetchGoogleCalendarEvents(token, email, familyId, startDate, endDate) {
|
||||
const response = await fetch(
|
||||
`https://www.googleapis.com/calendar/v3/calendars/primary/events?single_events=true&time_min=${startDate}&time_max=${endDate}`,
|
||||
{
|
||||
const googleEvents = [];
|
||||
let pageToken = null;
|
||||
|
||||
do {
|
||||
const url = new URL(`https://www.googleapis.com/calendar/v3/calendars/primary/events`);
|
||||
url.searchParams.set('singleEvents', 'true');
|
||||
url.searchParams.set('timeMin', startDate);
|
||||
url.searchParams.set('timeMax', endDate);
|
||||
if (pageToken) url.searchParams.set('pageToken', pageToken);
|
||||
|
||||
const response = await fetch(url.toString(), {
|
||||
headers: {
|
||||
Authorization: `Bearer ${token}`,
|
||||
},
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
const data = await response.json();
|
||||
const googleEvents = [];
|
||||
const data = await response.json();
|
||||
|
||||
data.items?.forEach((item) => {
|
||||
let isAllDay = false;
|
||||
let startDateTime, endDateTime;
|
||||
|
||||
if (item.start) {
|
||||
if (item.start.dateTime) {
|
||||
startDateTime = new Date(item.start.dateTime);
|
||||
} else if (item.start.date) {
|
||||
startDateTime = new Date(item.start.date);
|
||||
isAllDay = true;
|
||||
}
|
||||
if (!response.ok) {
|
||||
throw new Error(`Error fetching events: ${data.error?.message || response.statusText}`);
|
||||
}
|
||||
|
||||
if (item.end) {
|
||||
if (item.end.dateTime) {
|
||||
endDateTime = new Date(item.end.dateTime);
|
||||
} else if (item.end.date) {
|
||||
endDateTime = new Date(item.end.date);
|
||||
isAllDay = true;
|
||||
data.items?.forEach((item) => {
|
||||
let isAllDay = false;
|
||||
let startDateTime, endDateTime;
|
||||
|
||||
if (item.start) {
|
||||
if (item.start.dateTime) {
|
||||
startDateTime = new Date(item.start.dateTime);
|
||||
} else if (item.start.date) {
|
||||
startDateTime = new Date(item.start.date);
|
||||
isAllDay = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const googleEvent = {
|
||||
id: item.id,
|
||||
title: item.summary || "",
|
||||
startDate: startDateTime,
|
||||
endDate: endDateTime,
|
||||
allDay: isAllDay,
|
||||
familyId,
|
||||
email,
|
||||
};
|
||||
if (item.end) {
|
||||
if (item.end.dateTime) {
|
||||
endDateTime = new Date(item.end.dateTime);
|
||||
} else if (item.end.date) {
|
||||
endDateTime = new Date(item.end.date);
|
||||
isAllDay = true;
|
||||
}
|
||||
}
|
||||
|
||||
googleEvents.push(googleEvent);
|
||||
});
|
||||
const googleEvent = {
|
||||
id: item.id,
|
||||
title: item.summary || "",
|
||||
startDate: startDateTime,
|
||||
endDate: endDateTime,
|
||||
allDay: isAllDay,
|
||||
familyId,
|
||||
email,
|
||||
};
|
||||
|
||||
return {googleEvents, success: response.ok};
|
||||
googleEvents.push(googleEvent);
|
||||
});
|
||||
|
||||
// Prepare for the next page if it exists
|
||||
pageToken = data.nextPageToken;
|
||||
} while (pageToken);
|
||||
|
||||
return { googleEvents, success: true };
|
||||
}
|
||||
Reference in New Issue
Block a user