diff --git a/apps/web-tss/src/api/buster_rest/chats/queryRequests.ts b/apps/web-tss/src/api/buster_rest/chats/queryRequests.ts index 9eb8d2dce..1267a3b0e 100644 --- a/apps/web-tss/src/api/buster_rest/chats/queryRequests.ts +++ b/apps/web-tss/src/api/buster_rest/chats/queryRequests.ts @@ -75,6 +75,16 @@ export const useGetListLogs = ( }); }; +export const prefetchGetLogsList = async ( + queryClient: QueryClient, + params?: Parameters[0] +) => { + await queryClient.prefetchQuery({ + ...chatQueryKeys.logsGetList(params), + queryFn: () => getListLogs(params), + }); +}; + const getChatQueryFn = (params: Parameters[0], queryClient: QueryClient) => { return getChat(params).then((chat) => { const { iChat, iChatMessages } = updateChatToIChat(chat); diff --git a/apps/web-tss/src/api/buster_rest/reports/queryRequests.ts b/apps/web-tss/src/api/buster_rest/reports/queryRequests.ts index 257b1c86c..5e0e6835b 100644 --- a/apps/web-tss/src/api/buster_rest/reports/queryRequests.ts +++ b/apps/web-tss/src/api/buster_rest/reports/queryRequests.ts @@ -43,8 +43,8 @@ export const useGetReportsList = (params?: Parameters[0]) * Prefetch function for reports list (server-side) */ export const prefetchGetReportsList = async ( - params: Parameters[0], - queryClient: QueryClient + queryClient: QueryClient, + params?: Parameters[0] ) => { await queryClient.prefetchQuery({ ...reportsQueryKeys.reportsGetList(params), diff --git a/apps/web-tss/src/components/features/sidebars/SidebarSettings.tsx b/apps/web-tss/src/components/features/sidebars/SidebarSettings.tsx index 45c4949c7..c4ff9becb 100644 --- a/apps/web-tss/src/components/features/sidebars/SidebarSettings.tsx +++ b/apps/web-tss/src/components/features/sidebars/SidebarSettings.tsx @@ -1,4 +1,4 @@ -import React, { useMemo } from 'react'; +import { useMemo } from 'react'; import { useIsUserAdmin, useIsUserRegistered } from '@/api/buster_rest/users/useGetUserInfo'; import { BackButton } from '@/components/ui/buttons/BackButton'; import ApartmentBuilding from '@/components/ui/icons/NucleoIconOutlined/apartment-building'; @@ -72,22 +72,22 @@ const permissionAndSecurityItems: ISidebarGroup = createSidebarGroup({ items: [ { label: 'Security', - link: { to: '/app/settings/security', preload: false }, + link: { to: '/app/settings/security' }, id: '/app/settings/security', }, { label: 'Users', - link: { to: '/app/settings/users', preload: false }, + link: { to: '/app/settings/users' }, id: '/app/settings/users', }, { label: 'Dataset groups', - link: { to: '/app/settings/dataset-groups', preload: false }, + link: { to: '/app/settings/dataset-groups' }, id: '/app/settings/dataset-groups', }, { label: 'Permission groups', - link: { to: '/app/settings/permission-groups', preload: false }, + link: { to: '/app/settings/permission-groups' }, id: '/app/settings/permission-groups', }, ], diff --git a/apps/web-tss/src/components/features/versionHistory/VersionHistoryPanelOld.tsx b/apps/web-tss/src/components/features/versionHistory/VersionHistoryPanelOld.tsx deleted file mode 100644 index 46e109603..000000000 --- a/apps/web-tss/src/components/features/versionHistory/VersionHistoryPanelOld.tsx +++ /dev/null @@ -1,178 +0,0 @@ -import { Link } from '@tanstack/react-router'; -import React, { useCallback, useMemo, useRef } from 'react'; -import { Button } from '@/components/ui/buttons'; -import { History, Xmark } from '@/components/ui/icons'; -import Check3 from '@/components/ui/icons/NucleoIconFilled/check-3'; -import { AppPageLayout } from '@/components/ui/layouts/AppPageLayout'; -import { CircleSpinnerLoader } from '@/components/ui/loaders'; -import { AppTooltip } from '@/components/ui/tooltip'; -import { Text } from '@/components/ui/typography'; -import { useMemoizedFn } from '@/hooks/useMemoizedFn'; -import { useMount } from '@/hooks/useMount'; -import { cn } from '@/lib/classMerge'; -import { timeFromNow } from '@/lib/date'; -import { timeout } from '@/lib/timeout'; - -export const VersionHistoryPanel = React.memo( - ({ assetId, type }: { assetId: string; type: 'metric' | 'dashboard' }) => { - // const { - // listItems, - // onPrefetchAsset, - // restoringVersion, - // currentVersionNumber, - // selectedQueryVersion, - // onClickRestoreVersion, - // } = useListVersionHistories({ - // assetId, - // type, - // }); - type; - assetId; - - const bodyRef = useRef(null); - - useMount(async () => { - if (bodyRef.current) { - await timeout(250); - const selectedNode = bodyRef.current.querySelector('.selected-version'); - if (selectedNode) { - selectedNode.scrollIntoView({ behavior: 'smooth', block: 'start' }); - } - } - }); - - return ( - , [])} - scrollable - headerBorderVariant="ghost" - > -
- TODO - {/* {listItems?.map((item) => ( - - ))} */} -
-
- ); - } -); - -// const ListItem = React.memo( -// ({ -// version_number, -// updated_at, -// selected, -// showRestoreButton, -// link, -// restoringVersion, -// onClickRestoreVersion, -// onPrefetchAsset, -// }: { -// version_number: number; -// updated_at: string; -// selected: boolean; -// showRestoreButton: boolean; -// restoringVersion: number | null; -// onClickRestoreVersion: (versionNumber: number) => void; -// onPrefetchAsset: (versionNumber: number, link: string) => Promise; -// link: string; -// }) => { -// const routePrefetchTimeoutRef = useRef(null); - -// const onHoverLink = useMemoizedFn(() => { -// // Prefetch route after 50ms -// routePrefetchTimeoutRef.current = setTimeout(() => { -// onPrefetchAsset(version_number, link); -// }, 125); -// }); - -// const onHoverEnd = useCallback(() => { -// if (routePrefetchTimeoutRef.current) { -// clearTimeout(routePrefetchTimeoutRef.current); -// } -// }, []); - -// const isRestoringVersion = restoringVersion === version_number; - -// return ( -// -//
-//
-// {`Version ${version_number}`} -// -// {timeFromNow(updated_at, false)} -// -//
- -//
-// {showRestoreButton && ( -// -// -// -// )} - -// {selected && ( -//
-// -//
-// )} -//
-//
-// -// ); -// } -// ); -// ListItem.displayName = 'ListItem'; - -const PanelHeader = React.memo(() => { - return ( -
- Version history - {/* -
- ); -}); -PanelHeader.displayName = 'PanelHeader'; - -VersionHistoryPanel.displayName = 'VersionHistoryPanel'; diff --git a/apps/web-tss/src/context/Query/QueryProvider.tsx b/apps/web-tss/src/context/Query/QueryProvider.tsx index f29b63298..09b47f9cc 100644 --- a/apps/web-tss/src/context/Query/QueryProvider.tsx +++ b/apps/web-tss/src/context/Query/QueryProvider.tsx @@ -11,7 +11,4 @@ export const QueryPersister = ({ queryClient: QueryClient; }) => { return children; - - // - // ); }; diff --git a/apps/web-tss/src/integrations/tanstack-query/query-client-config.ts b/apps/web-tss/src/integrations/tanstack-query/query-client-config.ts index d8773f499..e2dbf6790 100644 --- a/apps/web-tss/src/integrations/tanstack-query/query-client-config.ts +++ b/apps/web-tss/src/integrations/tanstack-query/query-client-config.ts @@ -1,4 +1,4 @@ -export const PREFETCH_STALE_TIME = 1000 * 60 * 1; // 1 minutes +export const PREFETCH_STALE_TIME = 1000 * 60 * 1.5; // 1.5 minutes export const ERROR_RETRY_DELAY = 1 * 1000; // 1 second delay after error export const GC_TIME = 1000 * 60 * 5; // 5 minutes - matches new persistence duration export const USER_CANCELLED_ERROR = new Error('User cancelled'); diff --git a/apps/web-tss/src/routes/app/_app/chats.index.tsx b/apps/web-tss/src/routes/app/_app/chats.index.tsx index 3c7b87268..9620d3ab9 100644 --- a/apps/web-tss/src/routes/app/_app/chats.index.tsx +++ b/apps/web-tss/src/routes/app/_app/chats.index.tsx @@ -1,4 +1,5 @@ import { createFileRoute } from '@tanstack/react-router'; +import { prefetchGetChatsList } from '@/api/buster_rest/chats'; import { AppPageLayout } from '@/components/ui/layouts/AppPageLayout'; import { ChatListContainer } from '@/controllers/ChatsListController/ChatListController'; import { ChatListHeader } from '@/controllers/ChatsListController/ChatListHeader'; @@ -12,6 +13,9 @@ export const Route = createFileRoute('/app/_app/chats/')({ { name: 'og:description', content: 'Browse and manage your chat conversations' }, ], }), + loader: async ({ context }) => { + prefetchGetChatsList(context.queryClient); //do not wait + }, component: RouteComponent, }); diff --git a/apps/web-tss/src/routes/app/_app/collections.index.tsx b/apps/web-tss/src/routes/app/_app/collections.index.tsx index e3b7ad543..2297cfd61 100644 --- a/apps/web-tss/src/routes/app/_app/collections.index.tsx +++ b/apps/web-tss/src/routes/app/_app/collections.index.tsx @@ -1,4 +1,5 @@ import { createFileRoute } from '@tanstack/react-router'; +import { prefetchGetCollectionsList } from '@/api/buster_rest/collections'; import { CollectionListController } from '@/controllers/CollectionListController'; export const Route = createFileRoute('/app/_app/collections/')({ @@ -10,5 +11,8 @@ export const Route = createFileRoute('/app/_app/collections/')({ { name: 'og:description', content: 'Browse and organize your collections' }, ], }), + loader: async ({ context }) => { + prefetchGetCollectionsList(context.queryClient); //do not wait + }, component: CollectionListController, }); diff --git a/apps/web-tss/src/routes/app/_app/dashboards.index.tsx b/apps/web-tss/src/routes/app/_app/dashboards.index.tsx index eabfcc473..7789ad401 100644 --- a/apps/web-tss/src/routes/app/_app/dashboards.index.tsx +++ b/apps/web-tss/src/routes/app/_app/dashboards.index.tsx @@ -1,4 +1,5 @@ import { createFileRoute } from '@tanstack/react-router'; +import { prefetchGetDashboardsList } from '@/api/buster_rest/dashboards'; import { DashboardListController } from '@/controllers/DashboardListController'; export const Route = createFileRoute('/app/_app/dashboards/')({ @@ -10,5 +11,8 @@ export const Route = createFileRoute('/app/_app/dashboards/')({ { name: 'og:description', content: 'View and manage your data dashboards' }, ], }), + loader: async ({ context }) => { + prefetchGetDashboardsList(context.queryClient); //do not wait + }, component: DashboardListController, }); diff --git a/apps/web-tss/src/routes/app/_app/logs.index.tsx b/apps/web-tss/src/routes/app/_app/logs.index.tsx index 8c0db7298..717f4714a 100644 --- a/apps/web-tss/src/routes/app/_app/logs.index.tsx +++ b/apps/web-tss/src/routes/app/_app/logs.index.tsx @@ -1,4 +1,5 @@ import { createFileRoute } from '@tanstack/react-router'; +import { prefetchGetLogsList } from '@/api/buster_rest/chats'; import { AppPageLayout } from '@/components/ui/layouts/AppPageLayout'; import { ChatListContainer } from '@/controllers/ChatsListController/ChatListController'; import { ChatListHeader } from '@/controllers/ChatsListController/ChatListHeader'; @@ -13,6 +14,9 @@ export const Route = createFileRoute('/app/_app/logs/')({ ], }), component: RouteComponent, + loader: async ({ context }) => { + prefetchGetLogsList(context.queryClient); //do not wait + }, }); const type = 'logs'; diff --git a/apps/web-tss/src/routes/app/_app/metrics.index.tsx b/apps/web-tss/src/routes/app/_app/metrics.index.tsx index 29941cbcb..febecd396 100644 --- a/apps/web-tss/src/routes/app/_app/metrics.index.tsx +++ b/apps/web-tss/src/routes/app/_app/metrics.index.tsx @@ -1,4 +1,5 @@ import { createFileRoute } from '@tanstack/react-router'; +import { prefetchGetMetricsList } from '@/api/buster_rest/metrics'; import { MetricListContainer } from '@/controllers/MetricListContainer'; export const Route = createFileRoute('/app/_app/metrics/')({ @@ -11,4 +12,7 @@ export const Route = createFileRoute('/app/_app/metrics/')({ ], }), component: MetricListContainer, + loader: async ({ context }) => { + prefetchGetMetricsList(context.queryClient); //do not wait + }, }); diff --git a/apps/web-tss/src/routes/app/_app/reports.index.tsx b/apps/web-tss/src/routes/app/_app/reports.index.tsx index d7011c3e1..5cfb1259e 100644 --- a/apps/web-tss/src/routes/app/_app/reports.index.tsx +++ b/apps/web-tss/src/routes/app/_app/reports.index.tsx @@ -1,4 +1,5 @@ import { createFileRoute } from '@tanstack/react-router'; +import { prefetchGetReportsList } from '@/api/buster_rest/reports'; import { AppPageLayout } from '@/components/ui/layouts/AppPageLayout'; import { Text } from '@/components/ui/typography/Text'; import { ReportsListController } from '@/controllers/ReportsListController'; @@ -12,6 +13,9 @@ export const Route = createFileRoute('/app/_app/reports/')({ { name: 'og:description', content: 'Generate and view your reports' }, ], }), + loader: async ({ context }) => { + prefetchGetReportsList(context.queryClient); //do not wait + }, component: () => ( Reports}>