Files
listify/listify-client/src/app/app.ts
Bastian Wagner 8f3806d398 Onboarding
2026-06-09 13:07:07 +02:00

56 lines
1.7 KiB
TypeScript

import { Component, OnInit, inject, signal } from '@angular/core';
import { BreakpointObserver } from '@angular/cdk/layout';
import { toSignal } from '@angular/core/rxjs-interop';
import { RouterLink, RouterLinkActive, RouterOutlet } from '@angular/router';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatListModule } from '@angular/material/list';
import { MatSidenavModule } from '@angular/material/sidenav';
import { MatToolbarModule } from '@angular/material/toolbar';
import { map } from 'rxjs';
import { AuthService } from './auth/auth.service';
import { OnboardingOverlayComponent } from './onboarding/onboarding-overlay.component';
@Component({
selector: 'app-root',
imports: [
RouterOutlet,
RouterLink,
RouterLinkActive,
MatButtonModule,
MatIconModule,
MatListModule,
MatSidenavModule,
MatToolbarModule,
OnboardingOverlayComponent,
],
templateUrl: './app.html',
styleUrl: './app.scss'
})
export class App implements OnInit {
protected readonly auth = inject(AuthService);
private readonly breakpointObserver = inject(BreakpointObserver);
protected readonly isCompact = toSignal(
this.breakpointObserver.observe('(max-width: 800px)').pipe(map((state) => state.matches)),
{ initialValue: false },
);
protected readonly sidebarOpened = signal(false);
ngOnInit(): void {
if (this.auth.isAuthenticated()) {
this.auth.loadCurrentUser().subscribe({ error: () => undefined });
}
}
protected toggleSidebar(): void {
this.sidebarOpened.update((opened) => !opened);
}
protected closeSidebarOnCompact(): void {
if (this.isCompact()) {
this.sidebarOpened.set(false);
}
}
}