Browse Source

Entities renamed.

pull/364/head
Sebastian Stehle 7 years ago
parent
commit
f65b73ca33
  1. 4
      src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs
  2. 34
      src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs
  3. 10
      src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs
  4. 16
      src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs
  5. 9
      src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs
  6. 16
      src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs
  7. 4
      src/Squidex/Areas/Api/Controllers/History/HistoryController.cs
  8. 4
      src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs
  9. 12
      src/Squidex/Areas/Api/Controllers/Rules/RulesController.cs
  10. 12
      src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs
  11. 8
      src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs
  12. 22
      src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs
  13. 4
      src/Squidex/Areas/Api/Controllers/Users/UsersController.cs
  14. 9
      src/Squidex/app/features/administration/state/users.state.ts
  15. 3
      src/Squidex/app/features/content/pages/contents/contents-page.component.html
  16. 4
      src/Squidex/app/features/content/pages/contents/contents-page.component.ts
  17. 6
      src/Squidex/app/features/content/shared/contents-selector.component.html
  18. 4
      src/Squidex/app/features/content/shared/contents-selector.component.ts
  19. 9
      src/Squidex/app/shared/components/search-form.component.html
  20. 9
      src/Squidex/app/shared/components/search-form.component.ts
  21. 6
      src/Squidex/app/shared/services/contents.service.spec.ts
  22. 23
      src/Squidex/app/shared/services/contents.service.ts
  23. 41
      src/Squidex/app/shared/state/contents.state.ts

4
src/Squidex/Areas/Api/Controllers/Apps/AppsController.cs

@ -60,9 +60,9 @@ namespace Squidex.Areas.Api.Controllers.Apps
var userOrClientId = HttpContext.User.UserOrClientId();
var userPermissions = HttpContext.Permissions();
var entities = await appProvider.GetUserApps(userOrClientId, userPermissions);
var apps = await appProvider.GetUserApps(userOrClientId, userPermissions);
var response = entities.ToArray(a => AppDto.FromApp(a, userOrClientId, userPermissions, appPlansProvider, this));
var response = apps.ToArray(a => AppDto.FromApp(a, userOrClientId, userPermissions, appPlansProvider, this));
Response.Headers[HeaderNames.ETag] = response.ToManyEtag();

34
src/Squidex/Areas/Api/Controllers/Assets/AssetContentController.cs

@ -74,18 +74,18 @@ namespace Squidex.Areas.Api.Controllers.Assets
[FromQuery] int? quality = null,
[FromQuery] string mode = null)
{
IAssetEntity entity;
IAssetEntity asset;
if (Guid.TryParse(idOrSlug, out var guid))
{
entity = await assetRepository.FindAssetAsync(guid);
asset = await assetRepository.FindAssetAsync(guid);
}
else
{
entity = await assetRepository.FindAssetBySlugAsync(App.Id, idOrSlug);
asset = await assetRepository.FindAssetBySlugAsync(App.Id, idOrSlug);
}
return DeliverAsset(entity, version, width, height, quality, mode, dl);
return DeliverAsset(asset, version, width, height, quality, mode, dl);
}
/// <summary>
@ -115,25 +115,25 @@ namespace Squidex.Areas.Api.Controllers.Assets
[FromQuery] int? quality = null,
[FromQuery] string mode = null)
{
var entity = await assetRepository.FindAssetAsync(id);
var asset = await assetRepository.FindAssetAsync(id);
return DeliverAsset(entity, version, width, height, quality, mode, dl);
return DeliverAsset(asset, version, width, height, quality, mode, dl);
}
private IActionResult DeliverAsset(IAssetEntity entity, long version, int? width, int? height, int? quality, string mode, int download = 1)
private IActionResult DeliverAsset(IAssetEntity asset, long version, int? width, int? height, int? quality, string mode, int download = 1)
{
if (entity == null || entity.FileVersion < version || width == 0 || height == 0 || quality == 0)
if (asset == null || asset.FileVersion < version || width == 0 || height == 0 || quality == 0)
{
return NotFound();
}
Response.Headers[HeaderNames.ETag] = entity.FileVersion.ToString();
Response.Headers[HeaderNames.ETag] = asset.FileVersion.ToString();
var handler = new Func<Stream, Task>(async bodyStream =>
{
var assetId = entity.Id.ToString();
var assetId = asset.Id.ToString();
if (entity.IsImage && (width.HasValue || height.HasValue || quality.HasValue))
if (asset.IsImage && (width.HasValue || height.HasValue || quality.HasValue))
{
var assetSuffix = $"{width}_{height}_{mode}";
@ -144,7 +144,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
try
{
await assetStore.DownloadAsync(assetId, entity.FileVersion, assetSuffix, bodyStream);
await assetStore.DownloadAsync(assetId, asset.FileVersion, assetSuffix, bodyStream);
}
catch (AssetNotFoundException)
{
@ -156,7 +156,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
{
using (Profiler.Trace("ResizeDownload"))
{
await assetStore.DownloadAsync(assetId, entity.FileVersion, null, sourceStream);
await assetStore.DownloadAsync(assetId, asset.FileVersion, null, sourceStream);
sourceStream.Position = 0;
}
@ -168,7 +168,7 @@ namespace Squidex.Areas.Api.Controllers.Assets
using (Profiler.Trace("ResizeUpload"))
{
await assetStore.UploadAsync(assetId, entity.FileVersion, assetSuffix, destinationStream);
await assetStore.UploadAsync(assetId, asset.FileVersion, assetSuffix, destinationStream);
destinationStream.Position = 0;
}
@ -180,17 +180,17 @@ namespace Squidex.Areas.Api.Controllers.Assets
}
else
{
await assetStore.DownloadAsync(assetId, entity.FileVersion, null, bodyStream);
await assetStore.DownloadAsync(assetId, asset.FileVersion, null, bodyStream);
}
});
if (download == 1)
{
return new FileCallbackResult(entity.MimeType, entity.FileName, true, handler);
return new FileCallbackResult(asset.MimeType, asset.FileName, true, handler);
}
else
{
return new FileCallbackResult(entity.MimeType, null, true, handler);
return new FileCallbackResult(asset.MimeType, null, true, handler);
}
}

10
src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs

@ -135,21 +135,21 @@ namespace Squidex.Areas.Api.Controllers.Assets
{
var context = Context();
var entity = await assetQuery.FindAssetAsync(context, id);
var asset = await assetQuery.FindAssetAsync(context, id);
if (entity == null)
if (asset == null)
{
return NotFound();
}
var response = AssetDto.FromAsset(entity, this, app);
var response = AssetDto.FromAsset(asset, this, app);
if (controllerOptions.Value.EnableSurrogateKeys)
{
Response.Headers["Surrogate-Key"] = entity.Id.ToString();
Response.Headers["Surrogate-Key"] = asset.Id.ToString();
}
Response.Headers[HeaderNames.ETag] = entity.Version.ToString();
Response.Headers[HeaderNames.ETag] = asset.Version.ToString();
return Ok(response);
}

16
src/Squidex/Areas/Api/Controllers/Contents/ContentsController.cs

@ -107,7 +107,6 @@ namespace Squidex.Areas.Api.Controllers.Contents
/// </summary>
/// <param name="app">The name of the app.</param>
/// <param name="ids">The optional ids of the content to fetch.</param>
/// <param name="status">The requested status, only for frontend client.</param>
/// <returns>
/// 200 => Contents retrieved.
/// 404 => App not found.
@ -120,13 +119,12 @@ namespace Squidex.Areas.Api.Controllers.Contents
[ProducesResponseType(typeof(ContentsDto), 200)]
[ApiPermission]
[ApiCosts(1)]
public async Task<IActionResult> GetAllContents(string app, [FromQuery] string ids, [FromQuery] string[] status = null)
public async Task<IActionResult> GetAllContents(string app, [FromQuery] string ids)
{
var context = Context();
var contents = await contentQuery.QueryAsync(context, Q.Empty.WithIds(ids).Ids);
var result = await contentQuery.QueryAsync(context, Q.Empty.WithIds(ids).Ids);
var response = ContentsDto.FromContents(result, context, this, app, null);
var response = ContentsDto.FromContents(contents, context, this, app, null);
if (controllerOptions.Value.EnableSurrogateKeys && response.Items.Length <= controllerOptions.Value.MaxItemsForSurrogateKeys)
{
@ -144,7 +142,6 @@ namespace Squidex.Areas.Api.Controllers.Contents
/// <param name="app">The name of the app.</param>
/// <param name="name">The name of the schema.</param>
/// <param name="ids">The optional ids of the content to fetch.</param>
/// <param name="status">The requested status, only for frontend client.</param>
/// <returns>
/// 200 => Contents retrieved.
/// 404 => Schema or app not found.
@ -157,13 +154,12 @@ namespace Squidex.Areas.Api.Controllers.Contents
[ProducesResponseType(typeof(ContentsDto), 200)]
[ApiPermission]
[ApiCosts(1)]
public async Task<IActionResult> GetContents(string app, string name, [FromQuery] string ids = null, [FromQuery] string[] status = null)
public async Task<IActionResult> GetContents(string app, string name, [FromQuery] string ids = null)
{
var context = Context();
var contents = await contentQuery.QueryAsync(context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString()));
var result = await contentQuery.QueryAsync(context, name, Q.Empty.WithIds(ids).WithODataQuery(Request.QueryString.ToString()));
var response = ContentsDto.FromContents(result, context, this, app, name);
var response = ContentsDto.FromContents(contents, context, this, app, name);
if (ShouldProvideSurrogateKeys(response))
{

9
src/Squidex/Areas/Api/Controllers/Contents/Models/ContentsDto.cs

@ -30,12 +30,6 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
[Required]
public ContentDto[] Items { get; set; }
/// <summary>
/// All available statuses.
/// </summary>
[Required]
public string[] Statuses { get; set; }
public string ToEtag()
{
return Items.ToManyEtag(Total);
@ -62,8 +56,7 @@ namespace Squidex.Areas.Api.Controllers.Contents.Models
var result = new ContentsDto
{
Total = contents.Total,
Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray(),
Statuses = new[] { "Published", "Draft", "Archived" }
Items = contents.Select(x => ContentDto.FromContent(x, context, controller, app, schema)).ToArray()
};
return result.CreateLinks(controller, app, schema);

16
src/Squidex/Areas/Api/Controllers/EventConsumers/EventConsumersController.cs

@ -33,9 +33,9 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
[ApiPermission(Permissions.AdminEventsRead)]
public async Task<IActionResult> GetEventConsumers()
{
var entities = await GetGrain().GetConsumersAsync();
var eventConsumers = await GetGrain().GetConsumersAsync();
var response = EventConsumersDto.FromResults(entities.Value, this);
var response = EventConsumersDto.FromResults(eventConsumers.Value, this);
return Ok(response);
}
@ -46,9 +46,9 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
[ApiPermission(Permissions.AdminEventsManage)]
public async Task<IActionResult> StartEventConsumer(string name)
{
var entity = await GetGrain().StartAsync(name);
var eventConsumer = await GetGrain().StartAsync(name);
var response = EventConsumerDto.FromEventConsumerInfo(entity.Value, this);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer.Value, this);
return Ok(response);
}
@ -59,9 +59,9 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
[ApiPermission(Permissions.AdminEventsManage)]
public async Task<IActionResult> StopEventConsumer(string name)
{
var entity = await GetGrain().StopAsync(name);
var eventConsumer = await GetGrain().StopAsync(name);
var response = EventConsumerDto.FromEventConsumerInfo(entity.Value, this);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer.Value, this);
return Ok(response);
}
@ -72,9 +72,9 @@ namespace Squidex.Areas.Api.Controllers.EventConsumers
[ApiPermission(Permissions.AdminEventsManage)]
public async Task<IActionResult> ResetEventConsumer(string name)
{
var entity = await GetGrain().ResetAsync(name);
var eventConsumer = await GetGrain().ResetAsync(name);
var response = EventConsumerDto.FromEventConsumerInfo(entity.Value, this);
var response = EventConsumerDto.FromEventConsumerInfo(eventConsumer.Value, this);
return Ok(response);
}

4
src/Squidex/Areas/Api/Controllers/History/HistoryController.cs

@ -46,9 +46,9 @@ namespace Squidex.Areas.Api.Controllers.History
[ApiCosts(0.1)]
public async Task<IActionResult> GetHistory(string app, string channel)
{
var entities = await historyService.QueryByChannelAsync(AppId, channel, 100);
var events = await historyService.QueryByChannelAsync(AppId, channel, 100);
var response = entities.ToArray(HistoryEventDto.FromHistoryEvent);
var response = events.ToArray(HistoryEventDto.FromHistoryEvent);
return Ok(response);
}

4
src/Squidex/Areas/Api/Controllers/News/Service/FeaturesService.cs

@ -43,9 +43,9 @@ namespace Squidex.Areas.Api.Controllers.News.Service
if (client != null && version < FeatureVersion)
{
var entities = await client.GetAsync(filter: $"data/version/iv gt {version}", context: Flatten);
var features = await client.GetAsync(filter: $"data/version/iv gt {version}", context: Flatten);
result.Features.AddRange(entities.Items.Select(x => x.Data));
result.Features.AddRange(features.Items.Select(x => x.Data));
}
return result;

12
src/Squidex/Areas/Api/Controllers/Rules/RulesController.cs

@ -82,9 +82,9 @@ namespace Squidex.Areas.Api.Controllers.Rules
[ApiCosts(1)]
public async Task<IActionResult> GetRules(string app)
{
var entities = await appProvider.GetRulesAsync(AppId);
var rules = await appProvider.GetRulesAsync(AppId);
var response = RulesDto.FromRules(entities, this, app);
var response = RulesDto.FromRules(rules, this, app);
Response.Headers[HeaderNames.ETag] = response.GenerateEtag();
@ -253,9 +253,9 @@ namespace Squidex.Areas.Api.Controllers.Rules
[ApiCosts(0)]
public async Task<IActionResult> PutEvent(string app, Guid id)
{
var entity = await ruleEventsRepository.FindAsync(id);
var ruleEvent = await ruleEventsRepository.FindAsync(id);
if (entity == null)
if (ruleEvent == null)
{
return NotFound();
}
@ -280,9 +280,9 @@ namespace Squidex.Areas.Api.Controllers.Rules
[ApiCosts(0)]
public async Task<IActionResult> DeleteEvent(string app, Guid id)
{
var entity = await ruleEventsRepository.FindAsync(id);
var ruleEvent = await ruleEventsRepository.FindAsync(id);
if (entity == null)
if (ruleEvent == null)
{
return NotFound();
}

12
src/Squidex/Areas/Api/Controllers/Schemas/SchemasController.cs

@ -73,25 +73,25 @@ namespace Squidex.Areas.Api.Controllers.Schemas
[ApiCosts(0)]
public async Task<IActionResult> GetSchema(string app, string name)
{
ISchemaEntity entity;
ISchemaEntity schema;
if (Guid.TryParse(name, out var id))
{
entity = await appProvider.GetSchemaAsync(AppId, id);
schema = await appProvider.GetSchemaAsync(AppId, id);
}
else
{
entity = await appProvider.GetSchemaAsync(AppId, name);
schema = await appProvider.GetSchemaAsync(AppId, name);
}
if (entity == null || entity.IsDeleted)
if (schema == null || schema.IsDeleted)
{
return NotFound();
}
var response = SchemaDetailsDto.FromSchemaWithDetails(entity, this, app);
var response = SchemaDetailsDto.FromSchemaWithDetails(schema, this, app);
Response.Headers[HeaderNames.ETag] = entity.Version.ToString();
Response.Headers[HeaderNames.ETag] = schema.Version.ToString();
return Ok(response);
}

8
src/Squidex/Areas/Api/Controllers/Statistics/UsagesController.cs

@ -127,9 +127,9 @@ namespace Squidex.Areas.Api.Controllers.Statistics
return BadRequest();
}
var entities = await usageTracker.QueryAsync(AppId.ToString(), fromDate.Date, toDate.Date);
var usages = await usageTracker.QueryAsync(AppId.ToString(), fromDate.Date, toDate.Date);
var response = entities.ToDictionary(x => x.Key, x => x.Value.Select(CallsUsageDto.FromUsage).ToArray());
var response = usages.ToDictionary(x => x.Key, x => x.Value.Select(CallsUsageDto.FromUsage).ToArray());
return Ok(response);
}
@ -181,9 +181,9 @@ namespace Squidex.Areas.Api.Controllers.Statistics
return BadRequest();
}
var entities = await assetStatsRepository.QueryAsync(AppId, fromDate.Date, toDate.Date);
var usages = await assetStatsRepository.QueryAsync(AppId, fromDate.Date, toDate.Date);
var models = entities.Select(StorageUsageDto.FromStats).ToArray();
var models = usages.Select(StorageUsageDto.FromStats).ToArray();
return Ok(models);
}

22
src/Squidex/Areas/Api/Controllers/Users/UserManagementController.cs

@ -52,14 +52,14 @@ namespace Squidex.Areas.Api.Controllers.Users
[ApiPermission(Permissions.AdminUsersRead)]
public async Task<IActionResult> GetUser(string id)
{
var entity = await userManager.FindByIdWithClaimsAsync(id);
var user = await userManager.FindByIdWithClaimsAsync(id);
if (entity == null)
if (user == null)
{
return NotFound();
}
var response = UserDto.FromUser(entity, this);
var response = UserDto.FromUser(user, this);
return Ok(response);
}
@ -70,9 +70,9 @@ namespace Squidex.Areas.Api.Controllers.Users
[ApiPermission(Permissions.AdminUsersCreate)]
public async Task<IActionResult> PostUser([FromBody] CreateUserDto request)
{
var entity = await userManager.CreateAsync(userFactory, request.ToValues());
var user = await userManager.CreateAsync(userFactory, request.ToValues());
var response = UserDto.FromUser(entity, this);
var response = UserDto.FromUser(user, this);
return Ok(response);
}
@ -83,9 +83,9 @@ namespace Squidex.Areas.Api.Controllers.Users
[ApiPermission(Permissions.AdminUsersUpdate)]
public async Task<IActionResult> PutUser(string id, [FromBody] UpdateUserDto request)
{
var entity = await userManager.UpdateAsync(id, request.ToValues());
var user = await userManager.UpdateAsync(id, request.ToValues());
var response = UserDto.FromUser(entity, this);
var response = UserDto.FromUser(user, this);
return Ok(response);
}
@ -101,9 +101,9 @@ namespace Squidex.Areas.Api.Controllers.Users
throw new ValidationException("Locking user failed.", new ValidationError("You cannot lock yourself."));
}
var entity = await userManager.LockAsync(id);
var user = await userManager.LockAsync(id);
var response = UserDto.FromUser(entity, this);
var response = UserDto.FromUser(user, this);
return Ok(response);
}
@ -119,9 +119,9 @@ namespace Squidex.Areas.Api.Controllers.Users
throw new ValidationException("Unlocking user failed.", new ValidationError("You cannot unlock yourself."));
}
var entity = await userManager.UnlockAsync(id);
var user = await userManager.UnlockAsync(id);
var response = UserDto.FromUser(entity, this);
var response = UserDto.FromUser(user, this);
return Ok(response);
}

4
src/Squidex/Areas/Api/Controllers/Users/UsersController.cs

@ -91,9 +91,9 @@ namespace Squidex.Areas.Api.Controllers.Users
{
try
{
var entities = await userResolver.QueryByEmailAsync(query);
var users = await userResolver.QueryByEmailAsync(query);
var response = entities.Where(x => !x.IsHidden()).Select(x => UserDto.FromUser(x, this)).ToArray();
var response = users.Where(x => !x.IsHidden()).Select(x => UserDto.FromUser(x, this)).ToArray();
return Ok(response);
}

9
src/Squidex/app/features/administration/state/users.state.ts

@ -134,7 +134,14 @@ export class UsersState extends State<Snapshot> {
selectedUser = users.find(x => x.id === selectedUser!.id) || selectedUser;
}
return { ...s, users, usersPager, selectedUser, isLoaded: true, _links };
return { ...s,
canCreate,
isLoaded: true,
selectedUser,
users,
usersPager,
_links
};
});
}),
shareSubscribed(this.dialogs));

3
src/Squidex/app/features/content/pages/contents/contents-page.component.html

@ -19,9 +19,6 @@
[filter]="filter"
(querySubmit)="search()"
[queries]="schemaQueries"
(statusChange)="filterStatus($event)"
[status]="contentsState.status | async"
[statuses]="contentsState.statuses | async"
expandable="true"
enableArchive="true"
enableShortcut="true">

4
src/Squidex/app/features/content/pages/contents/contents-page.component.ts

@ -140,10 +140,6 @@ export class ContentsPageComponent extends ResourceOwner implements OnInit {
.subscribe();
}
public filterStatus(status: string[]) {
this.contentsState.filterStatus(status);
}
public goPrev() {
this.contentsState.goPrev();
}

6
src/Squidex/app/features/content/shared/contents-selector.component.html

@ -11,11 +11,9 @@
</button>
</div>
<div class="col pl-1">
<sqx-search-form formClass="form" placeholder="Search for content" fieldExample="data/[MY_FIELD]/iv"
<sqx-search-form formClass="form" placeholder="Search for content"
[fieldExample]="'data/[MY_FIELD]/iv'"
[filter]="filter"
(statusChange)="filterStatus($event)"
[status]="contentsState.status | async"
[statuses]="contentsState.statuses | async"
(querySubmit)="search()"
expandable="true">
</sqx-search-form>

4
src/Squidex/app/features/content/shared/contents-selector.component.ts

@ -70,10 +70,6 @@ export class ContentsSelectorComponent implements OnInit {
this.contentsState.search(this.filter.apiFilter);
}
public filterStatus(status: string[]) {
this.contentsState.filterStatus(status);
}
public goNext() {
this.contentsState.goNext();
}

9
src/Squidex/app/shared/components/search-form.component.html

@ -68,15 +68,6 @@
(ngModelChange)="filter.setOrder($event)" />
</div>
</div>
<div class="form-group row" *ngIf="statuses && statuses.length > 0">
<div class="col-10 offset-2">
<sqx-checkbox-group [values]="statuses"
[ngModel]="status"
(ngModelChange)="statusChange.emit($event)">
</sqx-checkbox-group>
</div>
</div>
<div class="link">
Read more about filtering in the <a href="https://docs.squidex.io/04-guides/02-api.html" sqxExternalLink>Documentation</a>.

9
src/Squidex/app/shared/components/search-form.component.ts

@ -39,15 +39,6 @@ export class SearchFormComponent implements OnInit {
@Input()
public filter: FilterState;
@Input()
public statuses: [] = [];
@Input()
public status: string[];
@Output()
public statusChange = new EventEmitter<[]>();
@Input()
public schemaName = '';

6
src/Squidex/app/shared/services/contents.service.spec.ts

@ -47,11 +47,11 @@ describe('ContentsService', () => {
let contents: ContentsDto;
contentsService.getContents('my-app', 'my-schema', 17, 13, undefined, undefined, ['Draft', 'Published']).subscribe(result => {
contentsService.getContents('my-app', 'my-schema', 17, 13, undefined, undefined).subscribe(result => {
contents = result;
});
const req = httpMock.expectOne('http://service/p/api/content/my-app/my-schema?$top=17&$skip=13&status=Draft&status=Published');
const req = httpMock.expectOne('http://service/p/api/content/my-app/my-schema?$top=17&$skip=13');
expect(req.request.method).toEqual('GET');
expect(req.request.headers.get('If-Match')).toBeNull();
@ -66,7 +66,7 @@ describe('ContentsService', () => {
});
expect(contents!).toEqual(
new ContentsDto(['Draft', 'Published'], 10, [
new ContentsDto(10, [
createContent(12),
createContent(13)
]));

23
src/Squidex/app/shared/services/contents.service.ts

@ -35,15 +35,6 @@ export class ScheduleDto {
}
export class ContentsDto extends ResultSet<ContentDto> {
constructor(
public readonly statuses: string[],
total: number,
items: ContentDto[],
links?: ResourceLinks
) {
super(total, items, links);
}
public get canCreate() {
return hasAnyLink(this._links, 'create');
}
@ -98,7 +89,7 @@ export class ContentsService {
) {
}
public getContents(appName: string, schemaName: string, take: number, skip: number, query?: string, ids?: string[], status?: string[]): Observable<ContentsDto> {
public getContents(appName: string, schemaName: string, take: number, skip: number, query?: string, ids?: string[]): Observable<ContentsDto> {
const queryParts: string[] = [];
if (query && query.length > 0) {
@ -123,21 +114,15 @@ export class ContentsService {
queryParts.push(`ids=${ids.join(',')}`);
}
if (status) {
for (let s of status) {
queryParts.push(`status=${s}`);
}
}
const fullQuery = queryParts.join('&');
const url = this.apiUrl.buildUrl(`/api/content/${appName}/${schemaName}?${fullQuery}`);
return this.http.get<{ total: number, items: [], statuses: string[] } & Resource>(url).pipe(
map(({ total, items, statuses, _links }) => {
return this.http.get<{ total: number, items: [] } & Resource>(url).pipe(
map(({ total, items, _links }) => {
const contents = items.map(x => parseContent(x));
return new ContentsDto(statuses, total, contents, _links);
return new ContentsDto(total, contents, _links);
}),
pretifyError('Failed to load contents. Please reload.'));
}

41
src/Squidex/app/shared/state/contents.state.ts

@ -40,12 +40,6 @@ interface Snapshot {
// Indicates if the contents are loaded.
isLoaded?: boolean;
// All statuses.
statuses?: string[];
// Indicates which status is shown.
status?: string[];
// The selected content.
selectedContent?: ContentDto | null;
@ -84,14 +78,6 @@ export abstract class ContentsStateBase extends State<Snapshot> {
this.changes.pipe(map(x => !!x.isLoaded),
distinctUntilChanged());
public status =
this.changes.pipe(map(x => x.status),
distinctUntilChanged());
public statuses =
this.changes.pipe(map(x => x.statuses),
distinctUntilChanged());
public canCreateAny =
this.changes.pipe(map(x => !!x.canCreate || !!x.canCreateAndPublish),
distinctUntilChanged());
@ -152,9 +138,8 @@ export abstract class ContentsStateBase extends State<Snapshot> {
return this.contentsService.getContents(this.appName, this.schemaName,
this.snapshot.contentsPager.pageSize,
this.snapshot.contentsPager.skip,
this.snapshot.contentsQuery, undefined,
this.snapshot.status).pipe(
tap(({ total, items, _links, statuses, canCreate, canCreateAndPublish }) => {
this.snapshot.contentsQuery, undefined).pipe(
tap(({ total, items, _links, canCreate, canCreateAndPublish }) => {
if (isReload) {
this.dialogs.notifyInfo('Contents reloaded.');
}
@ -163,13 +148,6 @@ export abstract class ContentsStateBase extends State<Snapshot> {
const contents = ImmutableArray.of(items);
const contentsPager = s.contentsPager.setCount(total);
statuses = s.statuses || statuses;
const status =
s.statuses ?
s.status :
statuses;
let selectedContent = s.selectedContent;
if (selectedContent) {
@ -182,8 +160,6 @@ export abstract class ContentsStateBase extends State<Snapshot> {
contentsPager,
isLoaded: true,
selectedContent,
status,
statuses,
_links
};
});
@ -305,19 +281,18 @@ export abstract class ContentsStateBase extends State<Snapshot> {
if (!oldVersion || !oldVersion.eq(content.version)) {
return this.next(s => {
const contents = s.contents.replaceBy('id', content);
const selectedContent = s.selectedContent && s.selectedContent.id === content.id ? content : s.selectedContent;
const selectedContent =
s.selectedContent &&
s.selectedContent.id === content.id ?
content :
s.selectedContent;
return { ...s, contents, selectedContent };
});
}
}
public filterStatus(status: string[]): Observable<any> {
this.next(s => ({ ...s, contentsPager: new Pager(0), status }));
return this.loadInternal();
}
public search(contentsQuery?: string): Observable<any> {
this.next(s => ({ ...s, contentsPager: new Pager(0), contentsQuery }));

Loading…
Cancel
Save