|
|
@@ -58,6 +58,7 @@ const VideoSelectModal: React.FC<VideoSelectModalProps> = ({ visible, onClose, o
|
|
|
const observerRef = useRef<IntersectionObserver | null>(null);
|
|
|
const pageObserverRef = useRef<IntersectionObserver | null>(null);
|
|
|
const passedPagesRef = useRef<Set<number>>(new Set());
|
|
|
+ const basePageRef = useRef(1);
|
|
|
const drawerBodyRef = useRef<HTMLElement | null>(null);
|
|
|
const loadingMoreRef = useRef(false);
|
|
|
const hasMoreRef = useRef(true);
|
|
|
@@ -156,8 +157,8 @@ const VideoSelectModal: React.FC<VideoSelectModalProps> = ({ visible, onClose, o
|
|
|
}
|
|
|
});
|
|
|
const passed = passedPagesRef.current;
|
|
|
- const max = passed.size > 0 ? Math.max(...Array.from(passed)) : 1;
|
|
|
- setViewingPage(prev => prev === max ? prev : max);
|
|
|
+ const next = passed.size > 0 ? Math.max(...Array.from(passed)) : basePageRef.current;
|
|
|
+ setViewingPage(prev => prev === next ? prev : next);
|
|
|
}, { root: body, threshold: [0, 1] });
|
|
|
}, []);
|
|
|
|
|
|
@@ -171,6 +172,8 @@ const VideoSelectModal: React.FC<VideoSelectModalProps> = ({ visible, onClose, o
|
|
|
}, [ensureObserver]);
|
|
|
|
|
|
useEffect(() => {
|
|
|
+ const pages = Array.from(pageAnchors.values());
|
|
|
+ basePageRef.current = pages.length > 0 ? Math.min(...pages) : 1;
|
|
|
const obs = pageObserverRef.current;
|
|
|
const body = drawerBodyRef.current;
|
|
|
if (!obs || !body) return;
|
|
|
@@ -274,6 +277,7 @@ const VideoSelectModal: React.FC<VideoSelectModalProps> = ({ visible, onClose, o
|
|
|
{total > PAGE_SIZE && (
|
|
|
<Pagination
|
|
|
simple
|
|
|
+ showSizeChanger={false}
|
|
|
current={viewingPage}
|
|
|
total={total}
|
|
|
pageSize={PAGE_SIZE}
|