Conversation::Conversation(unsigned int threadId, MessageType msgType)
{
- LoggerD("Enter");
bool result = false;
if (msgType == EMAIL)
bool Conversation::makeConversationFromEmailThreadId(unsigned int emailTreadId)
{
- LoggerD("Enter");
-
email_mail_list_item_t *resultMail = NULL;
email_mail_list_item_t *mailList = NULL;
int index = 0;
int count = 0;
+ int err = 0;
email_mail_data_t* mailData = NULL;
m_result = true;
// Todo : will be re-implemented as using email_get_thread_information_ex
if(email_get_thread_information_ex(emailTreadId, &resultMail) != EMAIL_ERROR_NONE)
{
- ThrowMsg(WrtDeviceApis::Commons::UnknownException, "get email thread fail" );
+ ThrowMsg(WrtDeviceApis::Commons::UnknownException, "email_get_thread_information_ex fail" );
}
if (!resultMail)
{
- return NULL;
+ m_result = false;
+ ThrowMsg(WrtDeviceApis::Commons::NotFoundException, "email_get_thread_information_ex result is NULL" );
}
//get mail data
- if (email_get_mail_data(resultMail->mail_id,&mailData) != EMAIL_ERROR_NONE)
+ err = email_get_mail_data(resultMail->mail_id,&mailData);
+ if (err != EMAIL_ERROR_NONE)
{
- ThrowMsg(WrtDeviceApis::Commons::UnknownException, "get email data fail" );
+ if(err == EMAIL_ERROR_MAIL_NOT_FOUND)
+ {
+ m_result = false;
+ ThrowMsg(WrtDeviceApis::Commons::NotFoundException, "email_get_mail_data not found" );
+ }
+ LoggerD("email_get_mail_data failed " << resultMail->mail_id);
+ ThrowMsg(WrtDeviceApis::Commons::UnknownException, "email_get_mail_data fail" );
}
// account Id
m_unreadMessages = 0;
- LoggerD("start email_get_mail_list");
- if (email_get_mail_list(mailData->account_id, 0, emailTreadId, 0, resultMail->thread_item_count,
- EMAIL_SORT_DATETIME_HIGH, &mailList, &count) != EMAIL_ERROR_NONE)
+ err = email_get_mail_list(mailData->account_id, 0, emailTreadId, 0, resultMail->thread_item_count, EMAIL_SORT_DATETIME_HIGH, &mailList, &count);
+ if ( err != EMAIL_ERROR_NONE)
{
- ThrowMsg(WrtDeviceApis::Commons::UnknownException, "get email data fail" );
+ if(err == EMAIL_ERROR_MAIL_NOT_FOUND)
+ {
+ m_result = false;
+ ThrowMsg(WrtDeviceApis::Commons::NotFoundException, "email_get_mail_list not found" );
+ }
+ ThrowMsg(WrtDeviceApis::Commons::UnknownException, "email_get_mail_list fail" );
}
- LoggerD("end email_get_mail_list");
// unread msg count
for (index = 0; index < count; index++)
m_lastMessageId = resultMail->mail_id;
m_result = true;
}
+ catch (const WrtDeviceApis::Commons::NotFoundException& ex)
+ {
+ LoggerE("Exception: " << ex.GetMessage());
+ if (mailData != NULL)
+ {
+ email_free_mail_data(&mailData , 1);
+ }
+ if (resultMail != NULL)
+ {
+ free(resultMail);
+ }
+ if (mailList != NULL)
+ {
+ free(mailList);
+ }
+ return !m_result;
+ }
catch (const WrtDeviceApis::Commons::Exception& ex)
{
m_result = false;
{
email_free_mail_data(&mailData , 1);
}
-
if (resultMail != NULL)
{
free(resultMail);
}
+ if (mailList != NULL)
+ {
+ free(mailList);
+ }
return m_result;
for(int i=0; i<mailListCount; i++){
if(mailList[i].mail_id != mailList[i].thread_id)
{
- LoggerD("skip mail");
- LoggerD("mailList[i].mail_id: " << mailList[i].mail_id);
- LoggerD("mailList[i].thread_id:" << mailList[i].thread_id);
+ LoggerD("skip mail - mail_id : " << mailList[i].mail_id << " , thread_id : " << mailList[i].thread_id);
continue;
}
if (checkUnique.find(mailList[i].thread_id) == checkUnique.end()){
checkUnique.insert(mailList[i].thread_id);
IConversationPtr convPtr(new Conversation(mailList[i].thread_id, EMAIL));
- //TODO for debug
- LoggerD("mailList[i].thread_id:[" << mailList[i].thread_id << "]");
- LoggerD("mailList[i].full_address_from:[" << mailList[i].full_address_from << "]");
- LoggerD("mailList[i].email_address_sender : [" << mailList[i].email_address_sender <<"]");
- LoggerD("mailList[i].subject:[" << mailList[i].subject << "]");
- LoggerD("mailList[i].preview_text:[" << mailList[i].preview_text << "]");
- LoggerD("mailList[i].flags_seen_field:[" << mailList[i].flags_seen_field << "]");
- LoggerD("mailList[i].priority:[" << mailList[i].priority<< "]");
-
if (convPtr->getResult() == true)
{
emailResultVector.push_back(convPtr);