Browse Source

Fix previous URL.

pull/1113/head
Sebastian Stehle 2 years ago
parent
commit
cfc38557d1
  1. 6
      backend/src/Squidex.Infrastructure/Json/System/PolymorphicConverter.cs
  2. 6
      backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemasChatToolTests.cs
  3. 24
      frontend/src/app/framework/services/previous-url.service.ts

6
backend/src/Squidex.Infrastructure/Json/System/PolymorphicConverter.cs

@ -10,6 +10,8 @@ using System.Text.Json.Serialization;
using System.Text.Json.Serialization.Metadata;
using Squidex.Infrastructure.Reflection;
#pragma warning disable MA0084 // Local variables should not hide other symbols
namespace Squidex.Infrastructure.Json.System;
public sealed class PolymorphicConverter<T> : JsonConverter<T> where T : class
@ -38,8 +40,8 @@ public sealed class PolymorphicConverter<T> : JsonConverter<T> where T : class
{
if (typeRegistry.TryGetConfig(baseType, out var config) && config.TryGetName(typeInfo.Type, out var typeName))
{
var discriminiatorName = config.DiscriminatorProperty ?? Constants.DefaultDiscriminatorProperty;
var discriminatorField = typeInfo.CreateJsonPropertyInfo(typeof(string), discriminiatorName);
var discriminatorName = config.DiscriminatorProperty ?? Constants.DefaultDiscriminatorProperty;
var discriminatorField = typeInfo.CreateJsonPropertyInfo(typeof(string), discriminatorName);
discriminatorField.Get = x =>
{

6
backend/tests/Squidex.Domain.Apps.Entities.Tests/Schemas/SchemasChatToolTests.cs

@ -31,13 +31,13 @@ public class SchemasChatToolTests : GivenContext
BaseContext = CreateContext(PermissionIds.ForApp(PermissionIds.AppSchemasRead, App.Name).Id)
};
var tool = await sut.GetToolsAsync(chatContext, default).FirstOrDefaultAsync();
var tool = await sut.GetToolsAsync(chatContext, CancellationToken).FirstOrDefaultAsync(CancellationToken);
Assert.NotNull(tool);
Assert.Equal("schemas", tool.Spec.Name);
Assert.Equal("Schemas", tool.Spec.DisplayName);
var result = await tool.ExecuteAsync(Activator.CreateInstance<ToolContext>(), default);
var result = await tool.ExecuteAsync(Activator.CreateInstance<ToolContext>(), CancellationToken);
Assert.Contains(Schema.Name, result, StringComparison.Ordinal);
@ -56,7 +56,7 @@ public class SchemasChatToolTests : GivenContext
BaseContext = FrontendContext
};
var tool = await sut.GetToolsAsync(chatContext, default).FirstOrDefaultAsync();
var tool = await sut.GetToolsAsync(chatContext, CancellationToken).FirstOrDefaultAsync(CancellationToken);
Assert.Null(tool);
}

24
frontend/src/app/framework/services/previous-url.service.ts

@ -6,18 +6,28 @@
*/
import { Injectable } from '@angular/core';
import { Router, RoutesRecognized } from '@angular/router';
import { filter, pairwise } from 'rxjs/operators';
@Injectable({
providedIn: 'root',
})
export class PreviousUrl {
public pathStartsWith(path: string) {
try {
const url = new URL(document.referrer);
private previousPath = '';
constructor(
private readonly router: Router,
) {
this.previousPath = router.url;
return url.pathname.startsWith(path);
} catch {
return false;
}
this.router.events
.pipe(filter(e => e instanceof RoutesRecognized), pairwise())
.subscribe((event: any[]) => {
this.previousPath = event[0].urlAfterRedirects;
});
}
public pathStartsWith(path: string) {
return this.previousPath && this.previousPath.startsWith(path);
}
}
Loading…
Cancel
Save