From b0f9a2dea88c8e9784d360b508b8eb0b2c176f24 Mon Sep 17 00:00:00 2001 From: Tom Date: Tue, 8 Apr 2025 13:41:34 +0000 Subject: [PATCH] Cleaned up TTS Filters. Fixed the service when updating a filter. --- .../services/redeemable-action.service.ts | 4 +- src/app/shared/services/tts-filter.service.ts | 8 +- .../filter-item-edit.component.html | 4 +- .../filter-item-edit.component.ts | 11 ++- .../filter-item/filter-item.component.html | 6 +- .../filter-item/filter-item.component.ts | 40 ++++----- .../filter-list/filter-list.component.html | 5 +- .../filter-list/filter-list.component.ts | 9 +- .../tts-filters/filters/filters.component.ts | 83 ++++--------------- 9 files changed, 54 insertions(+), 116 deletions(-) diff --git a/src/app/shared/services/redeemable-action.service.ts b/src/app/shared/services/redeemable-action.service.ts index ee5ca6c..d23abe8 100644 --- a/src/app/shared/services/redeemable-action.service.ts +++ b/src/app/shared/services/redeemable-action.service.ts @@ -10,7 +10,7 @@ import EventService from './EventService'; export default class RedeemableActionService { private readonly client = inject(HermesClientService); private readonly events = inject(EventService); - private data: RedeemableAction[] = [] + private data: RedeemableAction[] = []; private loaded = false; create$: Observable | undefined; update$: Observable | undefined; @@ -22,7 +22,7 @@ export default class RedeemableActionService { this.update$ = this.client.filterByRequestType('update_redeemable_action'); this.delete$ = this.client.filterByRequestType('delete_redeemable_action'); - this.create$?.subscribe(d => {this.data.push(d.data); console.log('action service add:', d.data) }); + this.create$?.subscribe(d => this.data.push(d.data)); this.update$?.subscribe(d => { const action = this.data.find(r => r.name == d.data.name); if (action) { diff --git a/src/app/shared/services/tts-filter.service.ts b/src/app/shared/services/tts-filter.service.ts index 9593f3a..727158d 100644 --- a/src/app/shared/services/tts-filter.service.ts +++ b/src/app/shared/services/tts-filter.service.ts @@ -1,6 +1,6 @@ import { inject, Injectable } from '@angular/core'; import { HermesClientService } from '../../hermes-client.service'; -import { first, map, Observable, of } from 'rxjs'; +import { map, Observable, of } from 'rxjs'; import EventService from './EventService'; import { Filter } from '../models/filter'; @@ -25,9 +25,9 @@ export default class TtsFilterService { this.update$?.subscribe(d => { const filter = this.data.find(r => r.id == d.data.id); if (filter) { - filter.search = d.data.action_name; - filter.replace = d.data.redemption_id; - filter.flag = d.data.order; + filter.search = d.data.search; + filter.replace = d.data.replace; + filter.flag = d.data.flag; } }); this.delete$?.subscribe(d => this.data = this.data.filter(r => r.id != d.request.data.id)); diff --git a/src/app/tts-filters/filter-item-edit/filter-item-edit.component.html b/src/app/tts-filters/filter-item-edit/filter-item-edit.component.html index 8a97d71..567b2a2 100644 --- a/src/app/tts-filters/filter-item-edit/filter-item-edit.component.html +++ b/src/app/tts-filters/filter-item-edit/filter-item-edit.component.html @@ -54,12 +54,12 @@ diff --git a/src/app/tts-filters/filter-item-edit/filter-item-edit.component.ts b/src/app/tts-filters/filter-item-edit/filter-item-edit.component.ts index f203899..113a240 100644 --- a/src/app/tts-filters/filter-item-edit/filter-item-edit.component.ts +++ b/src/app/tts-filters/filter-item-edit/filter-item-edit.component.ts @@ -29,9 +29,8 @@ import { MatIconModule } from '@angular/material/icon'; }) export class FilterItemEditComponent { private readonly client = inject(HermesClientService); - private readonly dialogRef = inject(MatDialogRef); - readonly data = inject(MAT_DIALOG_DATA); + private readonly data = inject(MAT_DIALOG_DATA); readonly regexOptions = [ { @@ -52,8 +51,8 @@ export class FilterItemEditComponent { }, ]; - readonly searchControl = new FormControl(this.data.search, [Validators.required]); - readonly replaceControl = new FormControl(this.data.replace); + readonly searchControl = new FormControl(this.data.search, [Validators.required]); + readonly replaceControl = new FormControl(this.data.replace); readonly flagControl = new FormControl(this.optionsSelected); readonly forms = new FormGroup({ search: this.searchControl, @@ -70,7 +69,7 @@ export class FilterItemEditComponent { return this.regexOptions.filter(o => (flag & o.flag) > 0).map(o => o.name); } - onSaveClick(): void { + save(): void { if (!this.forms.dirty || this.forms.invalid || this.waitForResponse) return; @@ -110,7 +109,7 @@ export class FilterItemEditComponent { } } - onCancelClick(): void { + cancel(): void { this.dialogRef.close(); } diff --git a/src/app/tts-filters/filter-item/filter-item.component.html b/src/app/tts-filters/filter-item/filter-item.component.html index 7b6c97e..aa64898 100644 --- a/src/app/tts-filters/filter-item/filter-item.component.html +++ b/src/app/tts-filters/filter-item/filter-item.component.html @@ -1,12 +1,12 @@
  • - {{item.search}} + {{item().search}}
  • - {{item.replace}} + {{item().replace}}
  • @@ -14,7 +14,7 @@ + (click)="delete()">Delete
- @for (filter of filters; track $index) { + @for (filter of filters(); track $index) {
  • - +
  • } diff --git a/src/app/tts-filters/filter-list/filter-list.component.ts b/src/app/tts-filters/filter-list/filter-list.component.ts index ae8ed7f..ff98e8b 100644 --- a/src/app/tts-filters/filter-list/filter-list.component.ts +++ b/src/app/tts-filters/filter-list/filter-list.component.ts @@ -1,4 +1,4 @@ -import { Component, inject, Input } from '@angular/core'; +import { Component, inject, input, Input } from '@angular/core'; import { FilterItemComponent } from '../filter-item/filter-item.component'; import { Filter } from '../../shared/models/filter'; import { HermesClientService } from '../../hermes-client.service'; @@ -11,10 +11,7 @@ import { HermesClientService } from '../../hermes-client.service'; styleUrl: './filter-list.component.scss' }) export class FilterListComponent { - @Input() filters: Filter[] = []; - client = inject(HermesClientService); + private readonly client = inject(HermesClientService); - deleteFilter(e: any): void { - this.client.deleteTTSFilter(e.id); - } + filters = input.required(); } \ No newline at end of file diff --git a/src/app/tts-filters/filters/filters.component.ts b/src/app/tts-filters/filters/filters.component.ts index 6fccc01..37305d5 100644 --- a/src/app/tts-filters/filters/filters.component.ts +++ b/src/app/tts-filters/filters/filters.component.ts @@ -1,11 +1,9 @@ -import { Component, inject, Inject, OnDestroy, OnInit, PLATFORM_ID } from '@angular/core'; +import { Component, inject, OnDestroy } from '@angular/core'; import { FilterListComponent } from "../filter-list/filter-list.component"; import { MatButtonModule } from '@angular/material/button'; import { MatIconModule } from '@angular/material/icon'; -import { HermesClientService } from '../../hermes-client.service'; import { Filter, FilterFlag } from '../../shared/models/filter'; -import { isPlatformBrowser } from '@angular/common'; -import { ActivatedRoute, Router } from '@angular/router'; +import { ActivatedRoute } from '@angular/router'; import { FilterItemEditComponent } from '../filter-item-edit/filter-item-edit.component'; import { MatDialog } from '@angular/material/dialog'; import TtsFilterService from '../../shared/services/tts-filter.service'; @@ -14,84 +12,37 @@ import { Subscription } from 'rxjs'; @Component({ selector: 'filters', standalone: true, - imports: [FilterListComponent, MatButtonModule, MatIconModule], + imports: [ + FilterListComponent, + MatButtonModule, + MatIconModule + ], templateUrl: './filters.component.html', styleUrl: './filters.component.scss' }) -export class FiltersComponent implements OnInit, OnDestroy { +export class FiltersComponent implements OnDestroy { private readonly filterService = inject(TtsFilterService); private readonly route = inject(ActivatedRoute); - private readonly subscriptions: Subscription[] = []; - private isBrowser: boolean; + private readonly subscriptions: (Subscription | undefined)[] = []; + readonly dialog = inject(MatDialog); - items: Filter[]; + + items: Filter[] = []; - constructor(private client: HermesClientService, private router: Router, @Inject(PLATFORM_ID) private platformId: Object) { - this.isBrowser = isPlatformBrowser(this.platformId); - this.items = []; + constructor() { + this.route.data.subscribe(data => this.items = data['filters'] || []); - this.route.data.subscribe(data => { - if (!data['filters']) - return; - - this.items = [...data['filters']]; - }); - let subscription = this.filterService.create$?.subscribe(d => { - if (d.error || d.request.nounce != null && d.request.nounce.startsWith(this.client.session_id)) - return; - - this.items.push(d.data); - }); - if (subscription) - this.subscriptions.push(subscription); - - subscription = this.filterService.update$?.subscribe(d => { - if (d.error || d.request.nounce != null && d.request.nounce.startsWith(this.client.session_id)) - return; - - const filter = this.items.find(f => f.id == d.data.id); - if (filter) { - filter.search = d.data.search; - filter.replace = d.data.replace; - filter.flag = d.data.flag || 0; - } - }); - if (subscription) - this.subscriptions.push(subscription); - - subscription = this.filterService.delete$?.subscribe(d => { - if (d.error) - return; - - this.items = this.items.filter(a => a.id != d.request.data.id); - }); - if (subscription) - this.subscriptions.push(subscription); - } - - ngOnInit(): void { - if (!this.isBrowser) - return; - - if (!this.client.logged_in) { - this.router.navigate(["tts-login"]); - return; - } + this.subscriptions.push(this.filterService.delete$?.subscribe(d => this.items = this.items.filter(a => a.id != d.request.data.id))); } ngOnDestroy() { - this.subscriptions.forEach(s => s.unsubscribe()); + this.subscriptions.filter(s => !!s).forEach(s => s.unsubscribe()); } openDialog(): void { - const dialogRef = this.dialog.open(FilterItemEditComponent, { + this.dialog.open(FilterItemEditComponent, { data: { id: '', user_id: '', search: '', replace: '', flag: FilterFlag.None }, }); - - dialogRef.afterClosed().subscribe((result: Filter) => { - if (result) - this.items.push(result); - }); } } \ No newline at end of file