void IMAPFolder::MessageEntriesFetched() { _WaitForFolderState(); // Synchronize all pending flags first UIDToFlagsMap::const_iterator pendingIterator = fPendingFlagsMap.begin(); for (; pendingIterator != fPendingFlagsMap.end(); pendingIterator++) SyncMessageFlags(pendingIterator->first, pendingIterator->second); fPendingFlagsMap.clear(); // Delete all local messages that are no longer found on the server MutexLocker locker(fLock); UIDSet deleteUIDs; UIDToRefMap::const_iterator iterator = fRefMap.begin(); for (; iterator != fRefMap.end(); iterator++) { uint32 uid = iterator->first; if (fSynchronizedUIDsSet.find(uid) == fSynchronizedUIDsSet.end()) deleteUIDs.insert(uid); } fSynchronizedUIDsSet.clear(); locker.Unlock(); UIDSet::const_iterator deleteIterator = deleteUIDs.begin(); for (; deleteIterator != deleteUIDs.end(); deleteIterator++) _DeleteLocalMessage(*deleteIterator); }
void IMAPFolder::DeleteMessage(uint32 uid) { // TODO: move message to trash (server side) _DeleteLocalMessage(uid); }
void IMAPFolder::MessageEntriesFetched() { // Delete all local messages that weren't synchronized with the server UIDToRefMap::const_iterator iterator = fRefMap.begin(); for (; iterator != fRefMap.end(); iterator++) { uint32 uid = iterator->first; if (fSynchronizedUIDsSet.find(uid) == fSynchronizedUIDsSet.end()) _DeleteLocalMessage(uid); } fSynchronizedUIDsSet.clear(); }