Commit Graph

10 Commits

Author SHA1 Message Date
Pascal Bleser
b40f878630 groupware: refactoring: pass object type instead of namespaces
* make the JMAP internal API a bit more future-proof by passing
   ObjectType objects instead of the JMAP namespaces

 * remove the new attempt to contain operations even further using the
   Factory objects

 * move CalendarEvent operations to its own file, like everything else

 * fix email tests

 * ignore WS error when closing an already closed connection
2026-07-01 14:57:31 +02:00
Pascal Bleser
d1d88a5f9e groupware: model refactoring, introducing typed interfaces and Foo
* move ContactCard from jscontact to jmap, as it is actually a JMAP
   specification item, but also was causing too many issues with
   circular references from jscontact -> jmap

 * introduce Foo, Idable, GetRequest, GetResponse, etc... types and
   generics

 * first attempt at a Foo factory type for Mailboxes, needs to be
   expanded to further minimize repetition

 * add more specialized template functions to avoid repetition

 * introduce ChangesTemplate[T] for *Changes structs
2026-07-01 14:57:31 +02:00
Pascal Bleser
d0cba2efd1 groupware: add addressbook and calendar creation APIs
* add Groupware APIs for creating and deleting addressbooks

 * add Groupware APIs for creating and deleting calendars

 * add JMAP APIs for creating and deleting addressbooks, calendars

 * add JMAP APIs to retrieve Principals

 * fix API tagging

 * move addressbook JMAP APIs into its own file

 * move addressbook Groupware APIs into its own file
2026-07-01 14:57:31 +02:00
Pascal Bleser
ef631ccdad groupware: framework refactorings + add support for /changes + add /objects 2026-07-01 14:57:30 +02:00
Pascal Bleser
928f60bd32 groupware: pollute code with NOSONAR comments, and make a little more use of JMAP API templates 2026-07-01 14:57:30 +02:00
Pascal Bleser
fa244b9316 groupware: refactor contactcard changes, and Request framework
* implement ContactCard retrieval endpoint for syncing

 * re-implement that endpoint for Email too

 * fix the Mailbox changes endpoint to actually return changes about
   Mailboxes, and not about Emails

 * when querying the diff of Mailboxes without any prior state, return
   an error since the result is not what one would expect

 * introduce the 'changes' API tag and group

 * refactor the successful response functions to consistently return an
   object type and object state whenever possible

 * move the syncing endpoints under /accounts/*/changes/ for better
   clarity, e.g. /changes/emails instead of /emails/mailbox/*/changes
2026-07-01 14:57:30 +02:00
Pascal Bleser
6a90a2ce88 groupware: documentation: more calendar examples 2026-07-01 14:57:30 +02:00
Pascal Bleser
b75a7a479f groupware: add UI example of a ContactCard to the documented examples 2026-07-01 14:57:30 +02:00
Pascal Bleser
12f919b5f0 groupware: add jscontact examples, and move them to jmap/model_examples.go to avoid dependency recursion 2026-07-01 14:57:30 +02:00
Pascal Bleser
f097fe9a39 groupware: as suggested in the review PR 1994, remove all filename prefixes that match the package (groupware_xyz.go -> xyz.go), for groupware, jmap, jscontact, jscalendar 2026-07-01 14:57:30 +02:00