From b51e5b74019bcd67d9adafd48c0cd79affe84892 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Fri, 8 Oct 2021 15:59:05 +0200 Subject: [PATCH] Correctly disable infinite scroll for reuse --- client/src/app/core/routing/custom-reuse-strategy.ts | 12 +++++++----- .../angular/infinite-scroller.directive.ts | 3 ++- .../videos-list.component.html | 3 ++- .../videos-selection.component.html | 3 ++- 4 files changed, 13 insertions(+), 8 deletions(-) diff --git a/client/src/app/core/routing/custom-reuse-strategy.ts b/client/src/app/core/routing/custom-reuse-strategy.ts index 3000093a8..1498e221f 100644 --- a/client/src/app/core/routing/custom-reuse-strategy.ts +++ b/client/src/app/core/routing/custom-reuse-strategy.ts @@ -1,7 +1,7 @@ -import { Injectable } from '@angular/core' +import { ComponentRef, Injectable } from '@angular/core' import { ActivatedRouteSnapshot, DetachedRouteHandle, RouteReuseStrategy } from '@angular/router' -import { RouterSetting } from './' -import { PeerTubeRouterService } from './peertube-router.service' +import { DisableForReuseHook } from './disable-for-reuse-hook' +import { PeerTubeRouterService, RouterSetting } from './peertube-router.service' @Injectable() export class CustomReuseStrategy implements RouteReuseStrategy { @@ -22,9 +22,11 @@ export class CustomReuseStrategy implements RouteReuseStrategy { const key = this.generateKey(route) this.recentlyUsed = key - console.log('Storing component %s to reuse later.', key); + console.log('Storing component %s to reuse later.', key) - (handle as any).componentRef.instance.disableForReuse() + const componentRef = (handle as any).componentRef as ComponentRef + componentRef.instance.disableForReuse() + componentRef.changeDetectorRef.detectChanges() this.storedRouteHandles.set(key, handle) diff --git a/client/src/app/shared/shared-main/angular/infinite-scroller.directive.ts b/client/src/app/shared/shared-main/angular/infinite-scroller.directive.ts index bebc6efa7..c247cfde2 100644 --- a/client/src/app/shared/shared-main/angular/infinite-scroller.directive.ts +++ b/client/src/app/shared/shared-main/angular/infinite-scroller.directive.ts @@ -13,6 +13,7 @@ export class InfiniteScrollerDirective implements OnInit, OnDestroy, AfterViewCh // Add angular state in query params to reuse the routed component @Input() setAngularState: boolean + @Input() parentDisabled = false @Output() nearOfBottom = new EventEmitter() @@ -74,7 +75,7 @@ export class InfiniteScrollerDirective implements OnInit, OnDestroy, AfterViewCh filter(({ current, maximumScroll }) => (current / maximumScroll) > this.decimalLimit) ) .subscribe(() => { - if (this.setAngularState) this.setScrollRouteParams() + if (this.setAngularState && !this.parentDisabled) this.setScrollRouteParams() this.nearOfBottom.emit() }) diff --git a/client/src/app/shared/shared-video-miniature/videos-list.component.html b/client/src/app/shared/shared-video-miniature/videos-list.component.html index 67933f177..2b554517f 100644 --- a/client/src/app/shared/shared-video-miniature/videos-list.component.html +++ b/client/src/app/shared/shared-video-miniature/videos-list.component.html @@ -40,7 +40,8 @@
No results.
diff --git a/client/src/app/shared/shared-video-miniature/videos-selection.component.html b/client/src/app/shared/shared-video-miniature/videos-selection.component.html index f2af874dd..6ea2661e4 100644 --- a/client/src/app/shared/shared-video-miniature/videos-selection.component.html +++ b/client/src/app/shared/shared-video-miniature/videos-selection.component.html @@ -2,7 +2,8 @@