From: Karol Pawlowski Date: Tue, 23 Dec 2014 12:19:38 +0000 (+0100) Subject: [Contact] ContactManager addChangeListener fix X-Git-Tag: submit/tizen_tv/20150603.064601~1^2~741 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=38c2b531e303b131dda5150e3504b706ec50b95c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [Contact] ContactManager addChangeListener fix [Verification] exports.onRequest = function() { console.log("Service Start~!"); try { watcher = { onpersonsadded: function (persons) { console.log("Contact manager works"); tizen.contact.removeChangeListener(watcherId); console.log("Listener removed"); }, onpersonsupdated: function (persons) { }, onpersonsremoved: function (ids) { } }; watcherId = tizen.contact.addChangeListener(watcher); contact = new tizen.Contact({ addresses: [new tizen.ContactAddress({ country: "London" })] }); defaultAddressBook = tizen.contact.getDefaultAddressBook(); defaultAddressBook.add(contact); }catch (e) { console.log(e.name + ': ' + e.message); console.log(e.stack); } }; Change-Id: I8555031e16dbc769546d712b5b616a7f7ecce8c5 Signed-off-by: Karol Pawlowski --- diff --git a/src/contact/addressbook.cc b/src/contact/addressbook.cc index 9b49b078..72e6aadd 100644 --- a/src/contact/addressbook.cc +++ b/src/contact/addressbook.cc @@ -617,7 +617,7 @@ void AddressBook_listenerCallback(const char* view_uri, void* user_data) { } } -void AddressBook_startListening(const JsonObject& args, JsonObject& out) { +void AddressBook_startListening(const JsonObject&, JsonObject& out) { ContactUtil::CheckDBConnection(); // Set the initial latest version before registering the callback. // The callback should only be registered once so no race can occur. @@ -636,7 +636,7 @@ void AddressBook_startListening(const JsonObject& args, JsonObject& out) { } } -void AddressBook_stopListening(const JsonObject& args, JsonObject& out) { +void AddressBook_stopListening(const JsonObject&, JsonObject& out) { ContactUtil::CheckDBConnection(); int error_code = contacts_db_remove_changed_cb( _contacts_contact._uri, AddressBook_listenerCallback, &ContactInstance::current_state); diff --git a/src/contact/contact_instance.cc b/src/contact/contact_instance.cc index 17a146a9..819ac2ef 100644 --- a/src/contact/contact_instance.cc +++ b/src/contact/contact_instance.cc @@ -43,6 +43,8 @@ ContactInstance::ContactInstance() { REGISTER_SYNC("ContactManager_removeBatch", ContactManager_removeBatch); REGISTER_SYNC("ContactManager_find", ContactManager_find); REGISTER_SYNC("ContactManager_importFromVCard", ContactManager_importFromVCard); + REGISTER_SYNC("ContactManager_startListening", ContactManager_startListening); + REGISTER_SYNC("ContactManager_stopListening", ContactManager_stopListening); // AddressBook REGISTER_ASYNC("AddressBook_addBatch", AddressBook_addBatch); @@ -269,6 +271,20 @@ void ContactInstance::ContactManager_importFromVCard(const JsonValue& args, ReportSuccess(val, out); } +void ContactInstance::ContactManager_startListening(const JsonValue& args, JsonObject& out) { + JsonValue val{JsonObject{}}; + ContactManager::ContactManager_startListening(common::JsonCast(args), + val.get()); + ReportSuccess(val, out); +} + +void ContactInstance::ContactManager_stopListening(const JsonValue& args, JsonObject& out) { + JsonValue val{JsonObject{}}; + ContactManager::ContactManager_stopListening(common::JsonCast(args), + val.get()); + ReportSuccess(val, out); +} + void ContactInstance::Person_link(const JsonValue& args, JsonObject& out) { JsonValue val{JsonObject{}}; Person::Person_link(common::JsonCast(args), diff --git a/src/contact/contact_instance.h b/src/contact/contact_instance.h index 237cd58b..e8645aa4 100644 --- a/src/contact/contact_instance.h +++ b/src/contact/contact_instance.h @@ -176,6 +176,33 @@ class ContactInstance : public common::ParsedInstance { */ void ContactManager_importFromVCard(const JsonValue& args, JsonObject& out); + /** + * Signature: @code void getAddressBook(contactString); @endcode + * JSON: @code data: {method: 'ContactManager_startListening', + * args: {}} @endcode + * Invocation: @code native.callSync(request); @endcode + * Return: + * @code + * {status: 'error', error: {name, message}} + * {status: 'success'} + * @endcode + */ + void ContactManager_startListening(const JsonValue& args, JsonObject& out); + + /** + * Signature: @code void getAddressBook(contactString); @endcode + * JSON: @code data: {method: 'ContactManager_stopListening', + * args: {}} @endcode + * Invocation: @code native.callSync(request); @endcode + * Return: + * @code + * {status: 'error', error: {name, message}} + * {status: 'success'} + * @endcode + */ + void ContactManager_stopListening(const JsonValue& args, JsonObject& out); + + void Person_link(const JsonValue& args, JsonObject& out); void Person_unlink(const JsonValue& args, JsonObject& out); }; diff --git a/src/contact/contact_manager.cc b/src/contact/contact_manager.cc index b758731b..4f8006a9 100644 --- a/src/contact/contact_manager.cc +++ b/src/contact/contact_manager.cc @@ -335,7 +335,7 @@ void ContactManager_listenerCallback(const char* view_uri, char* changes, } } -void ContactManager_startListening(/*const JsonObject&, JsonObject& out*/) { +void ContactManager_startListening(const JsonObject& /*args*/, JsonObject& /*out*/) { ContactUtil::CheckDBConnection(); int error_code = contacts_db_add_changed_cb_with_info( _contacts_person._uri, ContactManager_listenerCallback, nullptr); @@ -347,7 +347,7 @@ void ContactManager_startListening(/*const JsonObject&, JsonObject& out*/) { } } -void ContactManager_stopListening(/*const JsonObject&, JsonObject& out*/) { +void ContactManager_stopListening(const JsonObject& /*args*/, JsonObject& /*out*/) { ContactUtil::CheckDBConnection(); int error_code = contacts_db_remove_changed_cb_with_info( _contacts_person._uri, ContactManager_listenerCallback, nullptr); diff --git a/src/contact/contact_manager.h b/src/contact/contact_manager.h index d2ed4610..49ca1824 100644 --- a/src/contact/contact_manager.h +++ b/src/contact/contact_manager.h @@ -55,7 +55,7 @@ void ContactManager_importFromVCard(const JsonObject& args, JsonObject& out); * {status: 'success'} * @endcode */ -void ContactManager_startListening(/*const JsonObject& args, JsonObject& out*/); +void ContactManager_startListening(const JsonObject& args, JsonObject& out); /** * Signature: @code void getAddressBook(contactString); @endcode @@ -68,7 +68,7 @@ void ContactManager_startListening(/*const JsonObject& args, JsonObject& out*/); * {status: 'success'} * @endcode */ -void ContactManager_stopListening(/*const JsonObject& args, JsonObject& out*/); +void ContactManager_stopListening(const JsonObject& args, JsonObject& out); } // namespace ContactManager } // namespace contact diff --git a/src/contact/js/tizen.contact.ContactManager.js b/src/contact/js/tizen.contact.ContactManager.js index 30895b79..dfd93d5e 100644 --- a/src/contact/js/tizen.contact.ContactManager.js +++ b/src/contact/js/tizen.contact.ContactManager.js @@ -6,7 +6,6 @@ var _personListenerRegistered = false; var _personCallbackMap = {}; var _personChangeListener = function(result) { - result = JSON.parse(result); for (var key in _personCallbackMap) { if (_personCallbackMap.hasOwnProperty(key)) { if (result.added.length) {