import { Injectable } from '@angular/core'; import { TermsOfServiceModalComponent } from '@core/components/terms-of-service/terms-of-service-modal.component'; import { Applicant } from '@core/typings/applicant.typing'; import { User } from '@core/typings/client-user.typing'; import { UserService } from '@features/users/user.service'; import { ModalFactory } from '@yourcause/common/modals'; import { PortalDeterminationService } from './portal-determination.service'; import { TokenService } from './token/token.service'; @Injectable({ providedIn: 'root' }) export class UserTosService { constructor ( private userService: UserService, private modalFactory: ModalFactory, private tokenService: TokenService, private portal: PortalDeterminationService ) { } async ensureTermsOfServiceAccepted () { if (this.portal.isPlatform) { return true; } const user: Applicant|User = this.userService.currentUser; if (user && !user.acceptedTermsOfService) { const accepted = await this.modalFactory.open( TermsOfServiceModalComponent, {}, { keyboard: false, class: 'modal-md' } ); if (!accepted) { this.tokenService.logout(); } return accepted; } else { return true; } } }