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:
Lorenz Hilpert
2025-04-07 18:53:12 +02:00
parent 492dae14f7
commit c1a40ae82f

View File

@@ -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();
}
});
});