import RequestPromise from '../../common/DTO/RequestPromise'; import Image from '../entity/Image'; import ImageServiceInterface from './ImageServiceInterface'; import FileService from '../../File/services/FileService'; import HTTPRequest from '../../Request/entity/HTTPRequest'; export default class ImageService extends FileService implements ImageServiceInterface { static defaultConfig = { size: 's', }; uploadImage(file: File, instance: Image = new Image()): RequestPromise { return this.uploadFile(file, instance); } uploadAndRetrieveImage( file: File, configuration: any = ImageService.defaultConfig, instance: Image = new Image(), ): RequestPromise { let requestPromise = this.uploadImage(file, instance); return new RequestPromise( requestPromise.requestId, new Promise((resolve) => { requestPromise.promise.then(file_id => { this.getByIdAndConfiguration(file_id, configuration).promise.then(imageUploaded => { // imageUploaded.url = 'https://staging-master-newapi.zeelo.co' + imageUploaded.url; resolve(imageUploaded); }); }); }), ); } getByIdAndConfiguration(id: string, configuration: any = ImageService.defaultConfig): RequestPromise { const httpRequest = new HTTPRequest(); httpRequest.data = { id }; httpRequest.queryString = `?size=${configuration.size}`; const requestPromise = this.client.getById(httpRequest); return new RequestPromise( requestPromise.requestId, new Promise((resolve, reject) => { requestPromise.promise.then((response: any) => { resolve( this.transformer.transformToEntity(response.data.data), ); }) }), ); } }