Added Validation logics

This commit is contained in:
TheXamlGuy
2024-06-16 13:42:36 +01:00
parent 691806351e
commit db278db697
3 changed files with 105 additions and 36 deletions
+38 -8
View File
@@ -1,17 +1,11 @@
using CommunityToolkit.Mvvm.ComponentModel;
using System.ComponentModel;
using System.Diagnostics.CodeAnalysis;
using System.Reactive.Disposables;
using Toolkit.Foundation;
namespace Wallet;
public partial class CreateWalletViewModel(IServiceProvider provider,
IServiceFactory factory,
IPublisher publisher,
IMediator mediator,
ISubscriber subscriber,
IDisposer disposer) :
Observable(provider, factory, mediator, publisher, subscriber, disposer),
public partial class CreateWalletViewModel : Observable,
IPrimaryConfirmation
{
[MaybeNull]
@@ -22,6 +16,32 @@ public partial class CreateWalletViewModel(IServiceProvider provider,
[ObservableProperty]
private string password;
[MaybeNull]
[ObservableProperty]
private string? repeatedPassword;
[ObservableProperty]
private IValidation validation;
public CreateWalletViewModel(IValidation validation,
IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
Validation = validation;
Validation.Add(() => Name, [new ValidationRule(() => Name is { Length: > 0 })],
ValidationTrigger.Immediate);
Validation.Add(() => Password, [new ValidationRule(() => Password is { Length: > 0 })],
ValidationTrigger.Immediate);
Name = name;
}
public async Task<bool> ConfirmPrimary()
{
using (await new ActivityLock(this))
@@ -30,4 +50,14 @@ public partial class CreateWalletViewModel(IServiceProvider provider,
bool>(Create.As(new Wallet<(string, string)>((Name, Password))));
}
}
protected override void OnPropertyChanged(PropertyChangedEventArgs args)
{
if (args.PropertyName is string name)
{
Validation.Validate(name);
}
base.OnPropertyChanged(args);
}
}
+22 -10
View File
@@ -1,25 +1,37 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System.ComponentModel.DataAnnotations;
using Toolkit.Foundation;
namespace Wallet;
public partial class OpenWalletViewModel(IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
string name) :
Observable(provider, factory, mediator, publisher, subscriber, disposer)
public partial class OpenWalletViewModel : Observable
{
private readonly IValidation validation;
[ObservableProperty]
private string? name = name;
private string? name;
[ObservableProperty]
private string? password;
[ObservableProperty]
private string? repeatedPassword;
public OpenWalletViewModel(IValidation validation,
IServiceProvider provider,
IServiceFactory factory,
IMediator mediator,
IPublisher publisher,
ISubscriber subscriber,
IDisposer disposer,
string name) : base(provider, factory, mediator, publisher, subscriber, disposer)
{
this.validation = validation;
Name = name;
}
[RelayCommand]
private async Task Invoke()
{