Browse Source

Correct handling of duplicates.

pull/372/head
Sebastian Stehle 7 years ago
parent
commit
bd23785ff1
  1. 5
      src/Squidex/Areas/Api/Controllers/Assets/AssetsController.cs
  2. 15
      src/Squidex/app/shared/components/assets-list.component.ts
  3. 4
      src/Squidex/app/shared/services/assets.service.ts
  4. 2
      src/Squidex/app/shared/state/asset-uploader.state.ts

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

@ -179,7 +179,10 @@ namespace Squidex.Areas.Api.Controllers.Assets
var command = new CreateAsset { File = assetFile };
var response = await InvokeCommandAsync(app, command);
var context = await CommandBus.PublishAsync(command);
var result = context.Result<AssetCreatedResult>();
var response = AssetDto.FromAsset(result.Asset, this, app, result.IsDuplicate);
return CreatedAtAction(nameof(GetAsset), new { app, id = response.Id }, response);
}

15
src/Squidex/app/shared/components/assets-list.component.ts

@ -5,7 +5,7 @@
* Copyright (c) Squidex UG (haftungsbeschränkt). All rights reserved.
*/
import { ChangeDetectionStrategy, Component, EventEmitter, Input, Output } from '@angular/core';
import { ChangeDetectionStrategy, ChangeDetectorRef, Component, EventEmitter, Input, Output } from '@angular/core';
import { onErrorResumeNext } from 'rxjs/operators';
import {
@ -38,11 +38,24 @@ export class AssetsListComponent {
@Output()
public select = new EventEmitter<AssetDto>();
constructor(
private readonly changeDetector: ChangeDetectorRef
) {
}
public add(file: File, asset: AssetDto) {
if (asset.isDuplicate) {
setTimeout(() => {
this.newFiles = this.newFiles.remove(file);
this.changeDetector.detectChanges();
}, 2000);
} else {
this.newFiles = this.newFiles.remove(file);
this.state.add(asset);
}
}
public search() {
this.state.load().pipe(onErrorResumeNext()).subscribe();

4
src/Squidex/app/shared/services/assets.service.ts

@ -43,6 +43,10 @@ export class AssetDto {
public readonly canUpdate: boolean;
public readonly canUpload: boolean;
public get isDuplicate() {
return this._meta && this._meta['isDuplicate'] === 'true';
}
public get contentUrl() {
return this._links['content'].href;
}

2
src/Squidex/app/shared/state/asset-uploader.state.ts

@ -75,7 +75,7 @@ export class AssetUploaderState extends State<Snapshot> {
const stream = this.assetsService.uploadFile(this.appName, file);
return this.upload(stream, MathHelper.guid(), file, asset => {
if (asset._meta && asset._meta['isDuplicate'] === 'true') {
if (asset.isDuplicate) {
this.dialogs.notifyError('Asset has already been uploaded.');
} else if (target) {
target.add(asset);

Loading…
Cancel
Save