From 25e54d505094580f80d658bd24dcc6aea9a48a4b Mon Sep 17 00:00:00 2001 From: liosha84 <138026690+liosha84@users.noreply.github.com> Date: Fri, 4 Jul 2025 09:48:42 +0300 Subject: [PATCH] Add custom HTTP interceptor and spinner service for request handling; update CORS settings --- .../generate-image.component.html | 4 ++-- .../helpers/custom-http-interceptor.spec.ts | 7 ++++++ .../app/helpers/custom-http-interceptor.ts | 24 +++++++++++++++++++ .../src/app/services/spinner.service.spec.ts | 16 +++++++++++++ .../src/app/services/spinner.service.ts | 19 +++++++++++++++ .../jambotron/ZhiPuAi/ImageController.java | 2 +- .../jambotron/controllers/AuthController.java | 2 +- 7 files changed, 70 insertions(+), 4 deletions(-) create mode 100644 jambotron-ui/src/app/helpers/custom-http-interceptor.spec.ts create mode 100644 jambotron-ui/src/app/helpers/custom-http-interceptor.ts create mode 100644 jambotron-ui/src/app/services/spinner.service.spec.ts create mode 100644 jambotron-ui/src/app/services/spinner.service.ts diff --git a/jambotron-ui/src/app/components/generate-image.component/generate-image.component.html b/jambotron-ui/src/app/components/generate-image.component/generate-image.component.html index decb2bc..444860a 100644 --- a/jambotron-ui/src/app/components/generate-image.component/generate-image.component.html +++ b/jambotron-ui/src/app/components/generate-image.component/generate-image.component.html @@ -22,6 +22,6 @@ - - + diff --git a/jambotron-ui/src/app/helpers/custom-http-interceptor.spec.ts b/jambotron-ui/src/app/helpers/custom-http-interceptor.spec.ts new file mode 100644 index 0000000..bdf0c36 --- /dev/null +++ b/jambotron-ui/src/app/helpers/custom-http-interceptor.spec.ts @@ -0,0 +1,7 @@ +import { CustomHttpInterceptor } from './custom-http-interceptor'; + +describe('CustomHttpInterceptor', () => { + it('should create an instance', () => { + expect(new CustomHttpInterceptor()).toBeTruthy(); + }); +}); diff --git a/jambotron-ui/src/app/helpers/custom-http-interceptor.ts b/jambotron-ui/src/app/helpers/custom-http-interceptor.ts new file mode 100644 index 0000000..df18c65 --- /dev/null +++ b/jambotron-ui/src/app/helpers/custom-http-interceptor.ts @@ -0,0 +1,24 @@ +import {HttpEvent, HttpHandler, HttpInterceptor, HttpRequest, HttpResponse} from '@angular/common/http'; +import {Observable, tap} from 'rxjs'; +import {SpinnerService} from '../services/spinner.service'; +import {Injectable} from '@angular/core'; + +@Injectable() +export class CustomHttpInterceptor implements HttpInterceptor { + + constructor(private spinnerService: SpinnerService) { } + + intercept(req: HttpRequest, next: HttpHandler): Observable> { + + this.spinnerService.show(); + + return next.handle(req) + .pipe(tap((event: HttpEvent) => { + if (event instanceof HttpResponse) { + this.spinnerService.hide(); + } + }, (error) => { + this.spinnerService.hide(); + })); + } +} diff --git a/jambotron-ui/src/app/services/spinner.service.spec.ts b/jambotron-ui/src/app/services/spinner.service.spec.ts new file mode 100644 index 0000000..222e634 --- /dev/null +++ b/jambotron-ui/src/app/services/spinner.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { SpinnerService } from './spinner.service'; + +describe('SpinnerService', () => { + let service: SpinnerService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(SpinnerService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/jambotron-ui/src/app/services/spinner.service.ts b/jambotron-ui/src/app/services/spinner.service.ts new file mode 100644 index 0000000..c4fa063 --- /dev/null +++ b/jambotron-ui/src/app/services/spinner.service.ts @@ -0,0 +1,19 @@ +import { Injectable } from '@angular/core'; +import {BehaviorSubject} from 'rxjs'; + +@Injectable({ providedIn: 'root'}) +export class SpinnerService { + visibility: BehaviorSubject; + + constructor() { + this.visibility = new BehaviorSubject(false); + } + + show() { + this.visibility.next(true); + } + + hide() { + this.visibility.next(false); + } +} diff --git a/src/main/java/com/jambotronGroup/jambotron/ZhiPuAi/ImageController.java b/src/main/java/com/jambotronGroup/jambotron/ZhiPuAi/ImageController.java index 15bb15a..f4effa1 100644 --- a/src/main/java/com/jambotronGroup/jambotron/ZhiPuAi/ImageController.java +++ b/src/main/java/com/jambotronGroup/jambotron/ZhiPuAi/ImageController.java @@ -12,7 +12,7 @@ import org.springframework.web.bind.annotation.*; import java.util.List; -@CrossOrigin(origins = "http://localhost:4200", maxAge = 3600, allowCredentials="true") +@CrossOrigin(origins = "http://localhost:4200, https://pony-sincere-chimp.ngrok-free.app/", maxAge = 3600, allowCredentials="true") @RestController @RequestMapping("/api/zhipuai") public class ImageController { diff --git a/src/main/java/com/jambotronGroup/jambotron/controllers/AuthController.java b/src/main/java/com/jambotronGroup/jambotron/controllers/AuthController.java index c962699..c1b1b97 100644 --- a/src/main/java/com/jambotronGroup/jambotron/controllers/AuthController.java +++ b/src/main/java/com/jambotronGroup/jambotron/controllers/AuthController.java @@ -30,7 +30,7 @@ import java.util.List; import java.util.Set; import java.util.stream.Collectors; //@CrossOrigin(origins = "*", maxAge = 3600) -@CrossOrigin(origins = "http://localhost:4200,https://a576-5-248-149-207.ngrok-free.app", maxAge = 3600, allowCredentials="true") +@CrossOrigin(origins = "http://localhost:4200,https://a576-5-248-149-207.ngrok-free.app, https://pony-sincere-chimp.ngrok-free.app", maxAge = 3600, allowCredentials="true") @RestController @RequestMapping("/api/auth") public class AuthController {