#include "common/logger.h"
#include <contacts.h>
+#include "contact/contact_instance.h"
namespace extension {
namespace contact {
JsonValue result{JsonObject{}};
JsonObject& result_obj = result.get<JsonObject>();
+ result_obj.insert(std::make_pair("listenerId", kContactListenerId));
JsonArray& added = result_obj.insert(std::make_pair("added", JsonArray{}))
.first->second.get<JsonArray>();
JsonArray& updated =
removed.push_back(std::move(removed_data));
}
}
-
- // @todo implement fire event
+ ContactInstance::GetInstance().PostMessage(result.serialize().c_str());
}
}
}
-void AddressBook_startListening(int* current_state, const JsonObject&) {
+void AddressBook_startListening(const JsonObject& args, 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.
- int error_code = contacts_db_get_current_version(current_state);
+ int error_code = contacts_db_get_current_version(&ContactInstance::current_state);
if (CONTACTS_ERROR_NONE != error_code) {
LoggerW("get current version returns error, code: %d", error_code);
}
error_code = contacts_db_add_changed_cb(
- _contacts_contact._uri, AddressBook_listenerCallback, current_state);
+ _contacts_contact._uri, AddressBook_listenerCallback, &ContactInstance::current_state);
if (CONTACTS_ERROR_NONE != error_code) {
LoggerE("Error while registering listener to contacts db, code: %d",
}
}
-void AddressBook_stopListening(int* current_state, const JsonObject&) {
+void AddressBook_stopListening(const JsonObject& args, JsonObject& out) {
ContactUtil::CheckDBConnection();
int error_code = contacts_db_remove_changed_cb(
- _contacts_contact._uri, AddressBook_listenerCallback, current_state);
+ _contacts_contact._uri, AddressBook_listenerCallback, &ContactInstance::current_state);
if (CONTACTS_ERROR_NONE != error_code) {
LoggerE("Error while removing listener");
void AddressBook_updateGroup(const JsonObject& args, JsonObject&);
void AddressBook_removeGroup(const JsonObject& args, JsonObject&);
void AddressBook_getGroups(const JsonObject& args, JsonArray& out);
-void AddressBook_startListening(int* current_state, const JsonObject& args,
- JsonObject& out);
-void AddressBook_stopListening(int* current_state, const JsonObject& args,
- JsonObject& out);
+void AddressBook_startListening(const JsonObject& args, JsonObject& out);
+void AddressBook_stopListening(const JsonObject& args, JsonObject& out);
void AddressBook_batchFunc(/*common::NativeFunction impl,*/
const char* single_arg_name, const JsonObject& args/*,
ContactExtension::~ContactExtension() {}
common::Instance* ContactExtension::CreateInstance() {
- return new extension::contact::ContactInstance;
+ return &extension::contact::ContactInstance::GetInstance();
}
using namespace common;
+ContactInstance& ContactInstance::GetInstance() {
+ static ContactInstance instance;
+ return instance;
+}
+
+int ContactInstance::current_state = 0;
+
ContactInstance::ContactInstance() {
using namespace std::placeholders;
REGISTER_SYNC("AddressBook_updateGroup", AddressBook_updateGroup);
REGISTER_SYNC("AddressBook_removeGroup", AddressBook_removeGroup);
REGISTER_SYNC("AddressBook_getGroups", AddressBook_getGroups);
+ REGISTER_SYNC("AddressBook_startListening", AddressBook_startListening);
+ REGISTER_SYNC("AddressBook_stopListening", AddressBook_stopListening);
// Person
REGISTER_SYNC("Person_link", Person_link);
ReportSuccess(val, out);
}
+void ContactInstance::AddressBook_startListening(const JsonValue& args, JsonObject& out) {
+ JsonValue val{JsonObject{}};
+ AddressBook::AddressBook_startListening(common::JsonCast<JsonObject>(args),
+ val.get<JsonObject>());
+ ReportSuccess(val, out);
+}
+
+void ContactInstance::AddressBook_stopListening(const JsonValue& args, JsonObject& out) {
+ JsonValue val{JsonObject{}};
+ AddressBook::AddressBook_stopListening(common::JsonCast<JsonObject>(args),
+ val.get<JsonObject>());
+ ReportSuccess(val, out);
+}
+
void ContactInstance::ContactManager_get(const JsonValue& args,
JsonObject& out) {
JsonValue val{JsonObject{}};
class ContactInstance : public common::ParsedInstance {
public:
ContactInstance();
+ static ContactInstance& GetInstance();
+ static int current_state;
virtual ~ContactInstance();
private:
void AddressBook_updateGroup(const JsonValue& args, JsonObject& out);
void AddressBook_removeGroup(const JsonValue& args, JsonObject& out);
void AddressBook_getGroups(const JsonValue& args, JsonObject& out);
+ void AddressBook_startListening(const JsonValue& args, JsonObject& out);
+ void AddressBook_stopListening(const JsonValue& args,JsonObject& out);
/**
* Signature: @code void getAddressBooks(successCallback, errorCallback);
#include "common/logger.h"
#include <contacts.h>
+#include "contact/contact_instance.h"
#include "contact/person.h"
namespace extension {
JsonValue result{JsonObject{}};
JsonObject& result_obj = result.get<JsonObject>();
+ result_obj.insert(std::make_pair("listenerId", kContactPersonListenerId));
JsonArray& added = result_obj.insert(std::make_pair("added", JsonArray{}))
.first->second.get<JsonArray>();
JsonArray& updated =
token = strtok(nullptr, kTokenDelimiter);
}
- // @todo implement fire event
+ ContactInstance::GetInstance().PostMessage(result.serialize().c_str());
}
}
};
var _contactChangeListener = function(result) {
- result = JSON.parse(result);
-
var unifiedId = -1;
var watchId;
var i;