Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | 1x 4x 4x 2x 2x 1x 1x 1x | import { HttpEvent, HttpHandler, HttpInterceptor, HttpRequest } from '@angular/common/http';
import { inject, Injectable } from '@angular/core';
import { Router } from '@angular/router';
import { NEVER, Observable } from 'rxjs';
import { NAVIGATOR } from '../providers/navigator.provider';
/**
* PWA offline interceptor.
* Redirects to a dedicated view when the app goes offline.
*/
@Injectable({
providedIn: 'root',
})
export class AppPwaOfflineInterceptor implements HttpInterceptor {
private readonly navigator = inject(NAVIGATOR);
private readonly router = inject(Router);
public intercept(req: HttpRequest<unknown>, next: HttpHandler): Observable<HttpEvent<unknown>> {
const routeLoaded = this.router.url.includes('offline');
if (!this.navigator.onLine && !routeLoaded) {
void this.router.navigateByUrl('/offline');
return NEVER;
}
return next.handle(req);
}
}
|