import { CommonModule } from "@angular/common"; import { Component, inject, OnDestroy, OnInit } from "@angular/core"; import { MatProgressSpinner } from "@angular/material/progress-spinner"; import { ActivatedRoute } from "@angular/router"; import { Observable, Subscription } from "rxjs"; import { PublicationListComponent } from "../../components/publication-list/publication-list.component"; import { Publication } from "../../core/rest-services/publications/model/publication"; import { SearchPublicationsService } from "./search-publications.service"; @Component({ selector: 'app-search-publications', templateUrl: './search-publications.component.html', styleUrl: './search-publications.component.scss', standalone: true, imports: [CommonModule, MatProgressSpinner, PublicationListComponent], providers: [SearchPublicationsService] }) export class SearchPublicationsComponent implements OnInit, OnDestroy { private searchPublicationsService = inject(SearchPublicationsService); private activatedRoute = inject(ActivatedRoute); private queryParamsSubscription?: Subscription; ngOnInit(): void { this.queryParamsSubscription = this.activatedRoute.queryParamMap .subscribe(params => { const categoryId = params.get('category-id'); if (categoryId) { this.searchPublicationsService.loadPublications(`category_id=${categoryId}`); } }); } ngOnDestroy(): void { this.queryParamsSubscription?.unsubscribe(); } get publications$(): Observable { return this.searchPublicationsService.publications$; } get isLoading$(): Observable { return this.searchPublicationsService.isLoading$; } get isLoaded$(): Observable { return this.searchPublicationsService.isLoaded$; } }