From 74409174ce9a080cfa0301d30014b9d5ba8c0849 Mon Sep 17 00:00:00 2001 From: Octol1ttle Date: Tue, 11 Jul 2023 17:57:06 +0500 Subject: [PATCH] Fix TimeSpan deserialization failing Signed-off-by: Octol1ttle --- src/Data/Options/TimeSpanOption.cs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/Data/Options/TimeSpanOption.cs b/src/Data/Options/TimeSpanOption.cs index e127093..659d88c 100644 --- a/src/Data/Options/TimeSpanOption.cs +++ b/src/Data/Options/TimeSpanOption.cs @@ -9,13 +9,20 @@ public class TimeSpanOption : Option { public TimeSpanOption(string name, TimeSpan defaultValue) : base(name, defaultValue) { } - public override Result Set(JsonNode settings, string from) { - var task = Parser.TryParseAsync(from).AsTask().GetAwaiter().GetResult(); + public override TimeSpan Get(JsonNode settings) { + var property = settings[Name]; + return property != null ? ParseTimeSpan(property.GetValue()).Entity : DefaultValue; + } - if (!task.IsDefined(out var span)) + public override Result Set(JsonNode settings, string from) { + if (!ParseTimeSpan(from).IsDefined(out var span)) return Result.FromError(new ArgumentInvalidError(nameof(from), Messages.InvalidSettingValue)); settings[Name] = span.ToString(); return Result.FromSuccess(); } + + private static Result ParseTimeSpan(string from) { + return Parser.TryParseAsync(from).AsTask().GetAwaiter().GetResult(); + } }