[Bug] Updating messageId for messages with attachment not succeed.
[Verification] Code compiles without errors.
TCT MessageStorage_email_updateMessages pass.
Change-Id: I406e673d303f2b5ff39f3c0a8f65778395d80cf2
Signed-off-by: Piotr Kosko <p.kosko@samsung.com>
addDraftMessagePlatform(mail->account_id, (*it));
LoggerD("mail added - new id = [%d]\n", (*it)->getId());
+ //storing old message id
+ (*it)->setOldId(mail->mail_id);
//deleting old mail
LoggerD("mail deleted = [%d]\n", mail->mail_id);
error = email_delete_mail(mail->mailbox_id,&mail->mail_id,1,1);
// *** constructor
Message::Message():
- m_id(-1), m_id_set(false), m_conversation_id(-1),
+ m_id(-1), m_old_id(-1), m_id_set(false), m_conversation_id(-1),
m_conversation_id_set(false), m_folder_id(-1), m_folder_id_set(false),
m_type(UNDEFINED), m_timestamp_set(false), m_from_set(false),
m_body(new(std::nothrow) MessageBody()),
return m_id;
}
+int Message::getOldId() const
+{
+ if (-1 == m_old_id) {
+ return m_id;
+ }
+ return m_old_id;
+}
+
int Message::getConversationId() const
{
return m_conversation_id;
}
}
+void Message::setOldId(int id)
+{
+ LoggerD("Entered");
+ m_old_id = id;
+}
+
+
void Message::setConversationId(int id)
{
LoggerD("Entered");
// attributes getters
int getId() const;
+ int getOldId() const;
int getConversationId() const;
int getFolderId() const;
MessageType getType() const;
// attributes setters (virtual because some of them can be overriden in sub classes)
virtual void setId(int id);
+ virtual void setOldId(int id);
virtual void setConversationId(int id);
virtual void setFolderId(int id);
// type setting not allowed so no setter provided
protected:
//! Message id
int m_id;
+ //! Old Message id - for email update hack
+ int m_old_id;
//! Flag for checking if id is set (false means: not set)
bool m_id_set;
//! Conversation id
}
}).then({
success: function (data) {
- var originals = {};
- args.messages.forEach(function (m) {
+ var originals = {},
+ i = args.messages.length,
+ m;
+ while (i--) {
+ m = args.messages[i];
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;
+ }
+
+ i = data.length;
+ while (i--) {
+ m = data[i];
+ if (originals[m.oldId]) {
+ var body = m.body;
+ if (body) {
+ updateInternal_(originals[m.oldId].body, body)
+ delete m.body;
+ }
+ updateInternal_(originals[m.oldId], m);
}
- updateInternal_(originals[message.id], message);
- });
+ }
if (args.successCallback) {
args.successCallback.call(null);
const char* JSON_ERROR_NAME = "name";
const char* MESSAGE_ATTRIBUTE_ID = "id";
+const char* MESSAGE_ATTRIBUTE_OLD_ID = "oldId";
const char* MESSAGE_ATTRIBUTE_CONVERSATION_ID = "conversationId";
const char* MESSAGE_ATTRIBUTE_FOLDER_ID = "folderId";
const char* MESSAGE_ATTRIBUTE_TYPE = "type";
o[MESSAGE_ATTRIBUTE_HAS_ATTACHMENT] = picojson::value(message->getHasAttachment());
o[MESSAGE_ATTRIBUTE_IS_HIGH_PRIORITY] = picojson::value(message->getIsHighPriority());
o[MESSAGE_ATTRIBUTE_SUBJECT] = picojson::value(message->getSubject());
+ o[MESSAGE_ATTRIBUTE_OLD_ID] = picojson::value(std::to_string(message->getOldId()));
break;
}