import { Component, OnDestroy } from '@angular/core'; import { Subscription } from 'rxjs' import {State, LocaleService, LocaleSubject} from '../../web'; @Component({ selector: 'cory-mat-http-404', template: ` <div style="margin-top: 20px; font-size: 6em; opacity: 0.25;"> 404 </div> <div style="font-size: 3em; opacity: 0.75;"> {{ i18n.material.http['404'] }} </div> <div style="text-overflow: ellipsis; overflow: hidden;"> {{ url }} </div> `, }) export class Http404 implements OnDestroy { url: string; i18n: any; letKeep404: any; timeout: any; subscriptions$: Array<Subscription> = [] constructor( public locale: LocaleService ) { history.replaceState({}, State.RequestPath, State.RequestPath); const its404 = () => { State.NotFound = true; window.corifeus.core.http.status = 404; } let maxWait = 10000; let waiter = 0; this.letKeep404 = setInterval(() => { its404(); if (window.corifeus.core.http.counter === 0) { waiter++; if (waiter > 10) { clearInterval(this.letKeep404); } } }, 100) this.timeout = setTimeout(() => { clearInterval(this.letKeep404); its404(); }, maxWait); this.subscriptions$.push( this.locale.subscribe((data: LocaleSubject) => { this.i18n = data.locale.data; }) ) this.url = State.RequestPath } ngOnDestroy() { this.subscriptions$.forEach(subs$ => subs$.unsubscribe()) clearInterval(this.letKeep404); clearTimeout(this.timeout) } }