Add capability-first account and calendar setup flow

This commit is contained in:
Burak Kaan Köse
2026-04-20 19:38:30 +02:00
parent 54148716bb
commit d85812ed7b
41 changed files with 1369 additions and 333 deletions
@@ -78,6 +78,13 @@ public class MailAccount
/// </summary>
public SpecialImapProvider SpecialImapProvider { get; set; }
/// <summary>
/// Gets or sets whether mail access is granted for this account.
/// When false, mail folders, aliases, compose flows, and mail synchronization are unavailable.
/// Default is true for legacy accounts to preserve existing behavior.
/// </summary>
public bool IsMailAccessGranted { get; set; } = true;
/// <summary>
/// Gets or sets whether calendar access is granted for this account.
/// When false, synchronizers will not process EventMessages or calendar invitations.
@@ -3,8 +3,8 @@
public interface IAuthenticatorConfig
{
string OutlookAuthenticatorClientId { get; }
string[] OutlookScope { get; }
string[] GetOutlookScope(bool isMailAccessGranted, bool isCalendarAccessGranted);
string GmailAuthenticatorClientId { get; }
string[] GmailScope { get; }
string[] GetGmailScope(bool isMailAccessGranted, bool isCalendarAccessGranted);
string GmailTokenStoreIdentifier { get; }
}
@@ -7,4 +7,6 @@ public record AccountCreationDialogResult(
string AccountName,
SpecialImapProviderDetails SpecialImapProviderDetails,
string AccountColorHex,
InitialSynchronizationRange InitialSynchronizationRange);
InitialSynchronizationRange InitialSynchronizationRange,
bool IsMailAccessGranted,
bool IsCalendarAccessGranted);
@@ -47,6 +47,11 @@
"AccountDetailsPage_CalendarListDescription": "Select a calendar to configure its settings",
"AccountDetailsPage_InitialSynchronization_Title": "Initial synchronization",
"AccountDetailsPage_InitialSynchronization_Description": "Wino synchronized your mails until {0} going back.",
"AccountDetailsPage_CapabilityTitle": "Connected features",
"AccountDetailsPage_CapabilityDescription": "Choose whether this account is used for mail, calendar, or both. Enabling a new feature may ask you to sign in again.",
"AccountCapability_MailOnly": "Mail only",
"AccountCapability_CalendarOnly": "Calendar only",
"AccountCapability_MailAndCalendar": "Mail + Calendar",
"AddHyperlink": "Add",
"AppCloseBackgroundSynchronizationWarningTitle": "Background Synchronization",
"AppCloseStartupLaunchDisabledWarningMessageFirstLine": "Application has not been set to launch on Windows startup.",
@@ -76,6 +81,7 @@
"Buttons_ApplyTheme": "Apply Theme",
"Buttons_PopOut": "Pop out",
"Buttons_Browse": "Browse",
"Buttons_Back": "Back",
"Buttons_Cancel": "Cancel",
"Buttons_Close": "Close",
"Buttons_Copy": "Copy",
@@ -681,6 +687,10 @@
"NoMailSelected": "No message selected",
"NoMessageCrieteria": "No messages match your search criteria",
"NoMessageEmptyFolder": "This folder is empty",
"MailEmptyState_Title": "No mail-enabled accounts",
"MailEmptyState_Message": "You have accounts connected for calendar, but none of them are enabled for mail. Add a mail account or update an existing account to use mail.",
"MailEmptyState_AddAccount": "Add account",
"MailEmptyState_ManageAccounts": "Manage accounts",
"Notifications_MultipleNotificationsMessage": "You have {0} new messages.",
"Notifications_MultipleNotificationsTitle": "New Mail",
"Notifications_WinoUpdatedMessage": "Checkout new version {0}",
@@ -702,8 +712,8 @@
"ProviderDetail_Gmail_Description": "Google Account",
"ProviderDetail_iCloud_Description": "Apple iCloud Account",
"ProviderDetail_iCloud_Title": "iCloud",
"ProviderDetail_IMAP_Description": "Custom IMAP/SMTP server",
"ProviderDetail_IMAP_Title": "IMAP Server",
"ProviderDetail_IMAP_Description": "IMAP/SMTP mail with CalDAV or local calendar",
"ProviderDetail_IMAP_Title": "Custom server",
"ProviderDetail_Yahoo_Description": "Yahoo Account",
"ProviderDetail_Yahoo_Title": "Yahoo Mail",
"QuickEventDialog_EventName": "Event name",
@@ -1427,8 +1437,8 @@
"WinoAccount_Management_ExportDialog_InProgress": "Exporting your selected Wino data...",
"WinoAccount_Management_LocalDataSectionTitle": "Transfer with a JSON file",
"WinoAccount_Management_LocalDataSectionDescription": "Import from or export to a local JSON file. Passwords, tokens, and other sensitive information are not included.",
"WinoAccount_Management_LocalDataImportAction": "Import JSON",
"WinoAccount_Management_LocalDataExportAction": "Export JSON",
"WinoAccount_Management_LocalDataImportAction": "Import",
"WinoAccount_Management_LocalDataExportAction": "Export",
"WinoAccount_Management_LocalDataSaved": "Saved your exported Wino data to {0}.",
"WinoAccount_Management_LocalDataInvalidFile": "The selected JSON file doesn't contain a valid Wino export.",
"WinoAccount_Management_LoadFailed": "Wino could not load the latest Wino Account information.",
@@ -1527,8 +1537,22 @@
"WelcomeWizard_Step3Title": "Finish Setup",
"ProviderSelection_Title": "Choose your email provider",
"ProviderSelection_Subtitle": "Select a provider below to add your email account to Wino Mail.",
"ProviderSelection_StepProgress": "Step {0} of 3",
"ProviderSelection_IdentityTitle": "Account identity",
"ProviderSelection_IdentityDescription": "Choose how this account appears inside Wino.",
"ProviderSelection_ProviderSectionTitle": "Provider",
"ProviderSelection_ProviderSectionDescription": "Select the service you want to connect.",
"ProviderSelection_CapabilitySectionTitle": "Use this account for",
"ProviderSelection_CapabilitySectionDescription": "Choose whether you want mail, calendar, or both.",
"ProviderSelection_CapabilityProviderDescription_OAuth": "On the next step, secure sign-in will connect your account. If you enable calendar, Wino will also connect Outlook Calendar or Google Calendar automatically.",
"ProviderSelection_CapabilityProviderDescription_SpecialImap": "On the next step, you'll enter your provider credentials. Mail uses IMAP/SMTP, and calendar can use CalDAV or stay local on this device.",
"ProviderSelection_CapabilityProviderDescription_CustomServer": "On the next step, you'll enter your server details. Mail uses IMAP/SMTP, and calendar can use CalDAV or stay local on this device.",
"ProviderSelection_AccountNameHeader": "Account Name",
"ProviderSelection_AccountNamePlaceholder": "e.g. Personal, Work",
"ProviderSelection_UseForMail": "Mail",
"ProviderSelection_UseForCalendar": "Calendar",
"ProviderSelection_CapabilityValidationMessage": "Choose at least one capability before continuing.",
"ProviderSelection_CalendarOnlyServerHint": "If you continue with calendar only, the next page will not require an email address.",
"ProviderSelection_DisplayNameHeader": "Display Name",
"ProviderSelection_DisplayNamePlaceholder": "e.g. John Doe",
"ProviderSelection_EmailHeader": "E-mail Address",