Removed migrations. New onboarding screen and wizard like steps.

This commit is contained in:
Burak Kaan Köse
2026-03-06 03:42:08 +01:00
parent db5ecd60e4
commit aaa6e8a2c9
56 changed files with 1843 additions and 554 deletions
@@ -9,7 +9,8 @@ namespace Wino.Mail.ViewModels.Data;
public enum ImapCalDavSettingsPageMode
{
Create,
Edit
Edit,
Wizard
}
public sealed class ImapCalDavSettingsNavigationContext
@@ -35,6 +36,16 @@ public sealed class ImapCalDavSettingsNavigationContext
Mode = ImapCalDavSettingsPageMode.Edit,
AccountId = accountId
};
public static ImapCalDavSettingsNavigationContext CreateForWizardMode(
AccountCreationDialogResult accountCreationDialogResult)
=> new()
{
Mode = ImapCalDavSettingsPageMode.Wizard,
AccountCreationDialogResult = accountCreationDialogResult
};
public bool IsWizardMode => Mode == ImapCalDavSettingsPageMode.Wizard;
}
public sealed class ImapCalDavSetupResult
@@ -0,0 +1,79 @@
using CommunityToolkit.Mvvm.ComponentModel;
using Wino.Core.Domain.Entities.Shared;
using Wino.Core.Domain.Enums;
using Wino.Core.Domain.Interfaces;
using Wino.Core.Domain.Models.Accounts;
namespace Wino.Mail.ViewModels.Data;
public partial class WelcomeWizardContext : ObservableObject
{
// Step 2 — Provider selection
[ObservableProperty]
public partial IProviderDetail SelectedProvider { get; set; }
[ObservableProperty]
public partial string AccountName { get; set; }
[ObservableProperty]
public partial string AccountColorHex { get; set; }
// Special IMAP fields (iCloud/Yahoo)
[ObservableProperty]
public partial string DisplayName { get; set; }
[ObservableProperty]
public partial string EmailAddress { get; set; }
[ObservableProperty]
public partial string AppSpecificPassword { get; set; }
[ObservableProperty]
public partial ImapCalendarSupportMode CalendarSupportMode { get; set; } = ImapCalendarSupportMode.Disabled;
// Generic IMAP — populated by ImapCalDavSettingsPage
public ImapCalDavSetupResult ImapCalDavSetupResult { get; set; }
// Computed helpers
public bool IsOAuthProvider => SelectedProvider?.Type is MailProviderType.Outlook or MailProviderType.Gmail;
public bool IsSpecialImapProvider =>
SelectedProvider?.SpecialImapProvider is SpecialImapProvider.iCloud or SpecialImapProvider.Yahoo;
public bool IsGenericImap =>
SelectedProvider?.Type == MailProviderType.IMAP4
&& SelectedProvider?.SpecialImapProvider == SpecialImapProvider.None;
public SpecialImapProviderDetails BuildSpecialImapProviderDetails()
{
if (!IsSpecialImapProvider) return null;
return new SpecialImapProviderDetails(
EmailAddress,
AppSpecificPassword,
DisplayName,
SelectedProvider.SpecialImapProvider,
CalendarSupportMode);
}
public AccountCreationDialogResult BuildAccountCreationDialogResult()
{
return new AccountCreationDialogResult(
SelectedProvider.Type,
AccountName,
BuildSpecialImapProviderDetails(),
AccountColorHex);
}
public void Reset()
{
SelectedProvider = null;
AccountName = null;
AccountColorHex = null;
DisplayName = null;
EmailAddress = null;
AppSpecificPassword = null;
CalendarSupportMode = ImapCalendarSupportMode.Disabled;
ImapCalDavSetupResult = null;
}
}