- commit
- c968cfa0a3d74d85d1a938735437177411f495be
- parent
- 2f7a751bae3141da116c7706b0b1336b3794cd2f
- Author
- Tobias Bengfort <tobias.bengfort@posteo.de>
- Date
- 2022-02-11 07:30
do not update UI on unsuccessful update
Diffstat
| M | dav.js | 19 | ++++++++++++++----- |
| M | main.js | 59 | +++++++++++++++++++++++++++++++++-------------------------- |
2 files changed, 47 insertions, 31 deletions
diff --git a/dav.js b/dav.js
@@ -158,13 +158,22 @@ export var createEvent = function(info, source) {
158 158 };
159 159 };
160 160
161 -1 export var commitEvent = function(data) {
-1 161 export var commitEvent = function(data, _changes) {
162 162 var comp = data.extendedProps.comp;
163 163 var vevent = new ICAL.Event(comp.getFirstSubcomponent('vevent'));
164 -1 vevent.summary = data.title;
165 -1 vevent.startDate = date2idate(data.start, data.allDay, data.extendedProps.offset);
166 -1 vevent.endDate = date2idate(data.end || data.start, data.allDay, data.extendedProps.offset);
167 -1 return _fetch(data.groupId, {
-1 164
-1 165 var changes = _changes || {};
-1 166 var groupId = changes.groupId || data.groupId;
-1 167 var title = changes.title || data.title;
-1 168 var start = changes.start || data.start;
-1 169 var end = changes.end || data.end;
-1 170 var allDay = changes.allDay || data.allDay;
-1 171
-1 172 vevent.summary = title;
-1 173 vevent.startDate = date2idate(start, allDay, data.extendedProps.offset);
-1 174 vevent.endDate = date2idate(end || start, allDay, data.extendedProps.offset);
-1 175
-1 176 return _fetch(groupId, {
168 177 method: 'PUT',
169 178 credentials: 'same-origin',
170 179 body: comp.toString(),
diff --git a/main.js b/main.js
@@ -63,32 +63,39 @@ form.addEventListener('submit', function(e) {
63 63 closeForm();
64 64 });
65 65 } else if (e.submitter.value === 'save') {
66 -1 data.setProp('title', form.title.value);
67 -1 data.setDates(
68 -1 form.start.value,
69 -1 form.end.value || null,
70 -1 {allDay: form.allday.checked}
71 -1 );
72 -1
73 -1 if (form.calendar.value == data.source.id) {
74 -1 dav.commitEvent(data);
75 -1 } else {
76 -1 var newSource = calendar.getEventSourceById(form.calendar.value);
77 -1 var newData;
78 -1
79 -1 calendar.getEvents()
80 -1 .filter(rel => rel.groupId === data.groupId)
81 -1 .forEach(rel => {
82 -1 var plain = rel.toPlainObject();
83 -1 plain.groupId = plain.groupId.replace(data.source.id, newSource.id);
84 -1 rel.remove();
85 -1 newData = calendar.addEvent(plain, newSource);
86 -1 });
87 -1
88 -1 dav.commitEvent(newData);
89 -1 dav.deleteEvent(data.groupId);
90 -1 }
91 -1 closeForm();
-1 66 var newSource = calendar.getEventSourceById(form.calendar.value);
-1 67 var oldGroupId = data.groupId;
-1 68 var newGroupId = data.groupId.replace(data.source.id, newSource.id);
-1 69
-1 70 dav.commitEvent(data, {
-1 71 groupId: newGroupId,
-1 72 title: form.title.value,
-1 73 start: new Date(form.start.value),
-1 74 end: form.end.value ? new Date(form.end.value) : null,
-1 75 allDay: form.allday.checked,
-1 76 }).then(() => {
-1 77 if (newGroupId !== oldGroupId) {
-1 78 return dav.deleteEvent(oldGroupId);
-1 79 }
-1 80 }).then(() => {
-1 81 data.setProp('title', form.title.value);
-1 82 data.setDates(
-1 83 form.start.value,
-1 84 form.end.value || null,
-1 85 {allDay: form.allday.checked}
-1 86 );
-1 87 if (newGroupId !== oldGroupId) {
-1 88 calendar.getEvents()
-1 89 .filter(rel => rel.groupId === oldGroupId)
-1 90 .forEach(rel => {
-1 91 var plain = rel.toPlainObject();
-1 92 plain.groupId = newGroupId;
-1 93 rel.remove();
-1 94 calendar.addEvent(plain, newSource);
-1 95 });
-1 96 }
-1 97 closeForm();
-1 98 });
92 99 } else if (e.submitter.value === 'cancel') {
93 100 closeForm();
94 101 }