@@ -5,15 +5,15 @@ import {
55 ExclamationTriangleIcon ,
66 ReloadIcon ,
77} from '@radix-ui/react-icons' ;
8- import { keepPreviousData , QueryClient , useQuery } from '@tanstack/react-query' ;
8+ import { keepPreviousData , QueryClient , useQuery , useQueryClient } from '@tanstack/react-query' ;
99import {
1010 ColumnDef ,
1111 flexRender ,
1212 getCoreRowModel ,
1313 useReactTable ,
1414} from '@tanstack/react-table' ;
1515import { format , formatDistance } from 'date-fns' ;
16- import { ActionFunctionArgs , Link , useLoaderData } from 'react-router-dom' ;
16+ import { ActionFunctionArgs , Link , LoaderFunctionArgs , useLoaderData } from 'react-router-dom' ;
1717
1818import { toast } from '~/components/alerts' ;
1919import { Button } from '~/components/buttons' ;
@@ -28,26 +28,37 @@ import {
2828} from '~/components/tables' ;
2929import { pageDetailQuery } from '~/queries/pages' ;
3030import { getPageDetail , getScan , IPageScan , sendUrlsToScan } from '~/services' ;
31+ import { assertNonNull } from '~/utils/safety' ;
3132
3233// Initial data on pageload
3334export const pageDetailLoader =
3435 ( queryClient : QueryClient ) =>
35- async ( { params } : ActionFunctionArgs ) => {
36- if ( ! params . pageId ) { throw ( "Error loading page" ) } ;
36+ async ( { params } : LoaderFunctionArgs ) => {
37+ assertNonNull (
38+ params . pageId ,
39+ 'Page ID is missing in the route parameters' ,
40+ ) ;
3741 const initialPage = await queryClient . ensureQueryData (
3842 pageDetailQuery ( { pageId : params . pageId } ) ,
3943 ) ;
40- return { initialPage } ;
44+ return { initialPage, pageId : params . pageId } ;
4145 } ;
4246
4347const pageDetail = ( ) => {
4448 // fetch the single page data
45- const initialPage = useLoaderData ( ) as Awaited <
49+ const queryClient = useQueryClient ( ) ;
50+ const { initialPage, pageId } = useLoaderData ( ) as Awaited <
4651 ReturnType < ReturnType < typeof pageDetailLoader > >
4752 > ;
48- const [ data , setData ] = useState ( initialPage ?. initialPage ) ;
53+ // const [data, setData] = useState(initialPage?.initialPage);
4954 const [ isSendingToScan , setIsSendingToScan ] = useState ( false ) ;
5055
56+ const { data } = useQuery ( {
57+ ...pageDetailQuery ( { pageId : pageId ! } ) ,
58+ initialData : initialPage ,
59+ } ) ;
60+
61+
5162 // Define the columns
5263 const columns = React . useMemo < ColumnDef < IPageScan > [ ] > (
5364 ( ) => [
@@ -146,7 +157,8 @@ const pageDetail = () => {
146157 title : 'Success' ,
147158 description : 'Pages sent to scan!' ,
148159 } ) ;
149- setData ( await getPageDetail ( { pageId : data . id } ) ) ; // refresh the page
160+ queryClient . refetchQueries ( { queryKey : [ 'page-detail' ] } ) ;
161+ //setData(await getPageDetail({ pageId: data.id})); // refresh the page
150162 } else {
151163 toast . error ( {
152164 title : 'Error' ,
0 commit comments