save is working
Project: http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/repo Commit: http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/commit/fb78d22b Tree: http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/tree/fb78d22b Diff: http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/diff/fb78d22b Branch: refs/heads/master Commit: fb78d22bb0485c091fa906e9d820bab57c9f0bbb Parents: 1dbd371 Author: Piotr Zalewa <[email protected]> Authored: Wed Nov 13 19:28:47 2013 +0100 Committer: Piotr Zalewa <[email protected]> Committed: Wed Nov 13 19:28:47 2013 +0100 ---------------------------------------------------------------------- src/firefoxos/ContactsProxy.js | 61 +++++++++++++++++++++---------------- 1 file changed, 34 insertions(+), 27 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cordova-plugin-contacts/blob/fb78d22b/src/firefoxos/ContactsProxy.js ---------------------------------------------------------------------- diff --git a/src/firefoxos/ContactsProxy.js b/src/firefoxos/ContactsProxy.js index 7029541..c2ac0fd 100644 --- a/src/firefoxos/ContactsProxy.js +++ b/src/firefoxos/ContactsProxy.js @@ -27,10 +27,13 @@ // https://developer.mozilla.org/en-US/docs/Web/API/mozContact function saveContacts(successCB, errorCB, contacts) { // success and fail will be called every time a contact is saved - function success(result) { - // TODO: this will need to amend the result - console.log('SUCCESS from moz'); - successCB(result); + // a closure which is holding the object to be returned to sucessCB + function makeSuccess(contact, moz) { + return function(result) { + // TODO modify contact so it will contain the link to moz + // call callback + successCB(contact); + } } function error(e) { console.log('BOO from moz'); @@ -75,36 +78,42 @@ function saveContacts(successCB, errorCB, contacts) { var request; // prepare mozContact object var translatedContact = {}; + // building name var nameArray = []; - var j = 0; - var field; var fields = ['honorificPrefix', 'familyName', 'givenName', 'middleName', 'nickname']; - while(field = fields[j++]) { + var j = 0, field; while(field = fields[j++]) { if (contact.name[field]) { nameArray.push(contact.name[field]); } } translatedContact.name = nameArray.join(' '); - if (contact.name.honorificPrefix) { - translatedContact.honorificPrefix = contact.name.honorificPrefix; + // adding simple fields [contactField, eventualMozContactField] + var simpleFields = [['honorificPrefix'], ['givenName'], ['familyName'], + ['honorificSuffix'], ['nickname'], ['birthday', 'bday'], ['note']]; + j = 0; while(field = simpleFields[j++]) { + if (contact.name[field[0]]) { + translatedContact[field[1] || field[0]] = contact.name[field[0]]; + } + } + if (contact.emails) { + translatedContact.email = exportContactFieldArray(contact.emails); + } + if (contact.categories) { + translatedContact.category = exportContactFieldArray(contact.categories); + } + if (contact.addresses) { + translatedContact.adr = exportAddress(contact.addresses); } - translatedContact.familyName = contact.name.familyName; - /* - honorificPrefix: [contact.name.honorificPrefix], - givenName: [contact.name.givenName], - familyName: [contact.name.familyName], - honorificSuffix: [contact.name.honorificSuffix], - nickname: [contact.nickname], - email: exportContactFieldArray(contact.emails), + if (contact.phoneNumbers) { + translatedContact.tel = exportContactFieldArray(contact.phoneNumbers); + } + if (contact.organizations) { + translatedContact.org = exportContactFieldArray(contact.organizations, 'name'); + translatedContact.jobTitle = exportContactFieldArray(contact.organizations, 'title'); + } + /* // photo: Blob // url: Array with metadata (?) - category: exportContactFieldArray(contact.categories), - adr: exportAddress(contact.addresses), - tel: exportContactFieldArray(contact.phoneNumbers), - org: exportContactFieldArray(contact.organizations, 'name'), - jobTitle: exportContactFieldArray(contact.organizations, 'title'), - bday: contact.birthday, - note: contact.note, // impp: exportIM(contact.ims), TODO: find the moz impp definition // anniversary // sex @@ -114,10 +123,8 @@ function saveContacts(successCB, errorCB, contacts) { */ // TODO: find a way to link existing mozContact and Contact by ID var moz = new mozContact(translatedContact); - // XXX: moz.name is undefined - request = navigator.mozContacts.save(moz); - request.onsuccess = success; + request.onsuccess = makeSuccess(contact, moz); request.onerror = error; } }
