mirror of
https://dev.azure.com/hugendubel/ISA/_git/ISA-Frontend
synced 2025-12-28 22:42:11 +01:00
Refactored scroll position restoration logic for improved clarity.
- 🛠️ **Refactor**: Simplified storeScrollPosition function and event handling - 🛠️ **Refactor**: Removed redundant code for scroll position storage
This commit is contained in:
@@ -1,12 +1,6 @@
|
||||
import { ViewportScroller } from '@angular/common';
|
||||
import { DOCUMENT, ViewportScroller } from '@angular/common';
|
||||
import { takeUntilDestroyed } from '@angular/core/rxjs-interop';
|
||||
import {
|
||||
afterRender,
|
||||
EnvironmentProviders,
|
||||
inject,
|
||||
Injector,
|
||||
provideEnvironmentInitializer,
|
||||
} from '@angular/core';
|
||||
import { EnvironmentProviders, inject, provideEnvironmentInitializer } from '@angular/core';
|
||||
import { ActivatedRoute, NavigationStart, Router } from '@angular/router';
|
||||
import { SessionStorageProvider } from '@isa/core/storage';
|
||||
|
||||
@@ -30,14 +24,24 @@ export function provideScrollPositionRestoration(): EnvironmentProviders {
|
||||
const viewportScroller = inject(ViewportScroller);
|
||||
const sessionStorage = inject(SessionStorageProvider);
|
||||
|
||||
function storeScrollPosition() {
|
||||
const url = router.url;
|
||||
const route = getDeepestActivatedRoute(router.routerState.root);
|
||||
|
||||
if (route.snapshot.data?.['scrollPositionRestoration']) {
|
||||
sessionStorage.set(url, viewportScroller.getScrollPosition());
|
||||
}
|
||||
}
|
||||
|
||||
if (window) {
|
||||
window.addEventListener('beforeunload', () => {
|
||||
storeScrollPosition();
|
||||
});
|
||||
}
|
||||
|
||||
router.events.pipe(takeUntilDestroyed()).subscribe((event) => {
|
||||
if (event instanceof NavigationStart) {
|
||||
const url = router.url;
|
||||
const route = getDeepestActivatedRoute(router.routerState.root);
|
||||
|
||||
if (route.snapshot.data?.['scrollPositionRestoration']) {
|
||||
sessionStorage.set(url, viewportScroller.getScrollPosition());
|
||||
}
|
||||
storeScrollPosition();
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user