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 System.Text.Json.Serialization.Metadata;
using Squidex.Infrastructure.Reflection; using Squidex.Infrastructure.Reflection;
#pragma warning disable MA0084 // Local variables should not hide other symbols
namespace Squidex.Infrastructure.Json.System; namespace Squidex.Infrastructure.Json.System;
public sealed class PolymorphicConverter<T> : JsonConverter<T> where T : class 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)) if (typeRegistry.TryGetConfig(baseType, out var config) && config.TryGetName(typeInfo.Type, out var typeName))
{ {
var discriminiatorName = config.DiscriminatorProperty ?? Constants.DefaultDiscriminatorProperty; var discriminatorName = config.DiscriminatorProperty ?? Constants.DefaultDiscriminatorProperty;
var discriminatorField = typeInfo.CreateJsonPropertyInfo(typeof(string), discriminiatorName); var discriminatorField = typeInfo.CreateJsonPropertyInfo(typeof(string), discriminatorName);
discriminatorField.Get = x => 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) 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.NotNull(tool);
Assert.Equal("schemas", tool.Spec.Name); Assert.Equal("schemas", tool.Spec.Name);
Assert.Equal("Schemas", tool.Spec.DisplayName); 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); Assert.Contains(Schema.Name, result, StringComparison.Ordinal);
@ -56,7 +56,7 @@ public class SchemasChatToolTests : GivenContext
BaseContext = FrontendContext BaseContext = FrontendContext
}; };
var tool = await sut.GetToolsAsync(chatContext, default).FirstOrDefaultAsync(); var tool = await sut.GetToolsAsync(chatContext, CancellationToken).FirstOrDefaultAsync(CancellationToken);
Assert.Null(tool); Assert.Null(tool);
} }

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

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