From 82e598263273c56697c92861cee45cf4528d3f88 Mon Sep 17 00:00:00 2001 From: TheXamlGuy Date: Tue, 23 Jul 2024 18:20:58 +0100 Subject: [PATCH] prevent dup wallets --- Toolkit.Foundation/Error.cs | 14 ++++++++++++++ Toolkit.Foundation/Result.cs | 14 ++++++++++++++ Toolkit.Foundation/Result1.cs | 19 +++++++++++++++++++ Toolkit.Foundation/ValidationRule.cs | 2 +- Toolkit.Foundation/Validator.cs | 2 +- .../InfoBar/InfoBar.cs | 8 ++++++++ 6 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 Toolkit.Foundation/Error.cs create mode 100644 Toolkit.Foundation/Result.cs create mode 100644 Toolkit.Foundation/Result1.cs create mode 100644 Toolkit.UI.Controls.Avalonia/InfoBar/InfoBar.cs diff --git a/Toolkit.Foundation/Error.cs b/Toolkit.Foundation/Error.cs new file mode 100644 index 0000000..c12219a --- /dev/null +++ b/Toolkit.Foundation/Error.cs @@ -0,0 +1,14 @@ +namespace Toolkit.Foundation; + +public record Error(string Code, string Message) +{ + public static readonly Error None = new(string.Empty, string.Empty); + + public static readonly Error Null = new("Error.NullValue", "The specified result value is null."); + + public static readonly Error ConditionNotMet = new("Error.ConditionNotMet", "The specified condition was not met."); + + public static readonly Error Duplicated = new("Error.Duplicated", "The specified item already exists."); + + public static readonly Error Failure = new("Error.Failure", "The operation has failed."); +} diff --git a/Toolkit.Foundation/Result.cs b/Toolkit.Foundation/Result.cs new file mode 100644 index 0000000..cf59e5f --- /dev/null +++ b/Toolkit.Foundation/Result.cs @@ -0,0 +1,14 @@ +namespace Toolkit.Foundation; + +public record Result : + Result +{ + private readonly TValue? value; + + protected internal Result(TValue? value, bool isSuccess, Error error) + : base(isSuccess, error) => this.value = value; + + public TValue? Value => IsSuccess ? value! : default; + + public static implicit operator Result(TValue? value) => Create(value); +} diff --git a/Toolkit.Foundation/Result1.cs b/Toolkit.Foundation/Result1.cs new file mode 100644 index 0000000..e67f427 --- /dev/null +++ b/Toolkit.Foundation/Result1.cs @@ -0,0 +1,19 @@ +namespace Toolkit.Foundation; + +public record Result(bool IsSuccess, Error Error) +{ + public bool IsFailure => !IsSuccess; + + public static Result Success() => new(true, Error.None); + + public static Result Success(TValue value) => new(value, true, Error.None); + + public static Result Failure(Error error) => new(false, error); + + public static Result Failure(Error error) => new(default, false, error); + + public static Result Create(bool condition) => condition ? Success() : Failure(Error.ConditionNotMet); + + public static Result Create(TValue? value) => value is not null ? Success(value) : Failure(Error.Null); + +} diff --git a/Toolkit.Foundation/ValidationRule.cs b/Toolkit.Foundation/ValidationRule.cs index f28ab4a..2c72aac 100644 --- a/Toolkit.Foundation/ValidationRule.cs +++ b/Toolkit.Foundation/ValidationRule.cs @@ -31,7 +31,7 @@ public class ValidationRule Message = ""; } - public async Task ValidateAsync() + public async Task Validate() { if (syncValidation is not null) { diff --git a/Toolkit.Foundation/Validator.cs b/Toolkit.Foundation/Validator.cs index bfc2b97..ef237a8 100644 --- a/Toolkit.Foundation/Validator.cs +++ b/Toolkit.Foundation/Validator.cs @@ -11,7 +11,7 @@ public class Validator(string propertyName, { foreach (ValidationRule rule in rules) { - if (!await rule.ValidateAsync()) + if (!await rule.Validate()) { return (false, rule.Message); } diff --git a/Toolkit.UI.Controls.Avalonia/InfoBar/InfoBar.cs b/Toolkit.UI.Controls.Avalonia/InfoBar/InfoBar.cs new file mode 100644 index 0000000..d085043 --- /dev/null +++ b/Toolkit.UI.Controls.Avalonia/InfoBar/InfoBar.cs @@ -0,0 +1,8 @@ +namespace Toolkit.UI.Controls.Avalonia; + +public class InfoBar : + FluentAvalonia.UI.Controls.InfoBar +{ + protected override Type StyleKeyOverride => + typeof(FluentAvalonia.UI.Controls.InfoBar); +} \ No newline at end of file