MojErr UpSyncDraftsCommand::GetDraftsResponse(MojObject& response, MojErr err) { CommandTraceFunction(); try { ErrorToException(err); // Store all draft emails in a vector. BOOST_FOREACH(const MojObject& emailObj, DatabaseAdapter::GetResultsIterators(response)) { EmailPtr email = boost::make_shared<ImapEmail>(); EmailAdapter::ParseDatabaseObject(emailObj, *email); MojObject id; err = emailObj.getRequired(DatabaseAdapter::ID, id); ErrorToException(err); email->SetId(id); // Parse UID (only exists for IMAP emails already on server) bool hasUID = false; UID uid = 0; err = emailObj.get(ImapEmailAdapter::UID, uid, hasUID); ErrorToException(err); if(hasUID && uid > 0) { email->SetUID(uid); } m_drafts.push_back(email); } // Check for more results bool hasMoreResults = DatabaseAdapter::GetNextPage(response, m_draftsPage); if(hasMoreResults) { GetDrafts(); } else { if(!m_drafts.empty()) { MojLogInfo(m_log, "uploading %d draft emails to the server", m_drafts.size()); m_emailP = m_drafts.back(); CreateAndRunAppendCommand(); } else { SetupWatchDraftsActivity(); } } } CATCH_AS_FAILURE
MojErr UpSyncDraftsCommand::GetDraftsFolderNameResponse(MojObject& response, MojErr err) { CommandTraceFunction(); try { ErrorToException(err); MojObject folderObj; DatabaseAdapter::GetOneResult(response, folderObj); MojString draftsFolderName; err = folderObj.getRequired(ImapFolderAdapter::SERVER_FOLDER_NAME, draftsFolderName); ErrorToException(err); m_draftsFolderName.assign(draftsFolderName); GetDrafts(); } CATCH_AS_FAILURE return MojErrNone; }
void CheckDraftsCommand::RunImpl() { CommandTraceFunction(); GetDrafts(); }