Skip to content
Snippets Groups Projects
Commit f9c20658 authored by Martin's avatar Martin
Browse files

OZG-5977 adjust state/model structure

parent ac081feb
Branches
Tags
1 merge request!67OZG-5977 add multi option to file upload button
...@@ -22,7 +22,7 @@ ...@@ -22,7 +22,7 @@
* unter der Lizenz sind dem Lizenztext zu entnehmen. * unter der Lizenz sind dem Lizenztext zu entnehmen.
*/ */
import { ListResource, StateResource } from '@alfa-client/tech-shared'; import { ListResource, StateResource } from '@alfa-client/tech-shared';
import { Resource, ResourceUri } from '@ngxp/rest'; import { Resource } from '@ngxp/rest';
import { Observable } from 'rxjs'; import { Observable } from 'rxjs';
export interface BinaryFile { export interface BinaryFile {
...@@ -38,13 +38,13 @@ export interface BinaryFileListResource extends ListResource {} ...@@ -38,13 +38,13 @@ export interface BinaryFileListResource extends ListResource {}
export interface ToUploadFile { export interface ToUploadFile {
type: FileUploadType; type: FileUploadType;
file: File; file: File;
uri: ResourceUri; uploadUrl: string;
} }
export declare type FileUploadType = string; export declare type FileUploadType = string;
export interface UploadFile { export interface UploadFile {
type: FileUploadType; key: string;
fileToUpload: File; fileToUpload: File;
uploadedFile: Observable<StateResource<BinaryFileResource>>; uploadedFile: Observable<StateResource<BinaryFileResource>>;
} }
......
...@@ -68,7 +68,7 @@ describe('BinaryFileService', () => { ...@@ -68,7 +68,7 @@ describe('BinaryFileService', () => {
describe('is upload in progress', () => { describe('is upload in progress', () => {
const type: FileUploadType = 'DummyType'; const type: FileUploadType = 'DummyType';
const uploadFile: UploadFile = { const uploadFile: UploadFile = {
type, key: faker.string.uuid(),
fileToUpload: createFile(), fileToUpload: createFile(),
uploadedFile: of(createEmptyStateResource<BinaryFileResource>(true)), uploadedFile: of(createEmptyStateResource<BinaryFileResource>(true)),
}; };
...@@ -87,7 +87,7 @@ describe('BinaryFileService', () => { ...@@ -87,7 +87,7 @@ describe('BinaryFileService', () => {
describe('get uploaded files', () => { describe('get uploaded files', () => {
const type: FileUploadType = 'DummyType'; const type: FileUploadType = 'DummyType';
const uploadFile: UploadFile = { const uploadFile: UploadFile = {
type, key: faker.string.uuid(),
fileToUpload: createFile(), fileToUpload: createFile(),
uploadedFile: of(createStateResource(createBinaryFileResource())), uploadedFile: of(createStateResource(createBinaryFileResource())),
}; };
...@@ -104,19 +104,23 @@ describe('BinaryFileService', () => { ...@@ -104,19 +104,23 @@ describe('BinaryFileService', () => {
}); });
}); });
describe('remove uploaded file', () => {
//Implement me
});
describe('upload file new', () => { describe('upload file new', () => {
const file: File = createFile(); const file: File = createFile();
const uri: ResourceUri = faker.internet.url(); const uploadUrl: string = faker.internet.url();
const type: FileUploadType = 'dummyType'; const type: FileUploadType = 'dummyType';
const toUploadFile: ToUploadFile = { file, uri, type }; const toUploadFile: ToUploadFile = { file, uploadUrl, type };
const binaryFileResource: BinaryFileResource = createBinaryFileResource(); const binaryFileResource: BinaryFileResource = createBinaryFileResource();
const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFileResource); const binaryFileStateResource: StateResource<BinaryFileResource> = createStateResource(binaryFileResource);
const binaryFileStateResource$: Observable<StateResource<BinaryFileResource>> = of(createStateResource(binaryFileResource)); const binaryFileStateResource$: Observable<StateResource<BinaryFileResource>> = of(createStateResource(binaryFileResource));
const uploadFile: UploadFile = { type, fileToUpload: file, uploadedFile: binaryFileStateResource$ }; const uploadFile: UploadFile = { key: faker.string.uuid(), fileToUpload: file, uploadedFile: binaryFileStateResource$ };
it('should push entry to uploaded files', () => { it('should push entry to uploaded files', () => {
service._buildUploadFile = jest.fn().mockReturnValue(uploadFile); service._buildUploadFile = jest.fn().mockReturnValue(uploadFile);
...@@ -152,7 +156,7 @@ describe('BinaryFileService', () => { ...@@ -152,7 +156,7 @@ describe('BinaryFileService', () => {
service._handleUpload(toUploadFile); service._handleUpload(toUploadFile);
expect(repository.uploadFileNew).toHaveBeenCalledWith(uri, file); expect(repository.uploadFileNew).toHaveBeenCalledWith(uploadUrl, file);
}); });
it('should return start and first value', () => { it('should return start and first value', () => {
......
...@@ -40,6 +40,7 @@ import { ...@@ -40,6 +40,7 @@ import {
import { SnackBarService } from '@alfa-client/ui'; import { SnackBarService } from '@alfa-client/ui';
import { HttpErrorResponse, HttpResponse } from '@angular/common/http'; import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
import { Injectable } from '@angular/core'; import { Injectable } from '@angular/core';
import { faker } from '@faker-js/faker/.';
import { getUrl, Resource, ResourceUri } from '@ngxp/rest'; import { getUrl, Resource, ResourceUri } from '@ngxp/rest';
import { saveAs } from 'file-saver'; import { saveAs } from 'file-saver';
import { isNil } from 'lodash-es'; import { isNil } from 'lodash-es';
...@@ -76,22 +77,26 @@ export class BinaryFileService { ...@@ -76,22 +77,26 @@ export class BinaryFileService {
return this.uploadFiles.asObservable().pipe(map((files: UploadFilesByType) => files[type])); return this.uploadFiles.asObservable().pipe(map((files: UploadFilesByType) => files[type]));
} }
public deleteUploadedFile(type: FileUploadType, key: string): void {
//Implement me
}
//TODO Rename //TODO Rename
public uploadFileNew(toUploadFile: ToUploadFile): void { public uploadFileNew(toUploadFile: ToUploadFile): void {
if (!(toUploadFile.uri in this.uploadFiles.value)) this.uploadFiles.value[toUploadFile.type] = EMPTY_ARRAY; if (!(toUploadFile.uploadUrl in this.uploadFiles.value)) this.uploadFiles.value[toUploadFile.type] = EMPTY_ARRAY;
this.uploadFiles.value[toUploadFile.type].push(this._buildUploadFile(toUploadFile)); this.uploadFiles.value[toUploadFile.type].push(this._buildUploadFile(toUploadFile));
} }
_buildUploadFile(toUploadFile: ToUploadFile): UploadFile { _buildUploadFile(toUploadFile: ToUploadFile): UploadFile {
return { return {
type: toUploadFile.type, key: faker.string.uuid(),
fileToUpload: toUploadFile.file, fileToUpload: toUploadFile.file,
uploadedFile: this._handleUpload(toUploadFile), uploadedFile: this._handleUpload(toUploadFile),
}; };
} }
_handleUpload(toUploadFile: ToUploadFile): Observable<StateResource<BinaryFileResource>> { _handleUpload(toUploadFile: ToUploadFile): Observable<StateResource<BinaryFileResource>> {
return this.repository.uploadFileNew(toUploadFile.uri, toUploadFile.file).pipe( return this.repository.uploadFileNew(toUploadFile.uploadUrl, toUploadFile.file).pipe(
map((binaryFileResource: BinaryFileResource) => createStateResource(binaryFileResource)), map((binaryFileResource: BinaryFileResource) => createStateResource(binaryFileResource)),
catchError((response: any) => of(createErrorStateResource(<HttpError>response.error))), catchError((response: any) => of(createErrorStateResource(<HttpError>response.error))),
startWith(createEmptyStateResource<BinaryFileResource>(true)), startWith(createEmptyStateResource<BinaryFileResource>(true)),
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment