caldav-client

standalone CalDAV web client
git clone https://git.ce9e.org/caldav-client.git

commit
95391bfc977397f8874e69e2c28d9269d8078f16
parent
0aac555d56b3406b2cbb86ef9f72aa3668623e68
Author
Tobias Bengfort <tobias.bengfort@posteo.de>
Date
2022-02-11 07:19
use local alias for selectedEvent (for async)

Diffstat

M main.js 19 ++++++++++---------

1 files changed, 10 insertions, 9 deletions


diff --git a/main.js b/main.js

@@ -50,40 +50,41 @@ form.querySelectorAll('[data-translate]').forEach(el => {
   50    50 
   51    51 form.addEventListener('submit', function(e) {
   52    52     e.preventDefault();
   -1    53     var data = selectedEvent;  // selectedEvent could be reset in the meantime
   53    54 
   54    55     if (e.submitter.value === 'delete') {
   55    56         if (!confirm(_('Are you sure you want to delete this?'))) {
   56    57             return;
   57    58         }
   58    59         calendar.getEvents()
   59    -1             .filter(rel => rel.groupId === selectedEvent.groupId)
   -1    60             .filter(rel => rel.groupId === data.groupId)
   60    61             .forEach(rel => rel.remove());
   61    -1         dav.deleteEvent(selectedEvent);
   -1    62         dav.deleteEvent(data);
   62    63     } else if (e.submitter.value === 'save') {
   63    -1         selectedEvent.setProp('title', form.title.value);
   64    -1         selectedEvent.setDates(
   -1    64         data.setProp('title', form.title.value);
   -1    65         data.setDates(
   65    66             form.start.value,
   66    67             form.end.value || null,
   67    68             {allDay: form.allday.checked}
   68    69         );
   69    70 
   70    -1         if (form.calendar.value == selectedEvent.source.id) {
   71    -1             dav.commitEvent(selectedEvent);
   -1    71         if (form.calendar.value == data.source.id) {
   -1    72             dav.commitEvent(data);
   72    73         } else {
   73    74             var newSource = calendar.getEventSourceById(form.calendar.value);
   74    75             var newData;
   75    76 
   76    77             calendar.getEvents()
   77    -1                 .filter(rel => rel.groupId === selectedEvent.groupId)
   -1    78                 .filter(rel => rel.groupId === data.groupId)
   78    79                 .forEach(rel => {
   79    80                     var plain = rel.toPlainObject();
   80    -1                     plain.groupId = plain.groupId.replace(selectedEvent.source.id, newSource.id);
   -1    81                     plain.groupId = plain.groupId.replace(data.source.id, newSource.id);
   81    82                     rel.remove();
   82    83                     newData = calendar.addEvent(plain, newSource);
   83    84                 });
   84    85 
   85    86             dav.commitEvent(newData);
   86    -1             dav.deleteEvent(selectedEvent);  // CAREFUL: must be called before selectedEvent is reset
   -1    87             dav.deleteEvent(data);
   87    88         }
   88    89     }
   89    90