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);
try {
std::shared_ptr<MessageBody> body = callback->getMessage()->getBody();
- body->setLoaded(true);
auto json = callback->getJson();
picojson::object& obj = json->get<picojson::object>();
obj[JSON_ACTION] = picojson::value(JSON_CALLBACK_SUCCCESS);
folderId: folderId || null,
type: type,
timestamp: timestamp || null,
- from: from || null,
+ from: from || '',
to: to || [],
cc: cc || [],
bcc: bcc || [],
hasAttachment: hasAttachment || false,
isHighPriority: data.isHighPriority || false,
subject: data.subject || '',
- inResponseTo: inResponseTo || '',
+ inResponseTo: inResponseTo || null,
attachments: attachments
};
// id
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
}
{
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
}
}
}).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) {
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);
}
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";
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;
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);
auto json = callback->getJson();
picojson::object& obj = json->get<picojson::object>();
+
+ auto messages = callback->getMessages();
+ picojson::array array;
+ auto each = [&array] (std::shared_ptr<Message> 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());
}