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 {