import {Component, OnInit} from '@angular/core'; import * as FA from '@fortawesome/free-solid-svg-icons'; import {UntilDestroy, untilDestroyed} from '@ngneat/until-destroy'; import {Route} from '@shared/models/route.enum'; import {Store} from '@ngxs/store'; import {Router} from '@angular/router'; import {ChangePentest} from '@shared/stores/project-state/project-state.actions'; import {BehaviorSubject} from 'rxjs'; import {PentestStatus} from '@shared/models/pentest-status.model'; import {ProjectState} from '@shared/stores/project-state/project-state'; import {Project} from '@shared/models/project.model'; import {Pentest} from '@shared/models/pentest.model'; @UntilDestroy() @Component({ selector: 'app-pentest-header', templateUrl: './pentest-header.component.html', styleUrls: ['./pentest-header.component.scss'] }) export class PentestHeaderComponent implements OnInit { // HTML only readonly fa = FA; pentest$: BehaviorSubject = new BehaviorSubject(null); selectedProjectTitle$: BehaviorSubject = new BehaviorSubject(''); constructor(private store: Store, private readonly router: Router) { } ngOnInit(): void { this.store.select(ProjectState.project).pipe( untilDestroyed(this) ).subscribe({ next: (selectedProject: Project) => { this.selectedProjectTitle$.next(selectedProject?.title); }, error: err => { console.error(err); } }); this.store.select(ProjectState.pentest).pipe( untilDestroyed(this) ).subscribe({ next: (selectedPentest: Pentest) => { this.pentest$.next(selectedPentest); }, error: err => { console.error(err); } }); } onClickRouteBack(): void { // ToDo: Change to Objective Overview after routing is fixed this.router.navigate([Route.PROJECT_OVERVIEW]) .then( () => { this.store.dispatch(new ChangePentest(null)); } ).finally(); } }