From f434cc337f97cfdb5fe66fb1b3f122430917057c Mon Sep 17 00:00:00 2001 From: Maciek Blim Date: Thu, 15 Jan 2015 11:32:34 +0100 Subject: [PATCH] [Messaging] tct fixes for sms part 2 tct: pass: 161 fail: 9 timeout: 12 pass rate: ~88.5% Change-Id: Ica02a90f1762d4dfe6a9455b910e1b261fe31b19 Signed-off-by: Maciek Blim --- src/messaging/email_manager.cc | 5 ++- src/messaging/message_service_short_msg.cc | 1 - src/messaging/messaging_api.js | 45 ++++++++++++++++++---- src/messaging/messaging_util.cc | 1 + src/messaging/messaging_util.h | 1 + src/messaging/short_message_manager.cc | 22 +++++++---- 6 files changed, 58 insertions(+), 17 deletions(-) diff --git a/src/messaging/email_manager.cc b/src/messaging/email_manager.cc index 03566511..1f616a3a 100644 --- a/src/messaging/email_manager.cc +++ b/src/messaging/email_manager.cc @@ -374,7 +374,10 @@ static gboolean sendEmailCompleteCB(void* data) auto bccVect = callback->getMessage()->getBCC(); std::for_each(bccVect.begin(), bccVect.end(), addToRecipients); - obj[JSON_DATA] = picojson::value(recipients); + picojson::object data; + data[JSON_DATA_RECIPIENTS] = picojson::value(recipients); + data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(callback->getMessage()); + obj[JSON_DATA] = picojson::value(data); MessagingInstance::getInstance().PostMessage(json->serialize().c_str()); callback->getMessage()->setMessageStatus(MessageStatus::STATUS_SENT); diff --git a/src/messaging/message_service_short_msg.cc b/src/messaging/message_service_short_msg.cc index ba4663c1..961e9c86 100644 --- a/src/messaging/message_service_short_msg.cc +++ b/src/messaging/message_service_short_msg.cc @@ -125,7 +125,6 @@ static gboolean loadMessageBodyTask(void* data) try { std::shared_ptr body = callback->getMessage()->getBody(); - body->setLoaded(true); auto json = callback->getJson(); picojson::object& obj = json->get(); obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); diff --git a/src/messaging/messaging_api.js b/src/messaging/messaging_api.js index 57e20764..9e566d13 100644 --- a/src/messaging/messaging_api.js +++ b/src/messaging/messaging_api.js @@ -180,7 +180,7 @@ function Message(type, data) { folderId: folderId || null, type: type, timestamp: timestamp || null, - from: from || null, + from: from || '', to: to || [], cc: cc || [], bcc: bcc || [], @@ -189,7 +189,7 @@ function Message(type, data) { hasAttachment: hasAttachment || false, isHighPriority: data.isHighPriority || false, subject: data.subject || '', - inResponseTo: inResponseTo || '', + inResponseTo: inResponseTo || null, attachments: attachments }; // id @@ -246,9 +246,12 @@ function Message(type, data) { this, 'timestamp', { - get: function () {return new Date(_internal.timestamp);}, + get: function () { + return _internal.timestamp ? new Date(_internal.timestamp) : _internal.timestamp; + }, set: function (value) { - if (value instanceof InternalValues_) _internal.timestamp = value.timestamp; + if (value instanceof InternalValues_) value = value.timestamp; + _internal.timestamp = value; }, enumerable: true } @@ -330,8 +333,8 @@ function Message(type, data) { { get: function () {return _internal.isRead;}, set: function (value) { - if (value instanceof InternalValues_) value = value.isRead; - _internal.isRead = value; + if (value instanceof InternalValues_) {value = value.isRead;} + _internal.isRead = !!value; }, enumerable: true } @@ -678,8 +681,18 @@ MessageService.prototype.sendMessage = function () { } }).then({ success: function (data) { + var message = data.message; + if (message) { + var body = message.body; + if (body) { + updateInternal_(args.message.body, body) + delete message.body; + } + updateInternal_(args.message, message); + } + if (args.successCallback) { - args.successCallback.call(null, data); + args.successCallback.call(null, data.recipients); } }, error: function (e) { @@ -993,7 +1006,23 @@ MessageStorage.prototype.updateMessages = function () { serviceId: self.service.id } }).then({ - success: function () { + success: function (data) { + var originals = {}; + args.messages.forEach(function (m) { + if (m.id) { + originals[m.id] = m; + } + }); + data.forEach(function (message) { + if (!originals[message.id]) {return;} + var body = message.body; + if (body) { + updateInternal_(originals[message.id].body, body) + delete message.body; + } + updateInternal_(originals[message.id], message); + }); + if (args.successCallback) { args.successCallback.call(null); } diff --git a/src/messaging/messaging_util.cc b/src/messaging/messaging_util.cc index 8c70b3d2..1fcdb630 100644 --- a/src/messaging/messaging_util.cc +++ b/src/messaging/messaging_util.cc @@ -33,6 +33,7 @@ const char* JSON_DATA = "args"; const char* JSON_DATA_MESSAGE = "message"; const char* JSON_DATA_MESSAGE_BODY = "messageBody"; const char* JSON_DATA_MESSAGE_ATTACHMENT = "messageAttachment"; +const char* JSON_DATA_RECIPIENTS = "recipients"; const char* JSON_ERROR_MESSAGE = "message"; const char* JSON_ERROR_NAME = "name"; diff --git a/src/messaging/messaging_util.h b/src/messaging/messaging_util.h index bc927187..885b18a7 100644 --- a/src/messaging/messaging_util.h +++ b/src/messaging/messaging_util.h @@ -32,6 +32,7 @@ extern const char* JSON_DATA; extern const char* JSON_DATA_MESSAGE; extern const char* JSON_DATA_MESSAGE_BODY; extern const char* JSON_DATA_MESSAGE_ATTACHMENT; +extern const char* JSON_DATA_RECIPIENTS; extern const char* JSON_ERROR_MESSAGE; extern const char* JSON_ERROR_NAME; diff --git a/src/messaging/short_message_manager.cc b/src/messaging/short_message_manager.cc index b0829120..734ede73 100644 --- a/src/messaging/short_message_manager.cc +++ b/src/messaging/short_message_manager.cc @@ -65,13 +65,10 @@ static gboolean sendMessageCompleteCB(void* data) auto toVect = callback->getMessage()->getTO(); std::for_each(toVect.begin(), toVect.end(), addToRecipients); - auto ccVect = callback->getMessage()->getCC(); - std::for_each(ccVect.begin(), ccVect.end(), addToRecipients); - - auto bccVect = callback->getMessage()->getBCC(); - std::for_each(bccVect.begin(), bccVect.end(), addToRecipients); - - obj[JSON_DATA] = picojson::value(recipients); + picojson::object data; + data[JSON_DATA_RECIPIENTS] = picojson::value(recipients); + data[JSON_DATA_MESSAGE] = MessagingUtil::messageToJson(message); + obj[JSON_DATA] = picojson::value(data); MessagingInstance::getInstance().PostMessage(json->serialize().c_str()); callback->getMessage()->setMessageStatus(MessageStatus::STATUS_SENT); @@ -849,6 +846,17 @@ void ShortMsgManager::updateMessages(MessagesCallbackUserData* callback) auto json = callback->getJson(); picojson::object& obj = json->get(); + + auto messages = callback->getMessages(); + picojson::array array; + auto each = [&array] (std::shared_ptr m)->void { + array.push_back(MessagingUtil::messageToJson(m)); + }; + + for_each(messages.begin(), messages.end(), each); + + obj[JSON_DATA] = picojson::value(array); + obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS); MessagingInstance::getInstance().PostMessage(json->serialize().c_str()); } -- 2.34.1