@@ -32,6 +32,7 @@ use crate::contact::{Contact, ContactId, Modifier, Origin};
3232use crate :: context:: Context ;
3333use crate :: events:: EventType ;
3434use crate :: headerdef:: { HeaderDef , HeaderDefMap } ;
35+ use crate :: imap:: select_folder:: NewlySelected ;
3536use crate :: login_param:: { CertificateChecks , LoginParam , ServerLoginParam } ;
3637use crate :: message:: { self , Message , MessageState , MessengerMessage , MsgId , Viewtype } ;
3738use crate :: mimeparser;
@@ -548,10 +549,11 @@ impl Imap {
548549 . await
549550 . with_context ( || format ! ( "Failed to select folder {folder:?}" ) ) ?;
550551
551- if !new_emails && !fetch_existing_msgs {
552+ if !session . should_fetch && ! new_emails && !fetch_existing_msgs {
552553 info ! ( context, "No new emails in folder {folder:?}." ) ;
553554 return Ok ( false ) ;
554555 }
556+ session. should_fetch = false ;
555557
556558 let uid_validity = get_uidvalidity ( context, folder) . await ?;
557559 let old_uid_next = get_uid_next ( context, folder) . await ?;
@@ -1131,9 +1133,18 @@ impl Session {
11311133 return Ok ( ( ) ) ;
11321134 }
11331135
1134- self . select_folder ( context, folder)
1136+ if self
1137+ . select_folder ( context, folder)
11351138 . await
1136- . context ( "failed to select folder" ) ?;
1139+ . context ( "failed to select folder" ) ?
1140+ == NewlySelected :: Yes
1141+ {
1142+ info ! (
1143+ context,
1144+ "Folder {folder} was unselected before, should fetch."
1145+ ) ;
1146+ self . should_fetch = true ;
1147+ }
11371148
11381149 let mailbox = self
11391150 . selected_mailbox
0 commit comments