diff --git a/Wino.Mail.ViewModels/AccountManagementViewModel.cs b/Wino.Mail.ViewModels/AccountManagementViewModel.cs index 19e535a3..e5b2b8af 100644 --- a/Wino.Mail.ViewModels/AccountManagementViewModel.cs +++ b/Wino.Mail.ViewModels/AccountManagementViewModel.cs @@ -44,6 +44,8 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel private readonly ICalDavClient _calDavClient; private readonly IMimeStorageService _mimeStorageService; private readonly ICalendarService _calendarService; + private readonly IMailService _mailService; + private readonly IFolderService _folderService; public IMailDialogService MailDialogService { get; } @@ -73,6 +75,8 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel ICalDavClient calDavClient, IMimeStorageService mimeStorageService, ICalendarService calendarService, + IMailService mailService, + IFolderService folderService, IAuthenticationProvider authenticationProvider, IPreferencesService preferencesService) : base(dialogService, navigationService, accountService, providerService, winoAccountProfileService, authenticationProvider, preferencesService) { @@ -83,6 +87,8 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel _calDavClient = calDavClient; _mimeStorageService = mimeStorageService; _calendarService = calendarService; + _mailService = mailService; + _folderService = folderService; } [ObservableProperty] @@ -449,6 +455,7 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel var totalStorageBytes = storageSizes.Values.DefaultIfEmpty(0L).Sum(); var totalCalendarCount = 0; + var uniqueMessageIds = new HashSet(); foreach (var account in accounts) { @@ -461,11 +468,30 @@ public partial class AccountManagementViewModel : AccountManagementPageViewModel { // Keep partial summary data if a specific account calendar lookup fails. } + + try + { + var folders = await _folderService.GetFoldersAsync(account.Id).ConfigureAwait(false); + foreach (var folder in folders) + { + var mails = await _mailService.GetMailsByFolderIdAsync(folder.Id).ConfigureAwait(false); + foreach (var mail in mails) + { + uniqueMessageIds.Add(mail.UniqueId); + } + } + } + catch + { + // Keep partial summary data if a specific account mail lookup fails. + } } await ExecuteUIThread(() => { - SummaryEmailCountText = SummaryUnavailable; + SummaryEmailCountText = uniqueMessageIds.Count > 0 + ? uniqueMessageIds.Count.ToString("N0", CultureInfo.CurrentCulture) + : "0"; SummaryStorageText = totalStorageBytes > 0 ? totalStorageBytes.GetBytesReadable() : "0 B"; diff --git a/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml b/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml index 67fbf3be..f68e1697 100644 --- a/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml +++ b/Wino.Mail.WinUI/Views/Account/AccountManagementPage.xaml @@ -118,10 +118,11 @@ - - + + @@ -134,48 +135,48 @@ - + - + - + - +