Skip to content

Fix sticky conversations in GMail

Michael Gratton requested to merge wip/all-mail-sticky-conversations into master

If a least one email in a conversation that is in the base folder but also in another is removed from the base folder, the conversation may not be removed from the monitor despite possibly not having any email in the base folder, since the email may not have been completely removed from the conversation.

This was particulary being seen with GMail accounts where even single message conversations were not disappering when trashed because the converation's email was still in All Mail.

This fix does a few things: Avoids hitting the database when checking a conversation still has email in the base folder, when it does check only ensures that email are in the base folder, not any folder, and updates ConversationSet::remove_all_emails_by_identifier to do this check iternally, clean up its API and implementation and avoids having to use out args calling it.

Merge request reports