import { Component, OnInit, ViewChild, ViewEncapsulation } from '@angular/core'; import { Router } from '@angular/router'; import { BannerService } from '@core/services/banner.service'; import { PortalDeterminationService } from '@core/services/portal-determination.service'; import { SpinnerService } from '@core/services/spinner.service'; import { SSOService } from '@core/services/sso.service'; import { AuthBehaviors } from '@core/services/token/token-behaviors'; import { TokenService } from '@core/services/token/token.service'; import { ClientSettingsService } from '@features/client-settings/client-settings.service'; import { SupportService } from '@features/support/support.service'; import { Tab } from '@yourcause/common'; import { TabsetComponent } from 'ngx-bootstrap/tabs'; import { Observable } from 'rxjs'; @Component({ selector: 'gc-login-tabs', templateUrl: './login-tabs-wrapper.component.html', styleUrls: ['./login-tabs-wrapper.component.scss'], encapsulation: ViewEncapsulation.None }) export class LoginTabsWrapperComponent implements OnInit { @ViewChild('staticTabs') staticTabs: TabsetComponent; langKeys = this.clientSettingsService.langKeys; loggedIn$: Observable; signupTabVisible = this.portal.isApply; tabs: Tab[] = [{ link: this.portal.isApply ? '/apply/auth/signin' : '/management/auth/signin', labelKey: 'AUTH:textSignIn', label: 'Sign in', activeRoutes: ['forgot', 'resend-verification', 'confirm-email', 'verification-code'] }, { link: '/apply/auth/signup', hidden: !this.signupTabVisible, labelKey: 'GLOBAL:hdrSignUp', label: 'Sign up', activeRoutes: [] }]; liveChatData$ = this.supportService.changesTo$('liveChatData'); constructor ( private spinnerService: SpinnerService, private router: Router, private ssoService: SSOService, private portal: PortalDeterminationService, private tokenService: TokenService, private authBehaviors: AuthBehaviors, private supportService: SupportService, private clientSettingsService: ClientSettingsService, private bannerService: BannerService ) { } get banners () { return this.bannerService.banners; } get isManager () { return this.portal.isManager; } get isMobileResponsive () { return this.portal.isApply; } async ngOnInit () { const prefix = this.portal.getCurrentPrefix(); this.bannerService.setLoginBanners(); if (this.tokenService.getIsLoggedIn()) { this.router.navigateByUrl( this.authBehaviors.current.postLoginRedirect ); return; } if (prefix && prefix !== 'apply') { this.spinnerService.startSpinner(); await this.ssoService.handleSubDomainOnLoginPage(prefix); this.spinnerService.stopSpinner(); } } openLiveChat () { return this.supportService.openLiveChat(); } async openSupportEmailModal () { return this.supportService.openSupportEmailModal(); } }