genai-for-marketing/frontend/src/app/services/social-media.service.ts (54 lines of code) (raw):

import { HttpClient, HttpErrorResponse, HttpHeaders } from '@angular/common/http'; import { Injectable } from '@angular/core'; import { MatSnackBar } from '@angular/material/snack-bar'; import { catchError, throwError } from 'rxjs'; import { environment } from '../../environments/environments'; @Injectable({ providedIn: 'root' }) export class SocialMediaService { constructor( public http: HttpClient, public snackBar: MatSnackBar) { } generateEmailCopy(obj: any) { const head = new HttpHeaders().set('content-type', 'application/json') let options = { headers: head } return this.http.post(`${environment.apiUrl}/generate-image`, obj, options) .pipe(catchError(this.handleError)); } generateImage(obj: any) { const head = new HttpHeaders().set('content-type', 'application/json') let options = { headers: head } return this.http.post(`${environment.apiUrl}/generate-image`, obj, options) .pipe(catchError(this.handleError)); } private handleError(error: HttpErrorResponse) { if (error.error instanceof ErrorEvent) { console.error('An error occurred:', error.error); this.showSnackbarCssStyles(error.error, 'Close', '4000') } else { this.showSnackbarCssStyles(error?.message, 'Close', '4000') } return throwError( 'Something bad happened; please try again later.'); } editImage(query: any) { const head = new HttpHeaders().set('content-type', 'application/json') let options = { headers: head } return this.http.post(`${environment.apiUrl}/edit-image`, query, options) .pipe(catchError(this.handleError)); } showSnackbarCssStyles(content: any, action: any, duration: any) { let sb = this.snackBar.open(content, action, { duration: duration, panelClass: ["custom-style"] }); sb.onAction().subscribe(() => { sb.dismiss(); }); } }