فهرست منبع

remove PER_PAGE from RecentChangesSubstance

nHigashiWeseek 1 سال پیش
والد
کامیت
557dd2c163

+ 4 - 6
apps/app/src/client/components/Sidebar/RecentChanges/RecentChangesSubstance.tsx

@@ -151,13 +151,12 @@ type HeaderProps = {
   onWipPageShownChange: () => void,
 }
 
-const PER_PAGE = 20;
 export const RecentChangesHeader = ({
   isSmall, onSizeChange, isWipPageShown, onWipPageShownChange,
 }: HeaderProps): JSX.Element => {
   const { t } = useTranslation();
 
-  const { mutate } = useSWRINFxRecentlyUpdated(PER_PAGE, isWipPageShown, { suspense: true });
+  const { mutate } = useSWRINFxRecentlyUpdated(isWipPageShown, { suspense: true });
 
   const retrieveSizePreferenceFromLocalStorage = useCallback(() => {
     if (window.localStorage.isRecentChangesSidebarSmall === 'true') {
@@ -232,14 +231,13 @@ type ContentProps = {
 }
 
 export const RecentChangesContent = ({ isSmall, isWipPageShown }: ContentProps): JSX.Element => {
-  const swrInifinitexRecentlyUpdated = useSWRINFxRecentlyUpdated(PER_PAGE, isWipPageShown, { suspense: true });
+  const swrInifinitexRecentlyUpdated = useSWRINFxRecentlyUpdated(isWipPageShown, { suspense: true });
   const { data } = swrInifinitexRecentlyUpdated;
 
   const { pushState } = useKeywordManager();
-
   const isEmpty = data?.[0]?.pages.length === 0;
-  const isReachingEnd = isEmpty || (data != null && data[data.length - 1]?.pages.length < PER_PAGE);
-
+  const lastPageIndex = data?.length ? data.length - 1 : 0;
+  const isReachingEnd = isEmpty || (data != null && lastPageIndex > 0 && data[lastPageIndex]?.pages.length < data[lastPageIndex - 1]?.pages.length);
   return (
     <div className="grw-recent-changes">
       <ul className="list-group list-group-flush">

+ 5 - 5
apps/app/src/stores/page-listing.tsx

@@ -39,25 +39,25 @@ export const getRecentlyUpdatedKey = (
     pageIndex: number,
     previousPageData: RecentApiResult | null,
     includeWipPage?: boolean,
-): [string, number | undefined, number | undefined, boolean | undefined] | null => {
+): [string, number | undefined, boolean | undefined] | null => {
   if (previousPageData != null && previousPageData.pages.length === 0) return null;
 
   if (pageIndex === 0 || previousPageData == null) {
-    return ['/pages/recent', undefined, undefined, includeWipPage];
+    return ['/pages/recent', undefined, includeWipPage];
   }
   const offset = previousPageData.offset + previousPageData.pages.length;
-  return ['/pages/recent', offset, previousPageData.pages.length, includeWipPage];
+  return ['/pages/recent', offset, includeWipPage];
 
 };
 
 export const useSWRINFxRecentlyUpdated = (
-    limit: number,
     includeWipPage?: boolean,
     config?: SWRConfiguration,
 ): SWRInfiniteResponse<RecentApiResult, Error> => {
+  const PER_PAGE = 20;
   return useSWRInfinite(
     (pageIndex, previousPageData) => getRecentlyUpdatedKey(pageIndex, previousPageData, includeWipPage),
-    ([endpoint, offset, , includeWipPage]) => apiv3Get<RecentApiResult>(endpoint, { offset, limit, includeWipPage }).then(response => response.data),
+    ([endpoint, offset, includeWipPage]) => apiv3Get<RecentApiResult>(endpoint, { offset, limit: PER_PAGE, includeWipPage }).then(response => response.data),
     {
       ...config,
       revalidateFirstPage: false,