diff --git a/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetChangedTriggerHandler.cs b/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetChangedTriggerHandler.cs index b172897af..47efad3fc 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetChangedTriggerHandler.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Assets/AssetChangedTriggerHandler.cs @@ -75,12 +75,12 @@ namespace Squidex.Domain.Apps.Entities.Assets return true; } - var context = new ScriptVars + var vars = new ScriptVars { ["event"] = @event }; - return scriptEngine.Evaluate(context, trigger.Condition); + return scriptEngine.Evaluate(vars, trigger.Condition); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentTriggerHandler.cs b/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentTriggerHandler.cs index 2c4271bab..185a623a5 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentTriggerHandler.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Comments/CommentTriggerHandler.cs @@ -76,12 +76,12 @@ namespace Squidex.Domain.Apps.Entities.Comments return true; } - var context = new ScriptVars + var vars = new ScriptVars { ["event"] = @event }; - return scriptEngine.Evaluate(context, trigger.Condition); + return scriptEngine.Evaluate(vars, trigger.Condition); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentChangedTriggerHandler.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentChangedTriggerHandler.cs index 53533e1a5..e63133729 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentChangedTriggerHandler.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/ContentChangedTriggerHandler.cs @@ -144,12 +144,12 @@ namespace Squidex.Domain.Apps.Entities.Contents return true; } - var context = new ScriptVars + var vars = new ScriptVars { ["event"] = @event }; - return scriptEngine.Evaluate(context, schema.Condition); + return scriptEngine.Evaluate(vars, schema.Condition); } } } diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/DynamicContentWorkflow.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/DynamicContentWorkflow.cs index e712f8463..9dde82eeb 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/DynamicContentWorkflow.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/DynamicContentWorkflow.cs @@ -115,12 +115,12 @@ namespace Squidex.Domain.Apps.Entities.Contents if (!string.IsNullOrWhiteSpace(condition?.Expression)) { - var context = new ScriptVars + var vars = new ScriptVars { ["data"] = data }; - return scriptEngine.Evaluate(context, condition.Expression); + return scriptEngine.Evaluate(vars, condition.Expression); } return true; diff --git a/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ScriptContent.cs b/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ScriptContent.cs index 7dad07756..2baecf6a9 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ScriptContent.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Contents/Queries/Steps/ScriptContent.cs @@ -46,7 +46,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps private async Task TransformAsync(Context context, string script, ContentEntity content) { - var scriptContext = new ScriptVars + var vars = new ScriptVars { ContentId = content.Id, Data = content.Data, @@ -55,7 +55,12 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries.Steps User = context.User }; - content.Data = await scriptEngine.TransformAsync(scriptContext, script); + var options = new ScriptOptions + { + AsContext = true + }; + + content.Data = await scriptEngine.TransformAsync(vars, script, options); } private static bool ShouldEnrich(Context context) diff --git a/backend/src/Squidex.Domain.Apps.Entities/Schemas/SchemaChangedTriggerHandler.cs b/backend/src/Squidex.Domain.Apps.Entities/Schemas/SchemaChangedTriggerHandler.cs index 0cfd0070a..e63caf380 100644 --- a/backend/src/Squidex.Domain.Apps.Entities/Schemas/SchemaChangedTriggerHandler.cs +++ b/backend/src/Squidex.Domain.Apps.Entities/Schemas/SchemaChangedTriggerHandler.cs @@ -76,12 +76,12 @@ namespace Squidex.Domain.Apps.Entities.Schemas return true; } - var context = new ScriptVars + var vars = new ScriptVars { ["event"] = @event }; - return scriptEngine.Evaluate(context, trigger.Condition); + return scriptEngine.Evaluate(vars, trigger.Condition); } } } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Counter/CounterJintExtensionTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Counter/CounterJintExtensionTests.cs index 3e57db153..88b846d7d 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Counter/CounterJintExtensionTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Counter/CounterJintExtensionTests.cs @@ -51,12 +51,12 @@ namespace Squidex.Domain.Apps.Entities.Contents.Counter return resetCounter('my', 4); "; - var context = new ScriptVars + var vars = new ScriptVars { ["appId"] = appId }; - var result = sut.Execute(context, script).ToString(); + var result = sut.Execute(vars, script).ToString(); Assert.Equal("3", result); } @@ -76,12 +76,12 @@ namespace Squidex.Domain.Apps.Entities.Contents.Counter return incrementCounter('my'); "; - var context = new ScriptVars + var vars = new ScriptVars { ["appId"] = appId }; - var result = sut.Execute(context, script).ToString(); + var result = sut.Execute(vars, script).ToString(); Assert.Equal("3", result); } diff --git a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ScriptContentTests.cs b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ScriptContentTests.cs index 9dc4b3c90..3888b4528 100644 --- a/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ScriptContentTests.cs +++ b/backend/tests/Squidex.Domain.Apps.Entities.Tests/Contents/Queries/ScriptContentTests.cs @@ -67,7 +67,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries await sut.EnrichAsync(ctx, new[] { content }, schemaProvider); - A.CallTo(() => scriptEngine.TransformAsync(A._, A._, default)) + A.CallTo(() => scriptEngine.TransformAsync(A._, A._, ScriptOptions())) .MustNotHaveHappened(); } @@ -80,7 +80,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries await sut.EnrichAsync(ctx, new[] { content }, schemaProvider); - A.CallTo(() => scriptEngine.TransformAsync(A._, A._, default)) + A.CallTo(() => scriptEngine.TransformAsync(A._, A._, ScriptOptions())) .MustNotHaveHappened(); } @@ -93,7 +93,7 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries var content = new ContentEntity { SchemaId = schemaWithScriptId, Data = oldData }; - A.CallTo(() => scriptEngine.TransformAsync(A._, "my-query", default)) + A.CallTo(() => scriptEngine.TransformAsync(A._, "my-query", ScriptOptions())) .Returns(new NamedContentData()); await sut.EnrichAsync(ctx, new[] { content }, schemaProvider); @@ -106,8 +106,13 @@ namespace Squidex.Domain.Apps.Entities.Contents.Queries ReferenceEquals(x.Data, oldData) && x.ContentId == content.Id), "my-query", - A._)) + ScriptOptions())) .MustHaveHappened(); } + + private ScriptOptions ScriptOptions() + { + return A.That.Matches(x => x.AsContext); + } } } diff --git a/frontend/app/shared/components/notifo.component.html b/frontend/app/shared/components/notifo.component.html index 6ed9d9411..f3ce26328 100644 --- a/frontend/app/shared/components/notifo.component.html +++ b/frontend/app/shared/components/notifo.component.html @@ -1 +1,7 @@ - \ No newline at end of file + + + + + Click this button to subscribe to all changes and to receive push notifications. + + diff --git a/frontend/app/shared/components/notifo.component.ts b/frontend/app/shared/components/notifo.component.ts index d2c2929ca..7eeb0904a 100644 --- a/frontend/app/shared/components/notifo.component.ts +++ b/frontend/app/shared/components/notifo.component.ts @@ -28,6 +28,10 @@ export class NotifoComponent implements AfterViewInit, OnChanges, OnDestroy { @ViewChild('element', { static: false }) public element: ElementRef; + public get showOnboarding() { + return !!this.notifoApiUrl && !!this.topic; + } + constructor(resourceLoader: ResourceLoaderService, uiOptions: UIOptions, authService: AuthService, private readonly renderer: Renderer2 ) {