b470cb21a1
## Summary This PR upgrades Apollo Client from v3.10.0 to v4 and refactors error handling patterns across the codebase to use a new centralized `useSnackBarOnQueryError` hook. ## Key Changes - **Dependency Update**: Upgraded `@apollo/client` from `^3.10.0` to `^3.11.0` in root package.json - **New Hook**: Added `useSnackBarOnQueryError` hook for centralized Apollo query error handling with snack bar notifications - **Error Handling Refactor**: Updated 100+ files to use the new error handling pattern: - Removed direct `ApolloError` imports where no longer needed - Replaced manual error handling logic with `useSnackBarOnQueryError` hook - Simplified error handling in hooks and components across multiple modules - **GraphQL Codegen**: Updated codegen configuration files to work with Apollo Client v3.11.0 - **Type Definitions**: Added TypeScript declaration file for `apollo-upload-client` module - **Test Updates**: Updated test files to reflect new error handling patterns ## Notable Implementation Details - The new `useSnackBarOnQueryError` hook provides a consistent way to handle Apollo query errors with automatic snack bar notifications - Changes span across multiple feature areas: auth, object records, settings, workflows, billing, and more - All changes maintain backward compatibility while improving code maintainability and reducing duplication - Jest configuration updated to work with the new Apollo Client version https://claude.ai/code/session_019WGZ6Rd7sEHuBg9sTrXRqJ --------- Co-authored-by: Claude <noreply@anthropic.com>
47 lines
1.3 KiB
TypeScript
47 lines
1.3 KiB
TypeScript
import {
|
|
GET_AUTOCOMPLETE_QUERY,
|
|
GET_PLACE_DETAILS_QUERY,
|
|
} from '@/geo-map/graphql-query/geo-map-appolo.api';
|
|
import {
|
|
type PlaceAutocompleteResult,
|
|
type PlaceDetailsResult,
|
|
} from '@/geo-map/types/placeApi';
|
|
import { useApolloClient } from '@apollo/client/react';
|
|
|
|
export const useGetPlaceApiData = () => {
|
|
const apolloClient = useApolloClient();
|
|
const getPlaceAutocompleteData = async (
|
|
address: string,
|
|
token: string,
|
|
country?: string,
|
|
isFieldCity?: boolean,
|
|
): Promise<PlaceAutocompleteResult[] | undefined> => {
|
|
const { data } = await apolloClient.query<{
|
|
getAutoCompleteAddress: PlaceAutocompleteResult[];
|
|
}>({
|
|
query: GET_AUTOCOMPLETE_QUERY,
|
|
variables: { address, token, country, isFieldCity: isFieldCity ?? false },
|
|
fetchPolicy: 'no-cache',
|
|
});
|
|
|
|
return data?.getAutoCompleteAddress;
|
|
};
|
|
const getPlaceDetailsData = async (
|
|
placeId: string,
|
|
token: string,
|
|
): Promise<PlaceDetailsResult | undefined> => {
|
|
const { data } = await apolloClient.query<{
|
|
getAddressDetails: PlaceDetailsResult;
|
|
}>({
|
|
query: GET_PLACE_DETAILS_QUERY,
|
|
variables: { placeId, token },
|
|
fetchPolicy: 'no-cache',
|
|
});
|
|
return data?.getAddressDetails;
|
|
};
|
|
return {
|
|
getPlaceAutocompleteData,
|
|
getPlaceDetailsData,
|
|
};
|
|
};
|