fix(web): timeline renders nothing with an invalid asset scroll target (#16994)

* fix(web): fix asset grid showing nothing with an invalid asset target

* Deduplicate

* Scroll to position where appropriate

* a bit cleaner

* fix: lint

---------

Co-authored-by: Min Idzelis <min123@gmail.com>
Co-authored-by: Alex <alex.tran1502@gmail.com>
This commit is contained in:
Snowknight26 2025-03-21 08:40:57 -05:00 committed by GitHub
parent 3c87341902
commit b00da18e84
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -82,26 +82,33 @@
let bottomSectionHeight = 60;
let leadout = $state(false);
const scrollTo = (top: number) => {
element?.scrollTo({ top });
showSkeleton = false;
};
const scrollToTop = () => {
scrollTo(0);
};
const completeNav = async () => {
if ($gridScrollTarget?.at) {
const scrollTarget = $gridScrollTarget?.at;
if (scrollTarget) {
try {
const bucket = await assetStore.findBucketForAsset($gridScrollTarget.at);
const bucket = await assetStore.findBucketForAsset(scrollTarget);
if (bucket) {
const height = bucket.findAssetAbsolutePosition($gridScrollTarget.at);
const height = bucket.findAssetAbsolutePosition(scrollTarget);
if (height) {
element?.scrollTo({ top: height });
showSkeleton = false;
scrollTo(height);
assetStore.updateIntersections();
return;
}
}
} catch {
element?.scrollTo({ top: 0 });
showSkeleton = false;
// ignore errors - asset may not be in the store
}
} else {
element?.scrollTo({ top: 0 });
showSkeleton = false;
}
scrollToTop();
};
beforeNavigate(() => (assetStore.suspendTransitions = true));
afterNavigate((nav) => {
@ -134,8 +141,7 @@
{ replaceState: true, forceNavigate: true },
);
} else {
element?.scrollTo({ top: 0 });
showSkeleton = false;
scrollToTop();
}
}, 500);
}