// Copyright 2022 The Parca Authors // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. import {useMemo} from 'react'; import {HasProfileDataResponse, QueryServiceClient} from '@parca/client'; import {useGrpcMetadata} from '@parca/components'; import useGrpcQuery from './useGrpcQuery'; export const useHasProfileData = ( client: QueryServiceClient ): {loading: boolean; data: boolean; error: Error | any} => { const metadata = useGrpcMetadata(); const metadataString = useMemo(() => JSON.stringify(metadata), [metadata]); const {data, isLoading, error} = useGrpcQuery({ key: ['hasProfileData', metadataString], queryFn: async signal => { const {response} = await client.hasProfileData({}, {abort: signal, meta: metadata}); return response; }, }); return {loading: isLoading, data: data?.hasData ?? false, error}; };