blob: 019b308b4e9659587d6b015d20da624538a73f9b [file]
import { Component, OnInit, inject, signal } from '@angular/core';
import { MatToolbarModule } from '@angular/material/toolbar';
import { MatButtonModule } from '@angular/material/button';
import { MatIconModule } from '@angular/material/icon';
import { MatMenuModule } from '@angular/material/menu';
import { MatTooltipModule } from '@angular/material/tooltip';
import { RouterLink } from '@angular/router';
import { GatewayService } from '../gateway/gateway.service';
import { ThemeService } from '../theme/theme.service';
// TODO(b/514573802): Update the link to show the new Pinpoint documentation.
export const DOCUMENTATION_URL =
'https://chromium.googlesource.com/catapult/+/HEAD/dashboard/dashboard/pinpoint/README.md';
export const BUG_REPORT_URL =
'https://b.corp.google.com/issues/new?component=1970595&template=2325183';
@Component({
selector: 'app-header',
standalone: true,
imports: [
MatToolbarModule,
MatButtonModule,
MatIconModule,
MatMenuModule,
RouterLink,
MatTooltipModule,
],
templateUrl: './header.component.html',
styleUrls: ['./header.component.css'],
})
export class HeaderComponent implements OnInit {
private gatewayService = inject(GatewayService);
private themeService = inject(ThemeService);
userEmail = signal<string>('Loading...');
isDarkMode = this.themeService.isDarkMode;
ngOnInit() {
this.loadUserInfo();
}
toggleTheme() {
this.themeService.toggleTheme();
}
private async loadUserInfo() {
try {
const res = await this.gatewayService.GetUserInfo({});
this.userEmail.set(res.email || 'Unknown user');
} catch (err) {
console.error('Failed to load user info:', err);
this.userEmail.set('Error loading user');
}
}
onHelpClick() {
window.open(DOCUMENTATION_URL, '_blank');
}
onBugClick() {
window.open(BUG_REPORT_URL, '_blank');
}
onSignOutClick() {
const redirectUrl = encodeURIComponent(window.location.origin);
this.redirect(`/logout/?redirect=${redirectUrl}`);
}
redirect(url: string) {
window.location.href = url;
}
}