syncCalendars
syncCalendars
sync local version of calendars with remote.
const { created, updated, deleted } = await syncCalendars({
oldCalendars: [
{
displayName: 'personal calendar',
syncToken: 'HwoQEgwAAAAAAAAAAAAAAAAYARgAIhsI4pnF4erDm4CsARDdl6K9rqa9/pYBKAA=',
ctag: '63758742166',
url: 'https://caldav.icloud.com/123456/calendars/A5639426-B73B-4F90-86AB-D70F7F603E75/',
objects: [
{
etag: '"63758758580"',
id: '0003ffbe-cb71-49f5-bc7b-9fafdd756784',
data: 'BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//ZContent.net//Zap Calendar 1.0//EN\nCALSCALE:GREGORIAN\nMETHOD:PUBLISH\nBEGIN:VEVENT\nSUMMARY:Abraham Lincoln\nUID:c7614cff-3549-4a00-9152-d25cc1fe077d\nSEQUENCE:0\nSTATUS:CONFIRMED\nTRANSP:TRANSPARENT\nRRULE:FREQ=YEARLY;INTERVAL=1;BYMONTH=2;BYMONTHDAY=12\nDTSTART:20080212\nDTEND:20080213\nDTSTAMP:20150421T141403\nCATEGORIES:U.S. Presidents,Civil War People\nLOCATION:Hodgenville, Kentucky\nGEO:37.5739497;-85.7399606\nDESCRIPTION:Born February 12, 1809\nSixteenth President (1861-1865)\n\n\n\n \nhttp://AmericanHistoryCalendar.com\nURL:http://americanhistorycalendar.com/peoplecalendar/1,328-abraham-lincol\n n\nEND:VEVENT\nEND:VCALENDAR',
url: 'https://caldav.icloud.com/123456/calendars/A5639426-B73B-4F90-86AB-D70F7F603E75/test.ics',
},
],
},
],
detailedResult: true,
headers: {
authorization: 'Basic x0C9ueWd9Vz8OwS0DEAtkAlj',
},
});
Arguments
oldCalendarsrequired, locally version of calendars of this account, should contain calendar objects as well ifdetailedResultisfalseaccountthe account which calendars belong to,detailedResultif falsy, the result would be latest version of the calendars of this account, otherwise they would be separated into three groups ofcreated,updated, anddeleted.headersrequest headersheadersToExcludearray of keys of the headers you want to excludefetchOptionsoptions to pass to underlying fetch function
info
objects inside oldCalendars are not needed when detailedResult is true.
Return Value
depend on detailedResult option
if detailedResult is falsy,
array of DAVCalendar with calendar objects.
if detailedResult is true,
an object of
createdarray of DAVCalendar without calendar objects.updatedarray of DAVCalendar without calendar objects.deletedarray of DAVCalendar without calendar objects.
Behavior
fetch the latest list of DAVCalendar from remote,
compare the provided list and the latest list to find out created, updated, and deleted calendars.
if detailedResult is falsy,
fetch the latest list of DAVCalendarObject from updated calendars using rfc6578 webdav sync and calendarMultiGet
return latest list of calendars with latest list of objects for updated calendars.
if detailedResult is true,
return three list of separate calendars without objects for created, updated, and deleted.