import { Injectable } from '@angular/core'; import { Resolve } from '@angular/router'; import { SupportService } from '@features/support/support.service'; import { Pause } from '@yourcause/common'; @Injectable({ providedIn: 'root' }) export class ZendeskResolver implements Resolve { ready = false; maxAttemptsForZendesk = 10; attemptsForZendesk = 0; constructor ( private supportService: SupportService ) { } async resolve () { const promise = await this.zendeskPromise(); this.supportService.setZendeskStatus(); return promise; } checkForZendesk () { return this.supportService.$zopim?.livechat?.departments?.getDepartment('GrantsConnect') ?? false; } async zendeskPromise () { while (!this.ready && this.attemptsForZendesk !== this.maxAttemptsForZendesk) { this.ready = this.checkForZendesk(); await Pause(100); ++this.attemptsForZendesk; } return true; } }