Spaces:
Running
Running
Update flare-ui/src/app/components/main/main.component.ts
Browse files
flare-ui/src/app/components/main/main.component.ts
CHANGED
@@ -1,4 +1,4 @@
|
|
1 |
-
import { Component, inject, OnInit, OnDestroy
|
2 |
import { CommonModule } from '@angular/common';
|
3 |
import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
|
4 |
import { MatToolbarModule } from '@angular/material/toolbar';
|
@@ -8,7 +8,7 @@ import { MatIconModule } from '@angular/material/icon';
|
|
8 |
import { MatMenuModule } from '@angular/material/menu';
|
9 |
import { MatBadgeModule } from '@angular/material/badge';
|
10 |
import { MatDividerModule } from '@angular/material/divider';
|
11 |
-
import {
|
12 |
import { AuthService } from '../../services/auth.service';
|
13 |
import { ActivityLogComponent } from '../activity-log/activity-log.component';
|
14 |
import { ApiService } from '../../services/api.service';
|
@@ -132,8 +132,8 @@ import { EnvironmentService } from '../../services/environment.service';
|
|
132 |
|
133 |
<a mat-tab-link
|
134 |
routerLink="/test"
|
135 |
-
routerLinkActive #
|
136 |
-
[active]="
|
137 |
<mat-icon>bug_report</mat-icon>
|
138 |
Test
|
139 |
</a>
|
@@ -242,36 +242,53 @@ export class MainComponent implements OnInit, OnDestroy {
|
|
242 |
showActivityLog = false;
|
243 |
isGPTMode = false;
|
244 |
|
245 |
-
|
|
|
246 |
|
247 |
ngOnInit() {
|
248 |
// Environment değişikliklerini dinle
|
249 |
-
this.
|
250 |
-
|
251 |
-
|
252 |
-
|
253 |
-
|
|
|
|
|
|
|
254 |
|
255 |
// Environment bilgisini al
|
256 |
this.loadEnvironment();
|
257 |
}
|
258 |
|
259 |
ngOnDestroy() {
|
260 |
-
this.
|
|
|
261 |
}
|
262 |
|
263 |
-
|
264 |
-
this.apiService.getEnvironment()
|
265 |
-
|
266 |
-
|
267 |
-
|
268 |
-
|
269 |
-
|
270 |
-
|
271 |
-
|
|
|
|
|
|
|
|
|
272 |
}
|
273 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
274 |
logout() {
|
|
|
|
|
275 |
this.authService.logout();
|
276 |
}
|
277 |
|
|
|
1 |
+
import { Component, inject, OnInit, OnDestroy } from '@angular/core';
|
2 |
import { CommonModule } from '@angular/common';
|
3 |
import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
|
4 |
import { MatToolbarModule } from '@angular/material/toolbar';
|
|
|
8 |
import { MatMenuModule } from '@angular/material/menu';
|
9 |
import { MatBadgeModule } from '@angular/material/badge';
|
10 |
import { MatDividerModule } from '@angular/material/divider';
|
11 |
+
import { Subject, takeUntil } from 'rxjs';
|
12 |
import { AuthService } from '../../services/auth.service';
|
13 |
import { ActivityLogComponent } from '../activity-log/activity-log.component';
|
14 |
import { ApiService } from '../../services/api.service';
|
|
|
132 |
|
133 |
<a mat-tab-link
|
134 |
routerLink="/test"
|
135 |
+
routerLinkActive #rla7="routerLinkActive"
|
136 |
+
[active]="rla7.isActive">
|
137 |
<mat-icon>bug_report</mat-icon>
|
138 |
Test
|
139 |
</a>
|
|
|
242 |
showActivityLog = false;
|
243 |
isGPTMode = false;
|
244 |
|
245 |
+
// Memory leak prevention
|
246 |
+
private destroyed$ = new Subject<void>();
|
247 |
|
248 |
ngOnInit() {
|
249 |
// Environment değişikliklerini dinle
|
250 |
+
this.environmentService.environment$
|
251 |
+
.pipe(takeUntil(this.destroyed$))
|
252 |
+
.subscribe(env => {
|
253 |
+
if (env) {
|
254 |
+
this.isGPTMode = env.work_mode?.startsWith('gpt4o') || false;
|
255 |
+
this.updateProviderInfo(env);
|
256 |
+
}
|
257 |
+
});
|
258 |
|
259 |
// Environment bilgisini al
|
260 |
this.loadEnvironment();
|
261 |
}
|
262 |
|
263 |
ngOnDestroy() {
|
264 |
+
this.destroyed$.next();
|
265 |
+
this.destroyed$.complete();
|
266 |
}
|
267 |
|
268 |
+
loadEnvironment() {
|
269 |
+
this.apiService.getEnvironment()
|
270 |
+
.pipe(takeUntil(this.destroyed$))
|
271 |
+
.subscribe({
|
272 |
+
next: (env) => {
|
273 |
+
this.environmentService.updateEnvironment(env);
|
274 |
+
this.updateProviderInfo(env);
|
275 |
+
},
|
276 |
+
error: (error) => {
|
277 |
+
console.error('Failed to load environment:', error);
|
278 |
+
// Show snackbar if needed
|
279 |
+
}
|
280 |
+
});
|
281 |
}
|
282 |
+
|
283 |
+
updateProviderInfo(env: any) {
|
284 |
+
// Update TTS/STT availability
|
285 |
+
this.environmentService.setTTSEnabled(!!env.tts_provider?.name && env.tts_provider.name !== 'no_tts');
|
286 |
+
this.environmentService.setSTTEnabled(!!env.stt_provider?.name && env.stt_provider.name !== 'no_stt');
|
287 |
+
}
|
288 |
+
|
289 |
logout() {
|
290 |
+
// Cleanup before logout
|
291 |
+
this.destroyed$.next();
|
292 |
this.authService.logout();
|
293 |
}
|
294 |
|