I’m making some progress with the SyncML client.
- add try/catch to all callbacks to receive notions of errors that happen. Especially look at iCal, eventCallbacks and SyncML. Maybe als SyncMLMessage.
- write to O3SIS and ask if they have an idea why their server (used by O2) does not accept my device information.
- work on js service implementation
- implement message retry mechanism, sometimes I only receive an empty response… 🙁
- test on funambol server and on http://www.o-sync.com
- supply the type of iCal to iCal.js, i.e. if it’s 1.0 = x-vcalendar or 2.0 = vcalendar. Do what you can for x-vcalendar conversion (not so easy).
- save global event id in externalId
Issues to look at:
- O2 server does not accept allDay events from the device (thought I had fixed that)
- look in “quoted_printable_decode/encode” to try to solve umlaut issues and similar
- does the webos calendar without patches allow to choose the colour of an calendar?
- eGroupware did send me duplicates of allDay events during a slow sync. Those were not duplicated on the server which means either I did not send them (or what I send was faulty) or…? Look into that. Maybe this was because of the ongoing timezone issue?
- see if funambol needs sync to “configuration” datastore for credentials checking or if my empty SyncMLMessage is sufficient… Example for funambol configuration sync:
Thoughts about contact sync:
Contacts Service has readVCard => can I call that?
Maybe need to write vCard parser myself. Does not seem more complicated than iCal parser. Some ressources:
or extensions mentioned in wikipedia.
This is also interesting: frameworks/contacts/…/vCard/vCard.js
Has importer, here I can set importToAccountId to my accountId and let it do all the work. There also is a importToContactSetId. Maybe that is useful to implement categories? Keep in mind for later… 😉
Let it return an array of contacts to the app, so I can do the add’s myself and supply the local ids to the server mapping. Also this seems necessary for updates instead of adds.
Interesting also: VCardImporter => processOneContact creates hashes to check for duplicates. Maybe that is a good thing to have in case something goes wrong?
Look what is the same for contacts and events and move that into common js files to make the single files smaller. It’s getting quite messy already. 🙁