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 @@
+ + +
+