saveEvent.agi 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. /*
  2. Calendar - Save (create or update) a single event.
  3. POST: eventData (JSON string of event object)
  4. */
  5. requirelib("filelib");
  6. var evPath = "user:/Document/Calendar/events.json";
  7. var ev;
  8. try {
  9. ev = JSON.parse(eventData);
  10. } catch (e) {
  11. sendJSONResp({ error: "Invalid event data" });
  12. }
  13. if (ev) {
  14. // Ensure the event has an id
  15. if (!ev.id || ev.id === "") {
  16. var ts = new Date().getTime();
  17. ev.id = "ev_" + ts.toString(36) + Math.random().toString(36).slice(2, 7);
  18. }
  19. // Read existing events
  20. var events = [];
  21. if (filelib.fileExists(evPath)) {
  22. try {
  23. var raw = filelib.readFile(evPath);
  24. var parsed = JSON.parse(raw);
  25. if (Array.isArray(parsed)) events = parsed;
  26. } catch (e) {}
  27. }
  28. // Upsert
  29. var found = false;
  30. for (var i = 0; i < events.length; i++) {
  31. if (events[i].id === ev.id) {
  32. events[i] = ev;
  33. found = true;
  34. break;
  35. }
  36. }
  37. if (!found) events.push(ev);
  38. filelib.writeFile(evPath, JSON.stringify(events));
  39. sendJSONResp({ ok: true, id: ev.id });
  40. }