From 371f101b3b992cda3562f8bcb261e024eda28cfb Mon Sep 17 00:00:00 2001 From: Sebastian Stehle Date: Mon, 17 Jun 2019 22:40:02 +0200 Subject: [PATCH] Status queries and duplicate code removed. --- .../Contents/ContentsController.cs | 4 +- .../Contents/Models/ContentsDto.cs | 26 ++--- .../state/event-consumers.state.ts | 8 +- .../administration/state/users.state.ts | 19 ++-- .../contents-filters-page.component.html | 12 +++ .../contents-filters-page.component.ts | 2 +- .../contents/contents-page.component.html | 2 +- src/Squidex/app/framework/state.ts | 19 +++- .../app/framework/utils/immutable-array.ts | 96 +++++++++---------- .../shared/services/app-languages.service.ts | 6 +- .../app/shared/services/clients.service.ts | 6 +- .../shared/services/contents.service.spec.ts | 6 +- .../app/shared/services/contents.service.ts | 23 ++++- .../shared/services/contributors.service.ts | 6 +- .../app/shared/services/patterns.service.ts | 6 +- .../app/shared/services/roles.service.ts | 6 +- .../app/shared/services/schemas.service.ts | 6 +- src/Squidex/app/shared/state/apps.state.ts | 10 +- .../app/shared/state/asset-uploader.state.ts | 5 +- src/Squidex/app/shared/state/assets.state.ts | 36 ++----- src/Squidex/app/shared/state/backups.state.ts | 18 ++-- src/Squidex/app/shared/state/clients.state.ts | 17 ++-- .../app/shared/state/comments.state.ts | 8 +- .../app/shared/state/contents.state.ts | 52 ++++++---- .../shared/state/contributors.state.spec.ts | 1 - .../app/shared/state/contributors.state.ts | 28 ++---- src/Squidex/app/shared/state/filter.state.ts | 16 ++-- .../app/shared/state/languages.state.ts | 23 ++--- .../app/shared/state/patterns.state.ts | 17 ++-- src/Squidex/app/shared/state/plans.state.ts | 17 ++-- src/Squidex/app/shared/state/roles.state.ts | 17 ++-- .../app/shared/state/rule-events.state.ts | 11 +-- src/Squidex/app/shared/state/rules.state.ts | 18 ++-- src/Squidex/app/shared/state/schemas.state.ts | 45 +++++---- src/Squidex/app/shared/state/ui.state.ts | 15 +-- 35 files changed, 288 insertions(+), 319 deletions(-) diff --git a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs index d086da45b..675833005 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs @@ -124,7 +124,7 @@ namespace Squidex.Areas.Api.Controllers.Contents var context = Context(); var contents = await contentQuery.QueryAsync(context, Q.Empty.WithIds(ids).Ids); - var response = ContentsDto.FromContents(contents, context, this, app, null); + var response = ContentsDto.FromContents(contents.Count, contents, context, this, app, null); if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys) { @@ -159,7 +159,7 @@ namespace Squidex.Areas.Api.Controllers.Contents var context = Context(); var contents = await contentQuery.QueryAsync(context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString())); - var response = ContentsDto.FromContents(contents, context, this, app, name); + var response = ContentsDto.FromContents(contents.Total, contents, context, this, app, name); if (ShouldProvideSurrogateKeys(response)) { diff --git a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs index 50c30d51e..9f664880e 100644 --- a/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs +++ b/src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs @@ -30,6 +30,12 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models [Required] public ContentDto[] Items { get; set; } + /// + /// The possible statuses. + /// + [Required] + public string[] Statuses { get; set; } + public string ToEtag() { return Items.ToManyEtag(Total); @@ -40,24 +46,18 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models return Items.ToSurrogateKeys(); } - public static ContentsDto FromContents(IList contents, QueryContext context, ApiController controller, string app, string schema) + public static ContentsDto FromContents(long total, IEnumerable contents, QueryContext context, + ApiController controller, + string app, + string schema) { var result = new ContentsDto { - Total = contents.Count, - Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray() + Total = total, + Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray(), }; - return result.CreateLinks(controller, app, schema); - } - - public static ContentsDto FromContents(IResultList contents, QueryContext context, ApiController controller, string app, string schema) - { - var result = new ContentsDto - { - Total = contents.Total, - Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray() - }; + result.Statuses = new string[] { "Archived", "Draft", "Published" }; return result.CreateLinks(controller, app, schema); } diff --git a/src/Squidex/app/features/administration/state/event-consumers.state.ts b/src/Squidex/app/features/administration/state/event-consumers.state.ts index 278578beb..671adbbdc 100644 --- a/src/Squidex/app/features/administration/state/event-consumers.state.ts +++ b/src/Squidex/app/features/administration/state/event-consumers.state.ts @@ -7,7 +7,7 @@ import { Injectable } from '@angular/core'; import { Observable } from 'rxjs'; -import { distinctUntilChanged, map, tap } from 'rxjs/operators'; +import { tap } from 'rxjs/operators'; import { DialogService, @@ -31,12 +31,10 @@ type EventConsumersList = ImmutableArray; @Injectable() export class EventConsumersState extends State { public eventConsumers = - this.changes.pipe(map(x => x.eventConsumers), - distinctUntilChanged()); + this.project(x => x.eventConsumers); public isLoaded = - this.changes.pipe(map(x => !!x.isLoaded), - distinctUntilChanged()); + this.project(x => !!x.isLoaded); constructor( private readonly dialogs: DialogService, diff --git a/src/Squidex/app/features/administration/state/users.state.ts b/src/Squidex/app/features/administration/state/users.state.ts index 4e3fda2cb..fdaf13365 100644 --- a/src/Squidex/app/features/administration/state/users.state.ts +++ b/src/Squidex/app/features/administration/state/users.state.ts @@ -7,7 +7,7 @@ import { Injectable } from '@angular/core'; import { Observable, of } from 'rxjs'; -import { catchError, distinctUntilChanged, map, tap } from 'rxjs/operators'; +import { catchError, tap } from 'rxjs/operators'; import '@app/framework/utils/rxjs-extensions'; @@ -56,24 +56,19 @@ export type UsersResult = { total: number, users: UsersList }; @Injectable() export class UsersState extends State { public users = - this.changes.pipe(map(x => x.users), - distinctUntilChanged()); + this.project(x => x.users); public usersPager = - this.changes.pipe(map(x => x.usersPager), - distinctUntilChanged()); + this.project(x => x.usersPager); public selectedUser = - this.changes.pipe(map(x => x.selectedUser), - distinctUntilChanged()); + this.project(x => x.selectedUser); public isLoaded = - this.changes.pipe(map(x => !!x.isLoaded), - distinctUntilChanged()); + this.project(x => !!x.isLoaded); public canCreate = - this.changes.pipe(map(x => !!x.canCreate), - distinctUntilChanged()); + this.project(x => !!x.canCreate); constructor( private readonly dialogs: DialogService, @@ -119,7 +114,7 @@ export class UsersState extends State { this.snapshot.usersPager.pageSize, this.snapshot.usersPager.skip, this.snapshot.usersQuery).pipe( - tap(({ total, items, _links, canCreate }) => { + tap(({ total, items, canCreate, _links }) => { if (isReload) { this.dialogs.notifyInfo('Users reloaded.'); } diff --git a/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html b/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html index 224f33408..b11d154e4 100644 --- a/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html +++ b/src/Squidex/app/features/content/pages/contents/contents-filters-page.component.html @@ -11,6 +11,18 @@
+ + +
+