diff --git a/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs b/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs index 44e96fa7f..c32e8d9e7 100644 --- a/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs +++ b/src/Squidex.Domain.Apps.Entities/Schemas/SchemaGrain.cs @@ -48,7 +48,7 @@ namespace Squidex.Domain.Apps.Entities.Schemas switch (command) { case AddField addField: - return UpdateAsync(addField, c => + return UpdateReturnAsync(addField, async c => { GuardSchemaField.CanAdd(Snapshot.SchemaDef, c); @@ -65,135 +65,167 @@ namespace Squidex.Domain.Apps.Entities.Schemas id = ((IArrayField)Snapshot.SchemaDef.FieldsById[c.ParentFieldId.Value]).FieldsByName[c.Name].Id; } - return EntityCreatedResult.Create(id, Version); + return await GetRawStateAsync(); }); case CreateSchema createSchema: - return CreateAsync(createSchema, async c => + return CreateReturnAsync(createSchema, async c => { await GuardSchema.CanCreate(c, appProvider); Create(c); + + return await GetRawStateAsync(); }); case SynchronizeSchema synchronizeSchema: - return UpdateAsync(synchronizeSchema, c => + return UpdateReturnAsync(synchronizeSchema, async c => { GuardSchema.CanSynchronize(c); Synchronize(c); + + return await GetRawStateAsync(); }); case DeleteField deleteField: - return UpdateAsync(deleteField, c => + return UpdateReturnAsync(deleteField, async c => { GuardSchemaField.CanDelete(Snapshot.SchemaDef, deleteField); DeleteField(c); + + return await GetRawStateAsync(); }); case LockField lockField: - return UpdateAsync(lockField, c => + return UpdateReturnAsync(lockField, async c => { GuardSchemaField.CanLock(Snapshot.SchemaDef, lockField); LockField(c); + + return await GetRawStateAsync(); }); case HideField hideField: - return UpdateAsync(hideField, c => + return UpdateReturnAsync(hideField, async c => { GuardSchemaField.CanHide(Snapshot.SchemaDef, c); HideField(c); + + return await GetRawStateAsync(); }); case ShowField showField: - return UpdateAsync(showField, c => + return UpdateReturnAsync(showField, async c => { GuardSchemaField.CanShow(Snapshot.SchemaDef, c); ShowField(c); + + return await GetRawStateAsync(); }); case DisableField disableField: - return UpdateAsync(disableField, c => + return UpdateReturnAsync(disableField, async c => { GuardSchemaField.CanDisable(Snapshot.SchemaDef, c); DisableField(c); + + return await GetRawStateAsync(); }); case EnableField enableField: - return UpdateAsync(enableField, c => + return UpdateReturnAsync(enableField, async c => { GuardSchemaField.CanEnable(Snapshot.SchemaDef, c); EnableField(c); + + return await GetRawStateAsync(); }); case UpdateField updateField: - return UpdateAsync(updateField, c => + return UpdateReturnAsync(updateField, async c => { GuardSchemaField.CanUpdate(Snapshot.SchemaDef, c); UpdateField(c); + + return await GetRawStateAsync(); }); case ReorderFields reorderFields: - return UpdateAsync(reorderFields, c => + return UpdateReturnAsync(reorderFields, async c => { GuardSchema.CanReorder(Snapshot.SchemaDef, c); Reorder(c); + + return await GetRawStateAsync(); }); case UpdateSchema updateSchema: - return UpdateAsync(updateSchema, c => + return UpdateReturnAsync(updateSchema, async c => { GuardSchema.CanUpdate(Snapshot.SchemaDef, c); Update(c); + + return await GetRawStateAsync(); }); case PublishSchema publishSchema: - return UpdateAsync(publishSchema, c => + return UpdateReturnAsync(publishSchema, async c => { GuardSchema.CanPublish(Snapshot.SchemaDef, c); Publish(c); + + return await GetRawStateAsync(); }); case UnpublishSchema unpublishSchema: - return UpdateAsync(unpublishSchema, c => + return UpdateReturnAsync(unpublishSchema, async c => { GuardSchema.CanUnpublish(Snapshot.SchemaDef, c); Unpublish(c); + + return await GetRawStateAsync(); }); case ConfigureScripts configureScripts: - return UpdateAsync(configureScripts, c => + return UpdateReturnAsync(configureScripts, async c => { GuardSchema.CanConfigureScripts(Snapshot.SchemaDef, c); ConfigureScripts(c); + + return await GetRawStateAsync(); }); case ChangeCategory changeCategory: - return UpdateAsync(changeCategory, c => + return UpdateReturnAsync(changeCategory, async c => { GuardSchema.CanChangeCategory(Snapshot.SchemaDef, c); ChangeCategory(c); + + return await GetRawStateAsync(); }); case ConfigurePreviewUrls configurePreviewUrls: - return UpdateAsync(configurePreviewUrls, c => + return UpdateReturnAsync(configurePreviewUrls, async c => { GuardSchema.CanConfigurePreviewUrls(c); ConfigurePreviewUrls(c); + + return await GetRawStateAsync(); }); case DeleteSchema deleteSchema: @@ -381,6 +413,11 @@ namespace Squidex.Domain.Apps.Entities.Schemas } } + public Task GetRawStateAsync() + { + return Task.FromResult(Snapshot); + } + public Task> GetStateAsync() { return J.AsTask(Snapshot); diff --git a/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs b/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs index 08763e341..c88246a85 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs @@ -109,10 +109,10 @@ namespace Squidex.Areas.Api.Controllers.Assets if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) { - Response.Headers["Surrogate-Key"] = response.Items.ToSurrogateKeys(); + Response.Headers["Surrogate-Key"] = response.ToSurrogateKeys(); } - Response.Headers[HeaderNames.ETag] = response.Items.ToManyEtag(response.Total); + Response.Headers[HeaderNames.ETag] = response.ToEtag(); return Ok(response); } diff --git a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs index 4463dbfd7..b7f9a3b05 100644 --- a/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Assets/Models/AssetsDto.cs @@ -27,6 +27,16 @@ namespace Squidex.Areas.Api.Controllers.Assets.Models /// public long Total { get; set; } + public string ToEtag() + { + return Items.ToManyEtag(Total); + } + + public string ToSurrogateKeys() + { + return Items.ToSurrogateKeys(); + } + public static AssetsDto FromAssets(IResultList assets, ApiController controller, string app) { var response = new AssetsDto diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs index 7ba607666..66264dcb4 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs @@ -6,7 +6,6 @@ // ========================================================================== using System; -using System.Linq; using System.Threading.Tasks; using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; @@ -132,10 +131,10 @@ namespace Squidex.Areas.Api.Controllers.Contents if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) { - Response.Headers["Surrogate-Key"] = response.Items.ToSurrogateKeys(); + Response.Headers["Surrogate-Key"] = response.ToSurrogateKeys(); } - Response.Headers[HeaderNames.ETag] = response.Items.ToManyEtag(); + Response.Headers[HeaderNames.ETag] = response.ToEtag(); return Ok(response); } @@ -168,10 +167,10 @@ namespace Squidex.Areas.Api.Controllers.Contents if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) { - Response.Headers["Surrogate-Key"] = response.Items.ToSurrogateKeys(); + Response.Headers["Surrogate-Key"] = response.ToSurrogateKeys(); } - Response.Headers[HeaderNames.ETag] = response.Items.ToManyEtag(response.Total); + Response.Headers[HeaderNames.ETag] = response.ToEtag(); return Ok(response); } diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs index ef185416d..edcb6caa8 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs @@ -26,6 +26,16 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models /// public ContentDto[] Items { get; set; } + public string ToEtag() + { + return Items.ToManyEtag(Total); + } + + public string ToSurrogateKeys() + { + return Items.ToSurrogateKeys(); + } + public static ContentsDto FromContents(IList contents, QueryContext context, ApiController controller, string app) { var result = new ContentsDto diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDetailsDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDetailsDto.cs index 41494e0c1..b71e85280 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDetailsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDetailsDto.cs @@ -37,19 +37,19 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models public static SchemaDetailsDto FromSchemaWithDetails(ISchemaEntity schema, ApiController controller, string app) { - var response = new SchemaDetailsDto(); + var result = new SchemaDetailsDto(); - SimpleMapper.Map(schema, response); - SimpleMapper.Map(schema.SchemaDef, response); - SimpleMapper.Map(schema.SchemaDef.Scripts, response.Scripts); - SimpleMapper.Map(schema.SchemaDef.Properties, response.Properties); + SimpleMapper.Map(schema, result); + SimpleMapper.Map(schema.SchemaDef, result); + SimpleMapper.Map(schema.SchemaDef.Scripts, result.Scripts); + SimpleMapper.Map(schema.SchemaDef.Properties, result.Properties); if (schema.SchemaDef.PreviewUrls.Count > 0) { - response.PreviewUrls = new Dictionary(schema.SchemaDef.PreviewUrls); + result.PreviewUrls = new Dictionary(schema.SchemaDef.PreviewUrls); } - response.Fields = new List(); + result.Fields = new List(); foreach (var field in schema.SchemaDef.Fields) { @@ -82,10 +82,10 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models } } - response.Fields.Add(fieldDto); + result.Fields.Add(fieldDto); } - return CreateLinks(response, controller, app); + return (SchemaDetailsDto)result.CreateLinks(controller, app); } } } diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDto.cs index 4bb86680f..7ae0addad 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemaDto.cs @@ -40,7 +40,7 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models /// The schema properties. /// [Required] - public SchemaPropertiesDto Properties { get; set; } + public SchemaPropertiesDto Properties { get; set; } = new SchemaPropertiesDto(); /// /// Indicates if the schema is a singleton. @@ -81,27 +81,27 @@ namespace Squidex.Areas.Api.Controllers.Schemas.Models public static SchemaDto FromSchema(ISchemaEntity schema, ApiController controller, string app) { - var response = new SchemaDto { Properties = new SchemaPropertiesDto() }; + var result = new SchemaDto(); - SimpleMapper.Map(schema, response); - SimpleMapper.Map(schema.SchemaDef, response); - SimpleMapper.Map(schema.SchemaDef.Properties, response.Properties); + SimpleMapper.Map(schema, result); + SimpleMapper.Map(schema.SchemaDef, result); + SimpleMapper.Map(schema.SchemaDef.Properties, result.Properties); - return CreateLinks(response, controller, app); + return result.CreateLinks(controller, app); } - protected static T CreateLinks(T response, ApiController controller, string app) where T : SchemaDto + protected virtual SchemaDto CreateLinks(ApiController controller, string app) { - var values = new { app, name = response.Name }; + var values = new { app, name = Name }; - response.AddSelfLink(controller.Url(x => nameof(x.GetSchema), values)); + AddSelfLink(controller.Url(x => nameof(x.GetSchema), values)); - if (controller.HasPermission(Permissions.AppContentsRead, app, response.Name)) + if (controller.HasPermission(Permissions.AppContentsRead, app, Name)) { - response.AddGetLink("contents", controller.Url(x => nameof(x.GetContents), values)); + AddGetLink("contents", controller.Url(x => nameof(x.GetContents), values)); } - return response; + return this; } } } diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemasDto.cs b/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemasDto.cs new file mode 100644 index 000000000..8fb9755fa --- /dev/null +++ b/src/Squidex/Areas/Api/Controllers/Schemas/Models/SchemasDto.cs @@ -0,0 +1,43 @@ +// ========================================================================== +// Squidex Headless CMS +// ========================================================================== +// Copyright (c) Squidex UG (haftungsbeschraenkt) +// All rights reserved. Licensed under the MIT license. +// ========================================================================== + +using System.Collections.Generic; +using System.Linq; +using Squidex.Domain.Apps.Entities.Schemas; +using Squidex.Infrastructure; +using Squidex.Web; + +namespace Squidex.Areas.Api.Controllers.Schemas.Models +{ + public sealed class SchemasDto : Resource + { + /// + /// The schemas. + /// + public SchemaDto[] Items { get; set; } + + public string ToEtag() + { + return Items.ToManyEtag(); + } + + public static SchemasDto FromSchemas(IList schemas, ApiController controller, string app) + { + var result = new SchemasDto + { + Items = schemas.Select(x => SchemaDto.FromSchema(x, controller, app)).ToArray() + }; + + return result.CreateLinks(controller, app); + } + + private SchemasDto CreateLinks(ApiController controller, string app) + { + return this; + } + } +} diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/SchemaFieldsController.cs b/src/Squidex/Areas/Api/Controllers/Schemas/SchemaFieldsController.cs index 7a5b1ca80..1ccb87745 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/SchemaFieldsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/SchemaFieldsController.cs @@ -541,8 +541,8 @@ namespace Squidex.Areas.Api.Controllers.Schemas { var context = await CommandBus.PublishAsync(command); - var response = context.Result(); - var response = SchemaDetailsDto.FromSchemaWithDetails(response, this, app); + var result = context.Result(); + var response = SchemaDetailsDto.FromSchemaWithDetails(result, this, app); return response; } diff --git a/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs b/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs index e13e82131..854b24f57 100644 --- a/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs +++ b/src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs @@ -44,16 +44,16 @@ namespace Squidex.Areas.Api.Controllers.Schemas /// [HttpGet] [Route("apps/{app}/schemas/")] - [ProducesResponseType(typeof(SchemaDto[]), 200)] + [ProducesResponseType(typeof(SchemasDto), 200)] [ApiPermission(Permissions.AppCommon)] [ApiCosts(0)] public async Task GetSchemas(string app) { var schemas = await appProvider.GetSchemasAsync(AppId); - var response = schemas.ToArray(x => SchemaDto.FromSchema(x, this, app)); + var response = SchemasDto.FromSchemas(schemas, this, app); - Response.Headers[HeaderNames.ETag] = response.ToManyEtag(); + Response.Headers[HeaderNames.ETag] = response.ToEtag(); return Ok(response); } diff --git a/src/Squidex/app/features/schemas/pages/schema/field.component.html b/src/Squidex/app/features/schemas/pages/schema/field.component.html index 2fee24efa..1858af5e6 100644 --- a/src/Squidex/app/features/schemas/pages/schema/field.component.html +++ b/src/Squidex/app/features/schemas/pages/schema/field.component.html @@ -20,7 +20,7 @@
-
+
-
+
- +
@@ -49,10 +49,13 @@ import {
` }) -export class FieldFormComponent { +export class FieldFormComponent implements AfterViewInit { @Input() public showButtons: boolean; + @Input() + public isEditable: boolean; + @Input() public editForm: FormGroup; @@ -70,6 +73,12 @@ export class FieldFormComponent { public selectedTab = 0; + public ngAfterViewInit() { + if (!this.isEditable) { + this.editForm.disable(); + } + } + public selectTab(tab: number) { this.selectedTab = tab; } diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.html b/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.html index 4fda1eae7..494aad805 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.html +++ b/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.html @@ -30,7 +30,7 @@ - + \ No newline at end of file diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.ts b/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.ts index 15148f23f..596fcc44f 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.ts +++ b/src/Squidex/app/features/schemas/pages/schema/schema-edit-form.component.ts @@ -10,6 +10,7 @@ import { FormBuilder } from '@angular/forms'; import { EditSchemaForm, + hasAnyLink, SchemaDetailsDto, SchemasState } from '@app/shared'; @@ -28,6 +29,8 @@ export class SchemaEditFormComponent implements OnInit { public editForm = new EditSchemaForm(this.formBuilder); + public isEditable = false; + constructor( private readonly formBuilder: FormBuilder, private readonly schemasState: SchemasState @@ -35,7 +38,13 @@ export class SchemaEditFormComponent implements OnInit { } public ngOnInit() { + this.isEditable = hasAnyLink(this.schema, 'update'); + this.editForm.load(this.schema.properties); + + if (!this.isEditable) { + this.editForm.form.disable(); + } } public emitComplete() { @@ -43,6 +52,10 @@ export class SchemaEditFormComponent implements OnInit { } public saveSchema() { + if (!this.isEditable) { + return; + } + const value = this.editForm.submit(); if (value) { diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-page.component.html b/src/Squidex/app/features/schemas/pages/schema/schema-page.component.html index 69ccaa9fc..3fe3ea41b 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-page.component.html +++ b/src/Squidex/app/features/schemas/pages/schema/schema-page.component.html @@ -11,10 +11,10 @@
- -
@@ -37,14 +37,16 @@ Clone
- - - - Delete - + + + + + Delete + +
@@ -61,13 +63,14 @@
No field created yet. -
@@ -75,7 +78,7 @@
-
diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.html b/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.html index cbf504ee0..f73a4c78d 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.html +++ b/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.html @@ -29,6 +29,7 @@
-
+
@@ -65,7 +66,7 @@ - + diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.ts b/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.ts index 72a59074e..dea644b4d 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.ts +++ b/src/Squidex/app/features/schemas/pages/schema/schema-preview-urls-form.component.ts @@ -11,6 +11,7 @@ import { FormBuilder } from '@angular/forms'; import { AddPreviewUrlForm, ConfigurePreviewUrlsForm, + hasAnyLink, SchemaDetailsDto, SchemasState } from '@app/shared'; @@ -31,6 +32,8 @@ export class SchemaPreviewUrlsFormComponent implements OnInit { public editForm = new ConfigurePreviewUrlsForm(this.formBuilder); + public isEditable = false; + constructor( private readonly formBuilder: FormBuilder, private readonly schemasState: SchemasState @@ -38,7 +41,13 @@ export class SchemaPreviewUrlsFormComponent implements OnInit { } public ngOnInit() { + this.isEditable = hasAnyLink(this.schema, 'update'); + this.editForm.load(this.schema.previewUrls); + + if (!this.isEditable) { + return; + } } public emitComplete() { @@ -50,6 +59,10 @@ export class SchemaPreviewUrlsFormComponent implements OnInit { } public add() { + if (!this.isEditable) { + return; + } + const value = this.addForm.submit(); if (value) { @@ -60,6 +73,10 @@ export class SchemaPreviewUrlsFormComponent implements OnInit { } public saveSchema() { + if (!this.isEditable) { + return; + } + const value = this.editForm.submit(); if (value) { diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.html b/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.html index d148e5ae3..b886f8a7a 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.html +++ b/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.html @@ -24,7 +24,7 @@ - + diff --git a/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.ts b/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.ts index 25ea72bf5..ceda622ca 100644 --- a/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.ts +++ b/src/Squidex/app/features/schemas/pages/schema/schema-scripts-form.component.ts @@ -10,6 +10,7 @@ import { FormBuilder } from '@angular/forms'; import { EditScriptsForm, + hasAnyLink, SchemaDetailsDto, SchemasState } from '@app/shared'; @@ -30,6 +31,8 @@ export class SchemaScriptsFormComponent implements OnInit { public editForm = new EditScriptsForm(this.formBuilder); + public isEditable = false; + constructor( private readonly formBuilder: FormBuilder, private readonly schemasState: SchemasState @@ -37,7 +40,13 @@ export class SchemaScriptsFormComponent implements OnInit { } public ngOnInit() { + this.isEditable = hasAnyLink(this.schema, 'update'); + this.editForm.load(this.schema.scripts); + + if (!this.isEditable) { + this.editForm.form.disable(); + } } public emitComplete() { @@ -49,6 +58,10 @@ export class SchemaScriptsFormComponent implements OnInit { } public saveSchema() { + if (!this.isEditable) { + return; + } + const value = this.editForm.submit(); if (value) { diff --git a/src/Squidex/app/shared/services/backups.service.ts b/src/Squidex/app/shared/services/backups.service.ts index 8cd9286aa..43bac297d 100644 --- a/src/Squidex/app/shared/services/backups.service.ts +++ b/src/Squidex/app/shared/services/backups.service.ts @@ -14,7 +14,6 @@ import { AnalyticsService, ApiUrlConfig, DateTime, - Model, pretifyError, Resource, ResourceLinks, @@ -41,7 +40,7 @@ export class BackupDto { } } -export class RestoreDto extends Model { +export class RestoreDto { constructor( public readonly url: string, public readonly started: DateTime, @@ -49,7 +48,6 @@ export class RestoreDto extends Model { public readonly status: string, public readonly log: string[] ) { - super(); } } diff --git a/src/Squidex/app/shared/services/plans.service.ts b/src/Squidex/app/shared/services/plans.service.ts index 4c34a7110..31e1ace9a 100644 --- a/src/Squidex/app/shared/services/plans.service.ts +++ b/src/Squidex/app/shared/services/plans.service.ts @@ -15,7 +15,6 @@ import { ApiUrlConfig, HTTP, mapVersioned, - Model, pretifyError, Version, Versioned @@ -28,7 +27,7 @@ export type PlansDto = Versioned<{ readonly plans: PlanDto[] }>; -export class PlanDto extends Model { +export class PlanDto { constructor( public readonly id: string, public readonly name: string, @@ -39,7 +38,6 @@ export class PlanDto extends Model { public readonly maxAssetSize: number, public readonly maxContributors: number ) { - super(); } }