All files / src/app/layout/menu menu.component.ts

85.36% Statements 35/41
100% Branches 6/6
72.72% Functions 16/22
96.55% Lines 28/29

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 782x 2x 2x 2x 2x 2x 2x 2x 2x 2x                 4x   8x 8x       8x 8x 8x 8x       84x       42x               2x         2x   11x     2x           1x       1x       2x     1x 1x          
import { Component, OnDestroy, OnInit } from '@angular/core';
import { AsyncPipe, CommonModule } from '@angular/common';
import { MatToolbarModule } from '@angular/material/toolbar';
import { SessionService } from '@core/services/session.service';
import { catchError, filter, Observable, Subject, takeUntil, throwError } from 'rxjs';
import { NavigationEnd, NavigationSkipped, Router, RouterLink } from '@angular/router';
import { MatIconModule } from '@angular/material/icon';
import { LocaleService } from '@core/services/locale.service';
import { MatMenu, MatMenuModule } from '@angular/material/menu';
import { AuthService } from '@core/services/auth.service';
 
@Component({
  selector: 'app-menu',
  standalone: true,
  imports: [MatToolbarModule, MatMenu, MatMenuModule, MatIconModule, AsyncPipe, RouterLink, CommonModule],
  templateUrl: './menu.component.html',
  styleUrl: './menu.component.scss'
})
export class MenuComponent implements OnInit, OnDestroy {
 
  private destroy$: Subject<boolean> = new Subject<boolean>();
  public menuOpen: boolean = false;
  
 
  constructor(
    private sessionService: SessionService,
    private authService: AuthService,
    private router: Router,
    private localeService: LocaleService
  ) {}
 
  get lang() {
    return this.localeService.currentLocale;
  }
  
  public $isLogged(): Observable<boolean> {
    return this.sessionService.$isLogged();
  }
 
  public openNav() :void {
    this.menuOpen = true;
  }
 
  public closeNav() :void {
    this.menuOpen = false;
  }
 
  ngOnInit(): void {
 
    this.router.events.pipe(
      takeUntil(this.destroy$),
      filter(event => event instanceof NavigationEnd || event instanceof NavigationSkipped)
    )
      .subscribe(() => {
        this.closeNav();
    });
  }
 
  public ngOnDestroy(): void {
    // emit to Subject to unsubscribe from observables
    this.destroy$.next(true);
  }
 
  public changeLang(lang: 'fr' | 'en'): void {
    this.localeService.changeLocale(lang);
  }
 
  public logout(): void {
    this.authService.logout()
        .subscribe(
          () => {
            this.sessionService.logOut();
            this.router.navigate([''])
          }
        )
  }
}