48 lines
1.9 KiB
TypeScript
48 lines
1.9 KiB
TypeScript
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<Publication[]> {
|
|
return this.searchPublicationsService.publications$;
|
|
}
|
|
|
|
get isLoading$(): Observable<boolean> {
|
|
return this.searchPublicationsService.isLoading$;
|
|
}
|
|
|
|
get isLoaded$(): Observable<boolean> {
|
|
return this.searchPublicationsService.isLoaded$;
|
|
}
|
|
} |