1
1
use std:: { collections:: BTreeMap , time:: Instant } ;
2
2
3
3
use anyhow:: { Context as _, Result } ;
4
- use futures:: stream :: StreamExt ;
4
+ use futures:: TryStreamExt ;
5
5
6
6
use super :: { get_folder_meaning_by_attrs, get_folder_meaning_by_name} ;
7
7
use crate :: config:: Config ;
@@ -27,7 +27,7 @@ impl Imap {
27
27
info ! ( context, "Starting full folder scan" ) ;
28
28
29
29
self . prepare ( context) . await ?;
30
- let folders = self . list_folders ( context ) . await ?;
30
+ let folders = self . list_folders ( ) . await ?;
31
31
let watched_folders = get_watched_folders ( context) . await ?;
32
32
33
33
let mut folder_configs = BTreeMap :: new ( ) ;
@@ -98,21 +98,15 @@ impl Imap {
98
98
}
99
99
100
100
/// Returns the names of all folders on the IMAP server.
101
- pub async fn list_folders (
102
- self : & mut Imap ,
103
- context : & Context ,
104
- ) -> Result < Vec < async_imap:: types:: Name > > {
101
+ pub async fn list_folders ( self : & mut Imap ) -> Result < Vec < async_imap:: types:: Name > > {
105
102
let session = self . session . as_mut ( ) ;
106
103
let session = session. context ( "No IMAP connection" ) ?;
107
104
let list = session
108
105
. list ( Some ( "" ) , Some ( "*" ) )
109
106
. await ?
110
- . filter_map ( |f| async {
111
- f. context ( "list_folders() can't get folder" )
112
- . log_err ( context)
113
- . ok ( )
114
- } ) ;
115
- Ok ( list. collect ( ) . await )
107
+ . try_collect ( )
108
+ . await ?;
109
+ Ok ( list)
116
110
}
117
111
}
118
112
0 commit comments