[messaging] EmailGetMailboxById native function wrapper. 18/219418/2
authorMichal Michalski <m.michalski2@partner.samsung.com>
Wed, 4 Dec 2019 13:42:13 +0000 (14:42 +0100)
committerMichal Michalski <m.michalski2@partner.samsung.com>
Fri, 6 Dec 2019 08:38:08 +0000 (09:38 +0100)
+ Created wrapper to native email_get_mailbox_by_mailbox_id() function.

[Verification]

Signed-off-by: Michal Michalski <m.michalski2@partner.samsung.com>
Change-Id: Iad88d2c59ac872394c52cc0506c8f5a0ab52865a

src/messaging/messaging_native.cc
src/messaging/messaging_native.h

index 032d786..880a76e 100644 (file)
 #include "common/platform_result.h"
 #include "common/scope_exit.h"
 #include "message_folder.h"
+#include "messaging_util.h"
 
 #include <email-api-mailbox.h>
 
+#include <string>
 #include <vector>
 
 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<MessageFolder>& 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();
index 6910177..e4e0b6f 100644 (file)
@@ -35,6 +35,7 @@ using extension::messaging::MessageFolder;
 namespace native {
 
 common::PlatformResult EmailGetMailboxList(int account_id, std::vector<MessageFolder>& folders);
+common::PlatformResult EmailGetMailboxById(int mailbox_id, MessageFolder& folder);
 
 }  // namespace native