Skip to content
Snippets Groups Projects
app.component.ts 2.41 KiB
Newer Older
import {Component, HostListener, Inject} from '@angular/core';
import {AuthService} from "./services/auth.service";
import {StorageService} from "./services/storage.service";
import {ActivatedRoute, Router} from "@angular/router";
import {AlertService} from "./services/alert.service";
import {
  faCheckSquare,
  faClone,
  faCube,
  faHome,
  faList,
  faMoon,
  faSignInAlt,
  faSignOutAlt,
  faSlidersH,
  faStream,
  faSun,
  faToggleOn
} from "@fortawesome/free-solid-svg-icons";
import {DOCUMENT} from "@angular/common";

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {

  public faHome = faHome;
  public faClone = faClone;
  public faStream = faStream;
  public faSlidersH = faSlidersH;
  public faSignInAlt = faSignInAlt;
  public faSignOutAlt = faSignOutAlt;
  public faCube = faCube;
  public faList = faList;
  public faCheckSquare = faCheckSquare;
  public faSun = faSun;
  public faMoon = faMoon;
  public faToggleOn = faToggleOn;

  public darkMode = false;

  constructor(
    private authService: AuthService,
    private storageService: StorageService,
    private router: Router,
    private route: ActivatedRoute,
    private alertService: AlertService,
    @Inject(DOCUMENT) document
  ) {
    /*
    this.route.queryParams.subscribe(params => {
      if (params.hasOwnProperty('ticket')) {
        console.log(params.ticket);
        if (this.authService.logIn(decodeURIComponent(params.ticket))) {
          this.alertService.success('You are logged in.');
        } else {
          this.alertService.error('Login failed');
        }
      }
    });
     */

    const dm = this.storageService.getLocal('darkmode');
    this.darkMode = (dm === 'true');
  }

  @HostListener('window:scroll', ['$event'])
  onWindowScroll(e) {
    let stickyNav = document.getElementById('sticky_nav');
    if (window.pageYOffset > 100) {
      stickyNav.classList.add('sticky');
    } else {
      stickyNav.classList.remove('sticky');
    }
  }

  isLoggedIn(): boolean {
    return this.authService.isAuthenticated();
  }

  signIn(): void {
    this.authService.signIn();
  }

  signOut(): void {
    this.alertService.success('You are logged out.');
    this.storageService.deleteLocal('jwt');
    this.router.navigate(['/']);
  }

  setDarkMode(dm: boolean): void {
    this.darkMode = dm;
    this.storageService.saveLocal('darkmode', dm.toString());
  }

}