From: Michal Michalski Date: Wed, 4 Dec 2019 13:42:13 +0000 (+0100) Subject: [messaging] EmailGetMailboxById native function wrapper. X-Git-Tag: accepted/tizen/unified/20191212.123659~7^2 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=97832a4e8eb0e1d94b30b30a2e85281969e85b8c;p=platform%2Fcore%2Fapi%2Fwebapi-plugins.git [messaging] EmailGetMailboxById native function wrapper. + Created wrapper to native email_get_mailbox_by_mailbox_id() function. [Verification] Signed-off-by: Michal Michalski Change-Id: Iad88d2c59ac872394c52cc0506c8f5a0ab52865a --- diff --git a/src/messaging/messaging_native.cc b/src/messaging/messaging_native.cc index 032d786..880a76e 100644 --- a/src/messaging/messaging_native.cc +++ b/src/messaging/messaging_native.cc @@ -19,15 +19,52 @@ #include "common/platform_result.h" #include "common/scope_exit.h" #include "message_folder.h" +#include "messaging_util.h" #include +#include #include using extension::messaging::MessageFolder; +using extension::messaging::MessagingUtil; +using extension::messaging::MESSAGE_FOLDER_TYPE_INBOX; +using extension::messaging::MESSAGE_FOLDER_TYPE_SENTBOX; +using extension::messaging::MESSAGE_FOLDER_TYPE_DRAFTS; +using extension::messaging::MESSAGE_FOLDER_TYPE_OUTBOX; +using extension::messaging::EMAIL; +using extension::messaging::MessageFolderTypeStr; using common::PlatformResult; using common::ErrorCode; +namespace { + +std::string convertPlatformFolderType(email_mailbox_type_e folderType) { + ScopeLogger(); + switch (folderType) { + case EMAIL_MAILBOX_TYPE_INBOX: + return MessageFolderTypeStr[MESSAGE_FOLDER_TYPE_INBOX]; + case EMAIL_MAILBOX_TYPE_SENTBOX: + return MessageFolderTypeStr[MESSAGE_FOLDER_TYPE_SENTBOX]; + case EMAIL_MAILBOX_TYPE_DRAFT: + return MessageFolderTypeStr[MESSAGE_FOLDER_TYPE_DRAFTS]; + case EMAIL_MAILBOX_TYPE_OUTBOX: + return MessageFolderTypeStr[MESSAGE_FOLDER_TYPE_OUTBOX]; + default: + return ""; + } +} + +MessageFolder createMessageFolderFromMailbox(email_mailbox_t mailbox) { + ScopeLogger(); + return MessageFolder(std::to_string(mailbox.mailbox_id), "", std::to_string(mailbox.account_id), + MessagingUtil::messageTypeToString(EMAIL), mailbox.alias, + mailbox.mailbox_name, convertPlatformFolderType(mailbox.mailbox_type), + mailbox.local == 0); +} + +} // namespace + namespace native { PlatformResult EmailGetMailboxList(int account_id, email_mailbox_t** mailboxes, int* count) { @@ -54,7 +91,24 @@ PlatformResult EmailGetMailboxList(int account_id, std::vector& f } for (int i = 0; i < count; ++i) { - folders.push_back(MessageFolder(mailboxes[i])); + folders.push_back(createMessageFolderFromMailbox(mailboxes[i])); + } + + return PlatformResult(); +} + +PlatformResult EmailGetMailboxById(int mailbox_id, MessageFolder& folder) { + email_mailbox_t* mailbox = nullptr; + int ret = email_get_mailbox_by_mailbox_id(mailbox_id, &mailbox); + if (EMAIL_ERROR_NONE != ret) { + LoggerE("Failed to load mailbox with id: %d. Error: %s (%d)", mailbox_id, + get_error_message(ret), ret); + return PlatformResult(ErrorCode::UNKNOWN_ERR, "email_get_mailbox_by_mailbox_id() failed."); + } + + folder = createMessageFolderFromMailbox(*mailbox); + if (EMAIL_ERROR_NONE != email_free_mailbox(&mailbox, 1)) { + LoggerW("Calling email_free_mailbox() failed."); } return PlatformResult(); diff --git a/src/messaging/messaging_native.h b/src/messaging/messaging_native.h index 6910177..e4e0b6f 100644 --- a/src/messaging/messaging_native.h +++ b/src/messaging/messaging_native.h @@ -35,6 +35,7 @@ using extension::messaging::MessageFolder; namespace native { common::PlatformResult EmailGetMailboxList(int account_id, std::vector& folders); +common::PlatformResult EmailGetMailboxById(int mailbox_id, MessageFolder& folder); } // namespace native