diff --git a/src/app/page.tsx b/src/app/page.tsx index dde3d73a..c0e9b6de 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -37,10 +37,11 @@ export default async function HomePage() { itemsPerRequest={LARGE_PHOTOS_TO_SHOW} getNextComponent={async (offset, limit) => { 'use server'; - // console.log('Getting next component', { offset, limit }); const photos = await getPhotosCached({ limit: offset + limit }); - const nextPhotos = photos.slice(-limit); - console.log(`Sending ${nextPhotos.length} photos`); + console.log(photos.length); + const nextPhotos = photos.slice(offset); + console.log('Getting next component', { offset, limit }); + console.log(`Sending: ${nextPhotos.map(p => p.id).join(', ')}`); return { nextComponent: , isFinished: offset + limit >= count, diff --git a/src/components/MoreComponents.tsx b/src/components/MoreComponents.tsx index acb2d547..1a80856c 100644 --- a/src/components/MoreComponents.tsx +++ b/src/components/MoreComponents.tsx @@ -35,16 +35,21 @@ export default function MoreComponents({ if ( !isLoading && // (lastIndexToLoad === undefined || indexToLoad <= lastIndexToLoad) && + // indexToLoad >= 1 && indexToLoad > indexToView && indexToLoad > indexLoaded ) { setIsLoading(true); getNextComponent( - initialOffset + indexToLoad * itemsPerRequest, + initialOffset + (indexToLoad - 1) * itemsPerRequest, itemsPerRequest, ) .then(({ nextComponent, isFinished }) => { - setComponents(current => [...current, nextComponent]); + setComponents(current => { + const updatedComponents = [...current]; + updatedComponents[indexToLoad] = nextComponent; + return updatedComponents; + }); setIndexLoaded(indexToLoad); if (isFinished) { setLastIndexToLoad(indexToLoad); @@ -89,10 +94,17 @@ export default function MoreComponents({ } }, [triggerOnView, advance]); - console.log({ indexToLoad, indexToView, indexLoaded, lastIndexToLoad }); + // console.log({ + // indexToLoad, + // indexToView, + // // indexLoaded, + // lastIndexToLoad, + // componentsLength: components.length, + // componentsToView: components.slice(0, indexToView + 1).length, + // }); return <> - {components.slice(0, indexToView)} + {components.slice(0, indexToView + 1)} {indexToView < indexLoaded &&