diff --git a/.version b/.version index e0bac6f4b8..532ddfcdca 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -3.20.145-lts +3.20.146-lts diff --git a/frontend/.version b/frontend/.version index e0bac6f4b8..532ddfcdca 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -3.20.145-lts +3.20.146-lts diff --git a/frontend/src/AppBuilder/_hooks/useAppData.js b/frontend/src/AppBuilder/_hooks/useAppData.js index fbfbb6d24e..50c527263a 100644 --- a/frontend/src/AppBuilder/_hooks/useAppData.js +++ b/frontend/src/AppBuilder/_hooks/useAppData.js @@ -1,4 +1,4 @@ -import { useEffect, useRef, useState } from 'react'; +import { useCallback, useEffect, useRef, useState } from 'react'; import { appEnvironmentService, appService, @@ -121,6 +121,25 @@ const useAppData = ( const getModuleDefinition = useStore((state) => state?.getModuleDefinition ?? noop); const deleteModuleDefinition = useStore((state) => state?.deleteModuleDefinition ?? noop); + const fetchAllModules = useCallback(async () => { + const allModules = []; + let currentPage = 1; + let totalPages = 1; + + while (currentPage <= totalPages) { + const data = await appsService.getAll(currentPage, '', '', 'module'); + const pageModules = data?.apps || []; + + allModules.push(...pageModules); + + const pageCount = Number(data?.meta?.total_pages); + totalPages = Number.isFinite(pageCount) && pageCount > 0 ? pageCount : currentPage; + currentPage += 1; + } + + return allModules; + }, []); + const themeAccess = useThemeAccess(); const detectThemeChange = useStore((state) => state.detectThemeChange); const setConversation = useStore((state) => state.ai?.setConversation); @@ -763,15 +782,21 @@ const useAppData = ( if (mode === 'edit') { requestIdleCallback( () => { - appsService.getAll(0, '', '', 'module').then((data) => { - setModulesIsLoading(false); - setModulesList(data.apps); - }); + fetchAllModules() + .then((modules) => { + setModulesList(modules); + }) + .catch((error) => { + console.error('Failed to preload modules', error); + }) + .finally(() => { + setModulesIsLoading(false); + }); }, { timeout: 2000 } ); // Adding a timeout of 2 seconds as fallback } - }, [setModulesIsLoading, setModulesList, mode, moduleMode]); + }, [fetchAllModules, setModulesIsLoading, setModulesList, mode, moduleMode]); return appTypeRef.current; }; diff --git a/frontend/src/modules/WorkspaceSettings/pages/Groups/components/BaseManageGroupPermissions/BaseManageGroupPermissions.jsx b/frontend/src/modules/WorkspaceSettings/pages/Groups/components/BaseManageGroupPermissions/BaseManageGroupPermissions.jsx index 4240eaa6d1..e348d1705a 100644 --- a/frontend/src/modules/WorkspaceSettings/pages/Groups/components/BaseManageGroupPermissions/BaseManageGroupPermissions.jsx +++ b/frontend/src/modules/WorkspaceSettings/pages/Groups/components/BaseManageGroupPermissions/BaseManageGroupPermissions.jsx @@ -205,7 +205,8 @@ class BaseManageGroupPermissions extends React.Component { ? defaultGroups[0].id : type == 'current' ? this.findCurrentGroupDetails(groupPermissions) - : groupPermissions.at(-1).id; + : groupPermissions.find((group) => group.name === this.state.selectedGroup)?.id ?? + groupPermissions.at(-1).id; this.setState( { groups: groupPermissions.filter((group) => group.type === 'custom'), diff --git a/server/.version b/server/.version index e0bac6f4b8..532ddfcdca 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -3.20.145-lts +3.20.146-lts