feat: create cloud-free Wino Mail fork

This commit is contained in:
root
2026-04-29 01:32:51 +02:00
parent ef12e0ff3a
commit e2cc79a471
37 changed files with 137 additions and 3905 deletions

View File

@@ -27,17 +27,10 @@ namespace Wino.Services;
public class DialogService : DialogServiceBase, IMailDialogService
{
private readonly IWinoAccountProfileService _winoAccountProfileService;
private readonly IWinoAccountDataSyncService _winoAccountDataSyncService;
public DialogService(INewThemeService themeService,
IConfigurationService configurationService,
IApplicationResourceManager<ResourceDictionary> applicationResourceManager,
IWinoAccountProfileService winoAccountProfileService,
IWinoAccountDataSyncService winoAccountDataSyncService) : base(themeService, configurationService, applicationResourceManager)
IApplicationResourceManager<ResourceDictionary> applicationResourceManager) : base(themeService, configurationService, applicationResourceManager)
{
_winoAccountProfileService = winoAccountProfileService;
_winoAccountDataSyncService = winoAccountDataSyncService;
}
public void ShowReadOnlyCalendarMessage()
@@ -274,82 +267,4 @@ public class DialogService : DialogServiceBase, IMailDialogService
return null;
}
public async Task<WinoAccount?> ShowWinoAccountRegistrationDialogAsync()
{
var dialog = new WinoAccountRegistrationDialog(_winoAccountProfileService)
{
RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme()
};
await HandleDialogPresentationAsync(dialog);
if (!string.IsNullOrWhiteSpace(dialog.ConfirmationEmailAddress))
{
await ShowMessageAsync(
string.Format(Translator.WinoAccount_EmailConfirmationSentDialog_Message, dialog.ConfirmationEmailAddress),
Translator.WinoAccount_EmailConfirmationSentDialog_Title);
}
return null;
}
public async Task<WinoAccount?> ShowWinoAccountLoginDialogAsync()
{
var dialog = new WinoAccountLoginDialog(_winoAccountProfileService)
{
RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme()
};
var result = await HandleDialogPresentationAsync(dialog);
if (dialog.EmailConfirmationRequiredDetails != null && !string.IsNullOrWhiteSpace(dialog.PendingConfirmationEmailAddress))
{
var confirmationDialog = new WinoAccountEmailConfirmationRequiredDialog(
_winoAccountProfileService,
dialog.PendingConfirmationEmailAddress,
dialog.EmailConfirmationRequiredDetails)
{
RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme()
};
await HandleDialogPresentationAsync(confirmationDialog);
if (confirmationDialog.ResendSucceeded)
{
await ShowMessageAsync(
string.Format(Translator.WinoAccount_EmailConfirmationResentDialog_Message, dialog.PendingConfirmationEmailAddress),
Translator.WinoAccount_EmailConfirmationResentDialog_Title);
}
return null;
}
if (!string.IsNullOrWhiteSpace(dialog.PasswordResetEmailAddress))
{
await ShowMessageAsync(
string.Format(Translator.WinoAccount_ForgotPasswordDialog_SuccessMessage, dialog.PasswordResetEmailAddress),
Translator.WinoAccount_ForgotPasswordDialog_SuccessTitle);
return null;
}
return dialog.Result;
}
public async Task<WinoAccountSyncExportResult?> ShowWinoAccountExportDialogAsync()
{
var dialog = new WinoAccountSyncExportDialog(_winoAccountDataSyncService)
{
RequestedTheme = ThemeService.RootTheme.ToWindowsElementTheme()
};
await HandleDialogPresentationAsync(dialog);
if (dialog.FailureException != null)
{
throw dialog.FailureException;
}
return dialog.Result;
}
}

View File

@@ -91,7 +91,6 @@ public class NavigationService : NavigationServiceBase, INavigationService
WinoPage.EmailTemplatesPage,
WinoPage.CreateEmailTemplatePage,
WinoPage.StoragePage,
WinoPage.WinoAccountManagementPage,
WinoPage.CalendarSettingsPage,
WinoPage.CalendarRenderingSettingsPage,
WinoPage.CalendarNotificationSettingsPage,
@@ -163,7 +162,6 @@ public class NavigationService : NavigationServiceBase, INavigationService
WinoPage.EmailTemplatesPage => typeof(EmailTemplatesPage),
WinoPage.CreateEmailTemplatePage => typeof(CreateEmailTemplatePage),
WinoPage.StoragePage => typeof(StoragePage),
WinoPage.WinoAccountManagementPage => typeof(WinoAccountManagementPage),
WinoPage.WelcomeHostPage => typeof(WelcomeHostPage),
WinoPage.ProviderSelectionPage => typeof(ProviderSelectionPage),
WinoPage.AccountSetupProgressPage => typeof(AccountSetupProgressPage),

View File

@@ -405,17 +405,6 @@ public class PreferencesService(IConfigurationService configurationService) : Ob
set => SetPropertyAndSave(nameof(IsSystemTrayIconEnabled), value);
}
public bool IsWinoAccountButtonHidden
{
get => _configurationService.Get(nameof(IsWinoAccountButtonHidden), false);
set => SetPropertyAndSave(nameof(IsWinoAccountButtonHidden), value);
}
public bool IsAiActionsPanelHidden
{
get => _configurationService.Get(nameof(IsAiActionsPanelHidden), false);
set => SetPropertyAndSave(nameof(IsAiActionsPanelHidden), value);
}
public string AiDefaultTranslationLanguageCode
{