import {CommonModule} from "@angular/common"; import {Component, effect, inject} from "@angular/core"; import {MatProgressSpinner} from "@angular/material/progress-spinner"; import {ActivatedRoute} from "@angular/router"; import {PublicationListComponent} from "../../components/publication-list/publication-list.component"; import {SearchPublicationsService} from "./search-publications.service"; import {toSignal} from "@angular/core/rxjs-interop"; @Component({ selector: 'app-search-publications', templateUrl: './search-publications.component.html', styleUrl: './search-publications.component.scss', imports: [CommonModule, MatProgressSpinner, PublicationListComponent], providers: [SearchPublicationsService] }) export class SearchPublicationsComponent { private searchPublicationsService = inject(SearchPublicationsService); private activatedRoute = inject(ActivatedRoute); publications = this.searchPublicationsService.publications; isLoading = this.searchPublicationsService.isLoading; isLoaded = this.searchPublicationsService.isLoaded; constructor() { const queryParams = toSignal(this.activatedRoute.queryParamMap); effect(() => { let params = queryParams(); if (params) { const categoryId = params.get('category-id'); if (categoryId) { this.searchPublicationsService.loadPublications(`category_id=${categoryId}`); } const query = params.get('query') if (query) { this.searchPublicationsService.loadPublications(query); } } }); } }