From ef2dfd39578f06fb1e76448d59c00b816c013e6c Mon Sep 17 00:00:00 2001 From: Sipke Schoorstra Date: Fri, 9 Aug 2024 18:20:49 +0200 Subject: [PATCH] Refactor journal data access and improve byte[] handling (#5878) Switched to dictionary index access for "ResumeAt" in Delay.cs to ensure more efficient updating. Added handling for byte[] in ObjectConverter.cs to correctly deserialize from base64 strings. --- src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs | 8 +++++++- src/modules/Elsa.Scheduling/Activities/Delay.cs | 2 +- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs b/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs index 571397bee..a66d344e6 100644 --- a/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs +++ b/src/modules/Elsa.Expressions/Helpers/ObjectConverter.cs @@ -112,7 +112,13 @@ public static class ObjectConverter if (underlyingSourceType == typeof(string) && !underlyingTargetType.IsPrimitive && underlyingTargetType != typeof(object)) { var stringValue = (string)value; - + + if (underlyingTargetType == typeof(byte[])) + { + // Byte arrays are serialized to base64, so in this case, we convert the string back to the requested target type of byte[]. + return Convert.FromBase64String(stringValue); + } + try { var firstChar = stringValue.TrimStart().FirstOrDefault(); diff --git a/src/modules/Elsa.Scheduling/Activities/Delay.cs b/src/modules/Elsa.Scheduling/Activities/Delay.cs index 1c56d11ee..63981e03d 100644 --- a/src/modules/Elsa.Scheduling/Activities/Delay.cs +++ b/src/modules/Elsa.Scheduling/Activities/Delay.cs @@ -78,7 +78,7 @@ public class Delay : Activity, IActivityPropertyDefaultValueProvider var resumeAt = clock.UtcNow.Add(timeSpan); var payload = new DelayPayload(resumeAt); - context.JournalData.Add("ResumeAt", resumeAt); + context.JournalData["ResumeAt"] = resumeAt; context.CreateBookmark(payload); }