polish account summary layout and email count
This commit is contained in:
@@ -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<Guid>();
|
||||
|
||||
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";
|
||||
|
||||
@@ -118,10 +118,11 @@
|
||||
<winuiControls:SettingsCard
|
||||
Grid.Column="1"
|
||||
Margin="0,12,0,0"
|
||||
MinHeight="200"
|
||||
Description="{x:Bind domain:Translator.WinoAccount_Management_SummarySectionDescription}"
|
||||
Header="{x:Bind domain:Translator.WinoAccount_Management_SummarySectionTitle}">
|
||||
<StackPanel Spacing="12">
|
||||
<Grid ColumnSpacing="12" RowSpacing="12">
|
||||
<StackPanel Spacing="10">
|
||||
<Grid ColumnSpacing="10" RowSpacing="10">
|
||||
<Grid.RowDefinitions>
|
||||
<RowDefinition Height="Auto" />
|
||||
<RowDefinition Height="Auto" />
|
||||
@@ -134,48 +135,48 @@
|
||||
<Border
|
||||
Grid.Row="0"
|
||||
Grid.Column="0"
|
||||
Padding="12"
|
||||
Padding="10"
|
||||
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
|
||||
CornerRadius="8">
|
||||
<StackPanel Spacing="4">
|
||||
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryAccountsLabel}" />
|
||||
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryAccountCountText, Mode=OneWay}" />
|
||||
<TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryAccountCountText, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="0"
|
||||
Grid.Column="1"
|
||||
Padding="12"
|
||||
Padding="10"
|
||||
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
|
||||
CornerRadius="8">
|
||||
<StackPanel Spacing="4">
|
||||
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryEmailsLabel}" />
|
||||
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryEmailCountText, Mode=OneWay}" />
|
||||
<TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryEmailCountText, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="0"
|
||||
Padding="12"
|
||||
Padding="10"
|
||||
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
|
||||
CornerRadius="8">
|
||||
<StackPanel Spacing="4">
|
||||
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryStorageLabel}" />
|
||||
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryStorageText, Mode=OneWay}" />
|
||||
<TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryStorageText, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
|
||||
<Border
|
||||
Grid.Row="1"
|
||||
Grid.Column="1"
|
||||
Padding="12"
|
||||
Padding="10"
|
||||
Background="{ThemeResource CardBackgroundFillColorSecondaryBrush}"
|
||||
CornerRadius="8">
|
||||
<StackPanel Spacing="4">
|
||||
<TextBlock Style="{StaticResource CaptionTextBlockStyle}" Text="{x:Bind domain:Translator.WinoAccount_Management_SummaryCalendarsLabel}" />
|
||||
<TextBlock FontSize="24" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryCalendarCountText, Mode=OneWay}" />
|
||||
<TextBlock FontSize="22" FontWeight="SemiBold" Text="{x:Bind ViewModel.SummaryCalendarCountText, Mode=OneWay}" />
|
||||
</StackPanel>
|
||||
</Border>
|
||||
</Grid>
|
||||
|
||||
Reference in New Issue
Block a user