42 lines
1.7 KiB
TypeScript
42 lines
1.7 KiB
TypeScript
import { HttpClient } from '@angular/common/http';
|
|
import { Injectable } from '@angular/core';
|
|
import { lastValueFrom } from 'rxjs';
|
|
import { emailToDirName } from '../../../../bizmatch-server/src/models/main.model';
|
|
import { environment } from '../../environments/environment';
|
|
|
|
@Injectable({
|
|
providedIn: 'root',
|
|
})
|
|
export class ImageService {
|
|
private apiBaseUrl = environment.apiBaseUrl;
|
|
|
|
constructor(private http: HttpClient) {}
|
|
|
|
async uploadImage(imageBlob: Blob, type: 'uploadPropertyPicture' | 'uploadCompanyLogo' | 'uploadProfile', imagePath: string, serialId?: number) {
|
|
let uploadUrl = `${this.apiBaseUrl}/bizmatch/image/${type}/${imagePath}`;
|
|
if (type === 'uploadPropertyPicture') {
|
|
uploadUrl = `${this.apiBaseUrl}/bizmatch/image/${type}/${imagePath}/${serialId}`;
|
|
}
|
|
const formData = new FormData();
|
|
formData.append('file', imageBlob, 'image.png');
|
|
|
|
// return this.http.post(uploadUrl, formData, {
|
|
// observe: 'events',
|
|
// });
|
|
return await lastValueFrom(this.http.post(uploadUrl, formData));
|
|
}
|
|
|
|
async deleteListingImage(imagePath: string, serial: number, name?: string) {
|
|
return await lastValueFrom(this.http.delete<[]>(`${this.apiBaseUrl}/bizmatch/image/propertyPicture/${imagePath}/${serial}/${name}`));
|
|
}
|
|
|
|
async deleteLogoImagesByMail(email: string) {
|
|
const adjustedEmail = emailToDirName(email);
|
|
await lastValueFrom(this.http.delete<[]>(`${this.apiBaseUrl}/bizmatch/image/logo/${adjustedEmail}`));
|
|
}
|
|
async deleteProfileImagesByMail(email: string) {
|
|
const adjustedEmail = emailToDirName(email);
|
|
await lastValueFrom(this.http.delete<[]>(`${this.apiBaseUrl}/bizmatch/image/profile/${adjustedEmail}`));
|
|
}
|
|
}
|