From 5a9bc6d2bf7c2f3e262585008581016442512934 Mon Sep 17 00:00:00 2001 From: ManishMadan2882 Date: Thu, 4 Sep 2025 08:35:41 +0530 Subject: [PATCH] (feat:connector) infinite scroll file pick --- frontend/src/upload/Upload.tsx | 44 +++++++++++++++++++--------------- 1 file changed, 25 insertions(+), 19 deletions(-) diff --git a/frontend/src/upload/Upload.tsx b/frontend/src/upload/Upload.tsx index a014bc21..46a36f4c 100644 --- a/frontend/src/upload/Upload.tsx +++ b/frontend/src/upload/Upload.tsx @@ -1045,34 +1045,16 @@ function Upload({
- {hasMoreFiles && !isLoadingFiles && ( - - )} {isLoadingFiles && (
Loading more files...
)} -{!hasMoreFiles && !isLoadingFiles && ( + {!hasMoreFiles && !isLoadingFiles && ( All files loaded )}
- - )} @@ -1137,6 +1119,30 @@ function Upload({ ); } + useEffect(() => { + const scrollContainer = scrollContainerRef.current; + + const handleScroll = () => { + if (!scrollContainer) return; + + const { scrollTop, scrollHeight, clientHeight } = scrollContainer; + const isNearBottom = scrollHeight - scrollTop - clientHeight < 50; + + if (isNearBottom && hasMoreFiles && !isLoadingFiles && nextPageToken) { + const sessionToken = getSessionToken(ingestor.type); + if (sessionToken) { + loadGoogleDriveFiles(sessionToken, currentFolderId, nextPageToken, true); + } + } + }; + + scrollContainer?.addEventListener('scroll', handleScroll); + + return () => { + scrollContainer?.removeEventListener('scroll', handleScroll); + }; + }, [hasMoreFiles, isLoadingFiles, nextPageToken, currentFolderId, ingestor.type]); + return (