return m_conversation_id;
}
-int Message::getFolderId() const
-{
- // TODO: folderId is supported different way in SMS/MMS and email
- return m_folder_id;
+int Message::getFolderId() const {
+ LoggerD("Entered");
+ return m_folder_id;
+}
+
+int Message::getFolderIdForUser() const {
+ LoggerD("Entered");
+ // WIDL states:
+ // For SMS and MMS, folderId can be one of these values:
+ // - INBOX = 1,
+ // - OUTBOX = 2,
+ // - DRAFTS = 3,
+ // - SENTBOX = 4
+
+ switch (m_folder_id) {
+ case MSG_INBOX_ID:
+ return 1;
+
+ case MSG_OUTBOX_ID:
+ return 2;
+
+ case MSG_DRAFT_ID:
+ return 3;
+
+ case MSG_SENTBOX_ID:
+ return 4;
+
+ default:
+ LoggerE("Unexpected folder id: %d", m_folder_id);
+ return -1;
+ }
}
MessageType Message::getType() const
}
}
else if (FOLDER_ID == attribute_name) {
- return FilterUtils::isStringMatching(key, std::to_string(getFolderId()),
+ return FilterUtils::isStringMatching(key, std::to_string(getFolderIdForUser()),
match_flag);
}
else if (TYPE == attribute_name) {
int getOldId() const;
int getConversationId() const;
int getFolderId() const;
+ virtual int getFolderIdForUser() const;
MessageType getType() const;
std::string getTypeString() const;
time_t getTimestamp() const;
LoggerD("MessageEmail destructor.");
}
-// *** overrided methods
+// *** overridden methods
+
+int MessageEmail::getFolderIdForUser() const {
+ LoggerD("Entered");
+ // in case of e-mails we're using platform IDs directly
+ return m_folder_id;
+}
+
void MessageEmail::setCC(std::vector<std::string> &cc)
{
LoggerD("Entered");
~MessageEmail();
//overrided base class functions
+ virtual int getFolderIdForUser() const override;
+
void setCC(std::vector<std::string> &cc);
void setBCC(std::vector<std::string> &bcc);
void setSubject(std::string subject);
} else if (ENDSWITH == match_flag) {
match_value = "%<%" + match_value + ">%";
}
+ } else if ("folderId" == attribute_name &&
+ (MessageType::SMS == msgType || MessageType::MMS == msgType)) {
+ LoggerD("Non-email folder ID");
+
+ // need to convert from values presented to user to _MSG_FOLDER_ID_E
+ auto folder_id = attr_filter->getMatchValue()->toLong();
+ switch (folder_id) {
+ case 1:
+ folder_id = MSG_INBOX_ID;
+ break;
+
+ case 2:
+ folder_id = MSG_OUTBOX_ID;
+ break;
+
+ case 3:
+ folder_id = MSG_DRAFT_ID;
+ break;
+
+ case 4:
+ folder_id = MSG_SENTBOX_ID;
+ break;
+
+ default:
+ LoggerE("Unexpected folder ID: %d", folder_id);
+ folder_id = -1;
+ break;
+ }
+
+ match_value = std::to_string(folder_id);
}
switch (match_flag) {
: picojson::value();
o[MESSAGE_ATTRIBUTE_FOLDER_ID] =
message->is_folder_id_set()
- ? picojson::value(std::to_string(message->getFolderId()))
+ ? picojson::value(std::to_string(message->getFolderIdForUser()))
: picojson::value();
o[MESSAGE_ATTRIBUTE_TYPE] = picojson::value(message->getTypeString());
o[MESSAGE_ATTRIBUTE_TIMESTAMP] =