import {Component, OnInit, ViewChild} from "@angular/core"; import {Repository} from "../../models/Repository"; import {RepositoryService} from "../../services/repository/repository.service"; import {MatTabChangeEvent, MatTabGroup} from "@angular/material/tabs"; import {TagService} from "../../services/tag/tag.service"; import {TabService} from "../../services/tab/tab.service"; @Component({ selector: "app-core", templateUrl: "./core.component.html", styleUrls: ["./core.component.scss"] }) export class CoreComponent implements OnInit { public selectedRepository: Repository | undefined; @ViewChild("tabGroup") tabGroup!: MatTabGroup; constructor( private tabService: TabService, private repoService: RepositoryService, private tagService: TagService) { } public async ngOnInit(): Promise { this.selectedRepository = this.repoService.selectedRepository.getValue(); this.repoService.selectedRepository.subscribe(async (selected) => { this.selectedRepository = selected; this.updateSelectedTab(); await this.loadRepoData(); }); } public updateSelectedTab() { if (!this.tabGroup) { return; } if (!this.selectedRepository) { this.tabGroup.selectedIndex = 0; } else if (this.tabGroup.selectedIndex === 0) { this.tabGroup.selectedIndex = 1; } } async loadRepoData() { await this.tagService.loadTags(); } public onTabSelectionChange(event: MatTabChangeEvent): void { this.tabService.setSelectedTab(event.index); } }