ciyidogan commited on
Commit
5343d65
·
verified ·
1 Parent(s): 81b5b06

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 } 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,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 { Subscription } 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,8 +132,8 @@ import { EnvironmentService } from '../../services/environment.service';
132
 
133
  <a mat-tab-link
134
  routerLink="/test"
135
- routerLinkActive #rla5="routerLinkActive"
136
- [active]="rla5.isActive">
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
- private subscription?: Subscription;
 
246
 
247
  ngOnInit() {
248
  // Environment değişikliklerini dinle
249
- this.subscription = this.environmentService.environment$.subscribe(env => {
250
- if (env) {
251
- this.isGPTMode = env.work_mode?.startsWith('gpt4o') || false;
252
- }
253
- });
 
 
 
254
 
255
  // Environment bilgisini al
256
  this.loadEnvironment();
257
  }
258
 
259
  ngOnDestroy() {
260
- this.subscription?.unsubscribe();
 
261
  }
262
 
263
- private loadEnvironment() {
264
- this.apiService.getEnvironment().subscribe({
265
- next: (env) => {
266
- this.environmentService.updateEnvironment(env);
267
- },
268
- error: (err) => {
269
- console.error('Failed to load environment:', err);
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