@@ -357,6 +357,15 @@ class MailClient {
357357 if (order != null ) {
358358 boxes = sortMailboxes (order, boxes);
359359 }
360+ if (boxes.isNotEmpty) {
361+ final separator = boxes.first.pathSeparator;
362+ if (separator != _account.incoming.pathSeparator) {
363+ _account = _account.copyWith (
364+ incoming: _account.incoming.copyWith (pathSeparator: separator),
365+ );
366+ unawaited (_onConfigChanged? .call (_account));
367+ }
368+ }
360369 return boxes;
361370 }
362371
@@ -365,9 +374,10 @@ class MailClient {
365374 ///
366375 /// Optionally set [createIntermediate] to false, in case not all intermediate
367376 /// folders should be created, if not already present on the server.
368- Future <Tree <Mailbox ?>> listMailboxesAsTree (
369- {bool createIntermediate = true ,
370- List <MailboxFlag > order = defaultMailboxOrder}) async {
377+ Future <Tree <Mailbox ?>> listMailboxesAsTree ({
378+ bool createIntermediate = true ,
379+ List <MailboxFlag > order = defaultMailboxOrder,
380+ }) async {
371381 final mailboxes = _mailboxes ?? await listMailboxes ();
372382 List <Mailbox >? firstBoxes;
373383 firstBoxes = sortMailboxes (order, mailboxes, keepRemaining: false );
@@ -462,8 +472,11 @@ class MailClient {
462472 /// with [enableCondStore] .
463473 ///
464474 /// Optionally specify quick resync parameters with [qresync] .
465- Future <Mailbox > selectMailboxByPath (String path,
466- {bool enableCondStore = false , QResyncParameters ? qresync}) async {
475+ Future <Mailbox > selectMailboxByPath (
476+ String path, {
477+ bool enableCondStore = false ,
478+ QResyncParameters ? qresync,
479+ }) async {
467480 var mailboxes = _mailboxes;
468481 mailboxes ?? = await listMailboxes ();
469482 final mailbox = mailboxes.firstWhereOrNull ((box) => box.path == path);
@@ -482,8 +495,11 @@ class MailClient {
482495 /// with [enableCondStore] .
483496 ///
484497 /// Optionally specify quick resync parameters with [qresync] .
485- Future <Mailbox > selectMailboxByFlag (MailboxFlag flag,
486- {bool enableCondStore = false , QResyncParameters ? qresync}) async {
498+ Future <Mailbox > selectMailboxByFlag (
499+ MailboxFlag flag, {
500+ bool enableCondStore = false ,
501+ QResyncParameters ? qresync,
502+ }) async {
487503 var mailboxes = _mailboxes;
488504 mailboxes ?? = await listMailboxes ();
489505 final mailbox = getMailbox (flag, mailboxes);
@@ -503,8 +519,10 @@ class MailClient {
503519 ///
504520 /// Optionally specify quick resync parameters with [qresync] -
505521 /// for IMAP servers that support `QRESYNC` only.
506- Future <Mailbox > selectInbox (
507- {bool enableCondStore = false , QResyncParameters ? qresync}) async {
522+ Future <Mailbox > selectInbox ({
523+ bool enableCondStore = false ,
524+ QResyncParameters ? qresync,
525+ }) async {
508526 var mailboxes = _mailboxes;
509527 mailboxes ?? = await listMailboxes ();
510528 var inbox = mailboxes.firstWhereOrNull ((box) => box.isInbox);
@@ -523,8 +541,11 @@ class MailClient {
523541 /// enabled with [enableCondStore] .
524542 ///
525543 /// Optionally specify quick resync parameters with [qresync] .
526- Future <Mailbox > selectMailbox (Mailbox mailbox,
527- {bool enableCondStore = false , QResyncParameters ? qresync}) async {
544+ Future <Mailbox > selectMailbox (
545+ Mailbox mailbox, {
546+ bool enableCondStore = false ,
547+ QResyncParameters ? qresync,
548+ }) async {
528549 final box = await _incomingMailClient.selectMailbox (mailbox,
529550 enableCondStore: enableCondStore, qresync: qresync);
530551 _selectedMailbox = box;
@@ -857,8 +878,12 @@ class MailClient {
857878 return Future .wait (futures);
858879 }
859880
860- Future _sendMessageViaOutgoing (MimeMessage message, MailAddress ? from,
861- bool use8BitEncoding, List <MailAddress >? recipients) async {
881+ Future _sendMessageViaOutgoing (
882+ MimeMessage message,
883+ MailAddress ? from,
884+ bool use8BitEncoding,
885+ List <MailAddress >? recipients,
886+ ) async {
862887 await _outgoingMailClient.sendMessage (message,
863888 from: from, use8BitEncoding: use8BitEncoding, recipients: recipients);
864889 await _outgoingMailClient.disconnect ();
@@ -869,8 +894,10 @@ class MailClient {
869894 ///
870895 /// Optionally specify the [draftsMailbox] when the mail system does not
871896 /// support mailbox flags.
872- Future <UidResponseCode ?> saveDraftMessage (MimeMessage message,
873- {Mailbox ? draftsMailbox}) {
897+ Future <UidResponseCode ?> saveDraftMessage (
898+ MimeMessage message, {
899+ Mailbox ? draftsMailbox,
900+ }) {
874901 if (draftsMailbox == null ) {
875902 return appendMessageToFlag (message, MailboxFlag .drafts,
876903 flags: [MessageFlags .draft, MessageFlags .seen]);
@@ -884,8 +911,10 @@ class MailClient {
884911 ///
885912 /// Optionally specify the message [flags] .
886913 Future <UidResponseCode ?> appendMessageToFlag (
887- MimeMessage message, MailboxFlag targetMailboxFlag,
888- {List <String >? flags}) {
914+ MimeMessage message,
915+ MailboxFlag targetMailboxFlag, {
916+ List <String >? flags,
917+ }) {
889918 final mailbox = getMailbox (targetMailboxFlag);
890919 if (mailbox == null ) {
891920 throw MailException (
@@ -898,8 +927,10 @@ class MailClient {
898927 ///
899928 /// Optionally specify the message [flags] .
900929 Future <UidResponseCode ?> appendMessage (
901- MimeMessage message, Mailbox targetMailbox,
902- {List <String >? flags}) =>
930+ MimeMessage message,
931+ Mailbox targetMailbox, {
932+ List <String >? flags,
933+ }) =>
903934 _incomingMailClient.appendMessage (message, targetMailbox, flags);
904935
905936 /// Starts listening for new incoming messages.
@@ -1445,8 +1476,11 @@ abstract class _IncomingMailClient {
14451476
14461477 Future <List <Mailbox >> listMailboxes ();
14471478
1448- Future <Mailbox > selectMailbox (Mailbox mailbox,
1449- {bool enableCondStore = false , QResyncParameters ? qresync});
1479+ Future <Mailbox > selectMailbox (
1480+ Mailbox mailbox, {
1481+ bool enableCondStore = false ,
1482+ QResyncParameters ? qresync,
1483+ });
14501484
14511485 Future <ThreadResult > fetchThreads (
14521486 Mailbox mailbox,
@@ -1885,8 +1919,11 @@ class _IncomingImapClient extends _IncomingMailClient {
18851919 }
18861920
18871921 @override
1888- Future <Mailbox > selectMailbox (Mailbox mailbox,
1889- {bool enableCondStore = false , final QResyncParameters ? qresync}) async {
1922+ Future <Mailbox > selectMailbox (
1923+ Mailbox mailbox, {
1924+ bool enableCondStore = false ,
1925+ final QResyncParameters ? qresync,
1926+ }) async {
18901927 await _pauseIdle ();
18911928 try {
18921929 if (_selectedMailbox != null ) {
@@ -2849,8 +2886,11 @@ class _IncomingPopClient extends _IncomingMailClient {
28492886 Future <List <Mailbox >> listMailboxes () => Future .value ([_popInbox]);
28502887
28512888 @override
2852- Future <Mailbox > selectMailbox (Mailbox mailbox,
2853- {bool enableCondStore = false , QResyncParameters ? qresync}) async {
2889+ Future <Mailbox > selectMailbox (
2890+ Mailbox mailbox, {
2891+ bool enableCondStore = false ,
2892+ QResyncParameters ? qresync,
2893+ }) async {
28542894 if (mailbox != _popInbox) {
28552895 throw MailException (mailClient, 'Unknown mailbox $mailbox ' );
28562896 }
0 commit comments