From 50cd5f55edd85d62d02397bb87b3465a305e6e7a Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Mon, 5 Oct 2020 14:21:14 +0200 Subject: [PATCH 1/2] Update pre-loader.service.ts --- src/app/services/pre-loader.service.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/app/services/pre-loader.service.ts b/src/app/services/pre-loader.service.ts index 801df11c..fd255e3d 100644 --- a/src/app/services/pre-loader.service.ts +++ b/src/app/services/pre-loader.service.ts @@ -1,11 +1,11 @@ import { HttpClient } from "@angular/common/http"; -import { Injectable } from '@angular/core'; +import { Injectable } from "@angular/core"; import { Page } from "../../models/page"; -import { Observable, of } from "rxjs" -import { map } from "rxjs/operators" +import { Observable, of } from "rxjs"; +import { map } from "rxjs/operators"; @Injectable({ - providedIn: 'root' + providedIn: "root" }) export class PreLoaderService { @@ -15,7 +15,7 @@ export class PreLoaderService load(route: string): Observable { - let loaded = this.cache.find(x => x[0] == route); + let loaded = this.cache.find(x => x[0] === route); if (loaded != null) return of(loaded[1]); return this.http.get>(route).pipe(map(newData => From 3338be9e24dfca9569125d9e38912a8e23a0a6f8 Mon Sep 17 00:00:00 2001 From: Zoe Roux Date: Tue, 6 Oct 2020 12:43:24 +0200 Subject: [PATCH 2/2] Update page.ts --- src/models/page.ts | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/models/page.ts b/src/models/page.ts index 550fc328..8487bd31 100644 --- a/src/models/page.ts +++ b/src/models/page.ts @@ -2,11 +2,12 @@ import {HttpClient} from "@angular/common/http"; export class Page { - this: string - next: string - first: string - count: number - items: T[] + this: string; + next: string; + first: string; + count: number; + items: T[]; + private _isLoading: boolean = false; constructor(init?:Partial>) { @@ -15,17 +16,20 @@ export class Page loadNext(client: HttpClient) { - if (this.next == null) + if (this.next == null || this._isLoading) return; + this._isLoading = true; client.get>(this.next).subscribe(x => { this.items.push(...x.items); this.count += x.count; this.next = x.next; this.this = x.this; + this._isLoading = false; }); } + changeType(type: string) { return this.first.replace(/\/\w*($|\?)/, `/${type}$1`)