11import { useCallback , type FC } from 'react' ;
22import { useTranslation } from 'react-i18next' ;
33import { useSearchParams } from 'react-router-dom-v5-compat' ;
4- import {
5- QueryClient ,
6- QueryClientProvider ,
7- useMutation ,
8- UseMutationResult ,
9- useQueryClient ,
10- } from '@tanstack/react-query' ;
4+ import { QueryClient , QueryClientProvider } from '@tanstack/react-query' ;
115import { QueryParamProvider } from 'use-query-params' ;
126import { ReactRouter5Adapter } from 'use-query-params/adapters/react-router-5' ;
137import { DashboardLayout } from './dashboard-layout' ;
@@ -20,9 +14,8 @@ import {
2014 EphemeralDashboardResource ,
2115 getResourceExtendedDisplayName ,
2216} from '@perses-dev/core' ;
23- import buildURL from './perses/url-builder' ;
24- import { getCSRFToken } from '@openshift-console/dynamic-plugin-sdk/lib/utils/fetch/console-fetch-utils' ;
2517import { useSnackbar } from '@perses-dev/components' ;
18+ import { useUpdateDashboardMutation } from './dashboard-api' ;
2619
2720const queryClient = new QueryClient ( {
2821 defaultOptions : {
@@ -46,53 +39,6 @@ const DashboardPage_: FC = () => {
4639 combinedInitialLoad,
4740 } = useDashboardsData ( ) ;
4841
49- const resource = 'dashboards' ;
50- const HTTPMethodPUT = 'PUT' ;
51- const HTTPHeader : Record < string , string > = {
52- 'Content-Type' : 'application/json' ,
53- Accept : 'application/json' ,
54- } ;
55- async function updateDashboard ( entity : DashboardResource ) : Promise < DashboardResource > {
56- const url = buildURL ( {
57- resource : resource ,
58- project : entity . metadata . project ,
59- name : entity . metadata . name ,
60- } ) ;
61-
62- const response = await fetch ( url , {
63- method : HTTPMethodPUT ,
64- headers : {
65- ...HTTPHeader ,
66- 'X-CSRFToken' : getCSRFToken ( ) ,
67- } ,
68- body : JSON . stringify ( entity ) ,
69- } ) ;
70-
71- if ( ! response . ok ) {
72- throw new Error ( `HTTP ${ response . status } : ${ response . statusText } ` ) ;
73- }
74-
75- return response . json ( ) ;
76- }
77-
78- function useUpdateDashboardMutation ( ) : UseMutationResult <
79- DashboardResource ,
80- Error ,
81- DashboardResource
82- > {
83- const queryClient = useQueryClient ( ) ;
84-
85- return useMutation < DashboardResource , Error , DashboardResource > ( {
86- mutationKey : [ resource ] ,
87- mutationFn : ( dashboard ) => {
88- return updateDashboard ( dashboard ) ;
89- } ,
90- onSuccess : ( ) => {
91- return queryClient . invalidateQueries ( { queryKey : [ resource ] } ) ;
92- } ,
93- } ) ;
94- }
95-
9642 const updateDashboardMutation = useUpdateDashboardMutation ( ) ;
9743 const { successSnackbar, exceptionSnackbar } = useSnackbar ( ) ;
9844
0 commit comments