diff --git a/src/api/Elsa.Api/Endpoints/Events/Trigger.cs b/src/api/Elsa.Api/Endpoints/Events/Trigger.cs
index 1b1db978a..a9e1bab45 100644
--- a/src/api/Elsa.Api/Endpoints/Events/Trigger.cs
+++ b/src/api/Elsa.Api/Endpoints/Events/Trigger.cs
@@ -11,7 +11,7 @@ public static class Trigger
public static IResult Handle(string eventName, IHasher hasher)
{
var hash = hasher.Hash(eventName);
- var stimulus = Stimuli.Standard(nameof(Event), hash);
+ var stimulus = Stimulus.Standard(nameof(Event), hash);
return new ProcessStimulusResult(stimulus);
}
}
\ No newline at end of file
diff --git a/src/core/Elsa.Core/Elsa.Core.csproj b/src/core/Elsa.Core/Elsa.Core.csproj
index 006e4dfd0..1c4a8ecc5 100644
--- a/src/core/Elsa.Core/Elsa.Core.csproj
+++ b/src/core/Elsa.Core/Elsa.Core.csproj
@@ -15,8 +15,4 @@
-
-
-
-
diff --git a/src/core/Elsa.Core/Helpers/Diff.cs b/src/core/Elsa.Core/Helpers/Diff.cs
new file mode 100644
index 000000000..3c736f644
--- /dev/null
+++ b/src/core/Elsa.Core/Helpers/Diff.cs
@@ -0,0 +1,30 @@
+namespace Elsa.Helpers;
+
+///
+/// A simple utility that compares two collections and returns a set of added, removed and unchanged items.
+///
+public class Diff
+{
+ internal Diff(ICollection added, ICollection removed, ICollection unchanged)
+ {
+ Added = added;
+ Removed = removed;
+ Unchanged = unchanged;
+ }
+
+ public ICollection Added { get; }
+ public ICollection Removed { get; }
+ public ICollection Unchanged { get; }
+}
+
+public static class Diff
+{
+ public static Diff For(ICollection firstSet, ICollection secondSet)
+ {
+ var added = firstSet.Except(secondSet).ToList();
+ var removed = secondSet.Except(firstSet).ToList();
+ var unchanged = firstSet.Intersect(secondSet).ToList();
+
+ return new Diff(added, removed, unchanged);
+ }
+}
\ No newline at end of file
diff --git a/src/core/Elsa.Core/Models/TriggerActivity.cs b/src/core/Elsa.Core/Models/TriggerActivity.cs
index 45d32fadd..a1cd59272 100644
--- a/src/core/Elsa.Core/Models/TriggerActivity.cs
+++ b/src/core/Elsa.Core/Models/TriggerActivity.cs
@@ -18,11 +18,24 @@ public class TriggerActivity : Activity, ITrigger
set => NodeType = value;
}
- public virtual ValueTask> GetPayloadsAsync(TriggerIndexingContext context, CancellationToken cancellationToken = default)
+ ValueTask> ITrigger.GetPayloadsAsync(TriggerIndexingContext context, CancellationToken cancellationToken) => GetPayloadsAsync(context, cancellationToken);
+
+ ///
+ /// Override this method to return a list of trigger payloads.
+ ///
+ protected virtual ValueTask> GetPayloadsAsync(TriggerIndexingContext context, CancellationToken cancellationToken = default)
{
- var hashes = GetHashInputs(context);
+ var hashes = GetPayloads(context);
return ValueTask.FromResult(hashes);
}
- protected virtual IEnumerable