[Verification] Code compiles without errors.
Functionality tested in node console
Change-Id: Ia2dcedb82a33e6065fa393f216c03a0ac381eb40
Signed-off-by: Robert Karolak <r.karolak@samsung.com>
LoggerD("callback: %p error: %d messages.size() = %d", callback, callback->isError(),
callback->getMessages().size());
-// JSContextRef context = callback->getContext();
-// if (!GlobalContextManager::getInstance()->isAliveGlobalContext(context)) {
-// LoggerE("context was closed");
-// delete callback;
-// callback = NULL;
-// return;
-// }
-
try {
if (callback->isError()) {
LoggerD("Calling error callback");
-// JSObjectRef errobj = JSWebAPIErrorFactory::makeErrorObject(context, TODO
-// callback->getErrorName(),
-// callback->getErrorMessage());
-// callback->callErrorCallback(errobj);
+ MessagingInstance::getInstance().PostMessage(callback->getJson()->serialize().c_str());
} else {
LoggerD("Calling success callback");
-// callback->callSuccessCallback(JSMessage::messageVectorToJSObjectArray(context, TODO
-// callback->getMessages()));
+ auto json = callback->getJson();
+ picojson::object& obj = json->get<picojson::object>();
+
+ std::vector<picojson::value> response;
+ auto messages = callback->getMessages();
+ std::for_each(messages.begin(), messages.end(), [&response](MessagePtr &message){
+ response.push_back(MessagingUtil::messageToJson(message));
+ });
+ obj[JSON_DATA] = picojson::value(response);
+ obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
+ MessagingInstance::getInstance().PostMessage(json->serialize().c_str());
}
} catch (const PlatformException& err) {
LoggerE("Error while calling findMessages callback: %s (%s)",
#include "message_callback_user_data.h"
#include "messages_callback_user_data.h"
#include "conversation_callback_data.h"
+#include "find_msg_callback_user_data.h"
namespace extension {
namespace messaging {
virtual void addDraftMessage(MessageCallbackUserData* callback) = 0;
virtual void removeMessages(MessagesCallbackUserData* callback) = 0;
virtual void updateMessages(MessagesCallbackUserData* callback) = 0;
- virtual void findMessages() = 0;
+ virtual void findMessages(FindMsgCallbackUserData* callback) = 0;
virtual void findConversations() = 0;
virtual void removeConversations(ConversationCallbackData* callback) = 0;
virtual void findFolders() = 0;
}
}
-void MessageStorageEmail::findMessages()
+static gboolean findMessagesTask(void* data)
{
LoggerD("Entered");
- //TODO add implementation
+
+ FindMsgCallbackUserData *callback = static_cast<FindMsgCallbackUserData*>(data);
+ EmailManager::getInstance().findMessages(callback);
+
+ return FALSE;
+}
+
+void MessageStorageEmail::findMessages(FindMsgCallbackUserData* callback)
+{
+ LoggerD("Entered");
+
+ if (!callback) {
+ LoggerE("Callback is null");
+ throw common::UnknownException("Callback is null");
+ }
+
+ callback->setAccountId(m_id);
+ callback->setMessageServiceType(m_msg_type);
+ guint id = g_idle_add(findMessagesTask, static_cast<void*>(callback));
+ if (!id) {
+ LoggerE("g_idle_add failed");
+ delete callback;
+ callback = NULL;
+ }
}
void MessageStorageEmail::findConversations()
virtual void addDraftMessage(MessageCallbackUserData* callback);
virtual void removeMessages(MessagesCallbackUserData* callback);
virtual void updateMessages(MessagesCallbackUserData* callback);
- virtual void findMessages();
+ virtual void findMessages(FindMsgCallbackUserData* callback);
virtual void findConversations();
virtual void removeConversations(ConversationCallbackData* callback);
virtual void findFolders();
filter: args.filter,
sort: args.sort,
limit: args.limit,
- offset: args.offset
+ offset: args.offset,
+ serviceId: this.service.id
}
}).then({
success: function (data) {
var messages = [];
data.forEach(function (el) {
- messages.push(new tizen.Message(el));
+ messages.push(new tizen.Message(el.type, new MessageInit_(el)));
});
args.successCallback.call(null, messages);
},
#include "MsgCommon/AbstractFilter.h"
#include "messages_change_callback.h"
#include "messages_callback_user_data.h"
+#include "find_msg_callback_user_data.h"
#include "messaging_manager.h"
#include "messaging_util.h"
#include "message_storage.h"
picojson::object data = args.get(JSON_DATA).get<picojson::object>();
const double callbackId = args.get(JSON_CALLBACK_ID).get<double>();
- LoggerD("Received: %s", args.serialize().c_str());
- // get filter object - platform object
- // FIND_FOLDERS_ARGS_FILTER
-
auto filter = MessagingUtil::jsonToAttributeFilter(data);
-
- // get sort object - platform object
- // FIND_FOLDERS_ARGS_SORT
auto sortMode = MessagingUtil::jsonToSortMode(data);
-
- // get limit object - unsigned long
- unsigned long limit = static_cast<unsigned long>
+ long limit = static_cast<long>
(MessagingUtil::getValueFromJSONObject<double>(data, FIND_FOLDERS_ARGS_LIMIT));
+ long offset = static_cast<long>
+ (MessagingUtil::getValueFromJSONObject<double>(data, FIND_FOLDERS_ARGS_OFFSET));
- LoggerD("Limit: %u", limit);
+ int serviceId = static_cast<int>(data.at(FUNCTIONS_HIDDEN_ARGS_SERVICE_ID).get<double>());
+ auto storage = MessagingManager::getInstance().getMessageServiceEmail(serviceId)->getMsgStorage();
- // get offset object - unsigned long
- unsigned long offset = static_cast<unsigned long>
- (MessagingUtil::getValueFromJSONObject<double>(data, FIND_FOLDERS_ARGS_OFFSET));
+ FindMsgCallbackUserData* callback = new FindMsgCallbackUserData();
+ callback->setFilter(filter);
+ callback->setLimit(limit);
+ callback->setOffset(offset);
+ callback->setAccountId(serviceId);
+
+ auto json = std::shared_ptr<picojson::value>(new picojson::value(picojson::object()));
+ picojson::object& obj = json->get<picojson::object>();
+ obj[JSON_CALLBACK_ID] = picojson::value(callbackId);
+ callback->setJson(json);
- LoggerD("Offset: %u", offset);
+ storage->findMessages(callback);
}
void MessagingInstance::MessageStorageRemoveMessages(const picojson::value& args,