From b4493a4a71d568f42bdfdcde1e4345cd2064a68f Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 11:53:56 -0500 Subject: [PATCH 01/10] initial refactor --- packages/manager/package.json | 3 +- .../PaymentMethodRow/PaymentMethodRow.tsx | 4 +- .../manager/src/components/TagCell/AddTag.tsx | 2 +- .../src/components/TagsInput/TagsInput.tsx | 2 +- .../src/components/TagsPanel/TagsPanel.tsx | 2 +- .../Uploaders/ImageUploader/ImageUploader.tsx | 4 +- .../ObjectUploader/ObjectUploader.tsx | 2 +- .../src/containers/account.container.ts | 2 +- .../containers/accountSettings.container.ts | 2 +- .../src/containers/profile.container.ts | 2 +- .../containers/withQueryClient.container.tsx | 2 +- .../Account/Agreements/withAgreements.ts | 2 +- .../src/features/Account/EnableManaged.tsx | 2 +- .../features/Account/EnableObjectStorage.tsx | 6 +-- .../SwitchAccounts/ChildAccountList.tsx | 2 +- .../manager/src/features/Backups/utils.ts | 2 +- .../PaymentDrawer/GooglePayButton.tsx | 2 +- .../PaymentDrawer/PayPalButton.tsx | 4 +- .../PaymentDrawer/PaymentDrawer.tsx | 4 +- .../BillingSummary/PromoDialog.tsx | 4 +- .../AddCreditCardForm.tsx | 4 +- .../PaymentInfoPanel/GooglePayChip.tsx | 2 +- .../PaymentInfoPanel/PayPalChip.tsx | 4 +- .../PaymentInfoPanel/PaymentInformation.tsx | 4 +- .../src/features/Billing/GooglePayProvider.ts | 6 +-- .../EntityTransfersCreate.tsx | 4 +- .../ConfirmTransferCancelDialog.tsx | 4 +- .../ConfirmTransferDialog.tsx | 2 +- .../Devices/AddNodebalancerDrawer.tsx | 2 +- .../Devices/RemoveDeviceDialog.tsx | 2 +- .../FirewallLanding/CreateFirewallDrawer.tsx | 2 +- .../FirewallLanding/FirewallDialog.tsx | 2 +- .../ComplianceUpdateModal.tsx | 2 +- .../src/features/Images/ImagesLanding.tsx | 2 +- .../Linodes/CloneLanding/CloneLanding.tsx | 3 +- .../Linodes/LinodeEntityDetailHeader.tsx | 2 +- .../Linodes/LinodesCreate/AttachVLAN.tsx | 4 +- .../LinodesCreate/LinodeCreateContainer.tsx | 36 +++++++---------- .../SelectLinodePanel/SelectLinodeRow.tsx | 2 +- .../Linodes/LinodesCreate/VLANAccordion.tsx | 4 +- .../LinodeConfigs/LinodeConfigDialog.tsx | 8 ++-- .../LinodesLanding/DeleteLinodeDialog.tsx | 2 +- .../BucketDetail/BucketDetail.tsx | 2 +- .../PlacementGroupsCreateDrawer.tsx | 2 +- .../PlacementGroupsRenameDrawer.tsx | 2 +- .../PhoneVerification/PhoneVerification.tsx | 4 +- .../TwoFactor/TwoFactor.tsx | 4 +- .../StackScriptCreate.test.tsx | 2 +- .../StackScriptCreate/StackScriptCreate.tsx | 6 +-- .../manager/src/features/Users/UserDetail.tsx | 2 +- .../src/features/Users/UserPermissions.tsx | 4 +- .../VPCDetail/SubnetAssignLinodesDrawer.tsx | 7 ++-- .../VPCs/VPCDetail/SubnetLinodeRow.tsx | 2 +- .../VPCDetail/SubnetUnassignLinodesDrawer.tsx | 2 +- .../manager/src/hooks/useEventHandlers.ts | 4 +- .../manager/src/hooks/useInitialRequests.ts | 10 ++--- packages/manager/src/hooks/useOrder.test.tsx | 2 +- .../manager/src/hooks/useUnassignLinode.ts | 2 +- packages/manager/src/index.tsx | 4 +- packages/manager/src/queries/account.ts | 6 +-- .../manager/src/queries/accountAgreements.ts | 8 ++-- .../src/queries/accountAvailability.ts | 2 +- packages/manager/src/queries/accountBetas.ts | 2 +- .../manager/src/queries/accountBilling.ts | 2 +- packages/manager/src/queries/accountLogins.ts | 2 +- .../manager/src/queries/accountMaintenance.ts | 2 +- .../src/queries/accountNotifications.ts | 2 +- packages/manager/src/queries/accountOAuth.ts | 2 +- .../manager/src/queries/accountPayment.ts | 6 +-- .../manager/src/queries/accountSettings.ts | 29 ++++++++------ .../manager/src/queries/accountTransfer.ts | 4 +- packages/manager/src/queries/accountUsers.ts | 2 +- .../manager/src/queries/aclb/certificates.ts | 2 +- .../src/queries/aclb/configurations.ts | 2 +- .../manager/src/queries/aclb/loadbalancers.ts | 2 +- packages/manager/src/queries/aclb/routes.ts | 2 +- .../src/queries/aclb/serviceTargets.ts | 2 +- packages/manager/src/queries/base.ts | 10 ++--- packages/manager/src/queries/betas.ts | 2 +- packages/manager/src/queries/databases.ts | 26 ++++++------ packages/manager/src/queries/domains.ts | 2 +- .../manager/src/queries/entityTransfers.ts | 4 +- packages/manager/src/queries/events/events.ts | 2 +- packages/manager/src/queries/firewalls.ts | 2 +- packages/manager/src/queries/images.ts | 22 +++++----- packages/manager/src/queries/kubernetes.ts | 4 +- .../manager/src/queries/linodes/actions.ts | 2 +- .../manager/src/queries/linodes/backups.ts | 2 +- .../manager/src/queries/linodes/configs.ts | 2 +- packages/manager/src/queries/linodes/disks.ts | 2 +- .../manager/src/queries/linodes/firewalls.ts | 2 +- .../manager/src/queries/linodes/linodes.ts | 2 +- .../manager/src/queries/linodes/networking.ts | 2 +- packages/manager/src/queries/linodes/stats.ts | 2 +- .../manager/src/queries/managed/managed.ts | 40 +++++++++---------- packages/manager/src/queries/nodebalancers.ts | 2 +- packages/manager/src/queries/objectStorage.ts | 17 ++++---- .../manager/src/queries/placementGroups.ts | 2 +- packages/manager/src/queries/preferences.ts | 6 +-- packages/manager/src/queries/profile.ts | 2 +- packages/manager/src/queries/regions.ts | 6 +-- .../manager/src/queries/securityQuestions.ts | 6 +-- packages/manager/src/queries/stackscripts.ts | 2 +- .../src/queries/statusPage/statusPage.ts | 6 +-- packages/manager/src/queries/support.ts | 2 +- packages/manager/src/queries/tags.ts | 6 +-- packages/manager/src/queries/tokens.ts | 2 +- packages/manager/src/queries/types.ts | 10 ++--- packages/manager/src/queries/vlans.ts | 4 +- packages/manager/src/queries/volumes.ts | 2 +- .../manager/src/queries/volumesMigrations.ts | 2 +- packages/manager/src/queries/vpcs.ts | 2 +- packages/manager/src/store/types.ts | 2 +- packages/manager/src/utilities/extendType.ts | 2 +- packages/manager/src/utilities/subnets.ts | 2 +- .../manager/src/utilities/testHelpers.tsx | 2 +- 116 files changed, 256 insertions(+), 259 deletions(-) diff --git a/packages/manager/package.json b/packages/manager/package.json index d34a381a11a..1538ecf3285 100644 --- a/packages/manager/package.json +++ b/packages/manager/package.json @@ -23,6 +23,8 @@ "@paypal/react-paypal-js": "^7.8.3", "@reach/tabs": "^0.10.5", "@sentry/react": "^7.57.0", + "@tanstack/react-query": "4", + "@tanstack/react-query-devtools": "4", "algoliasearch": "^4.14.3", "axios": "~1.6.5", "braintree-web": "^3.92.2", @@ -55,7 +57,6 @@ "react-dom": "^18.2.0", "react-dropzone": "~11.2.0", "react-number-format": "^3.5.0", - "react-query": "^3.3.2", "react-redux": "~7.1.3", "react-router-dom": "~5.3.4", "react-router-hash-link": "^2.3.1", diff --git a/packages/manager/src/components/PaymentMethodRow/PaymentMethodRow.tsx b/packages/manager/src/components/PaymentMethodRow/PaymentMethodRow.tsx index 93fee8560f6..4914207f1d7 100644 --- a/packages/manager/src/components/PaymentMethodRow/PaymentMethodRow.tsx +++ b/packages/manager/src/components/PaymentMethodRow/PaymentMethodRow.tsx @@ -3,7 +3,7 @@ import { PaymentMethod } from '@linode/api-v4/lib/account/types'; import { useTheme } from '@mui/material/styles'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { useHistory } from 'react-router-dom'; import { Action, ActionMenu } from 'src/components/ActionMenu/ActionMenu'; @@ -48,7 +48,7 @@ export const PaymentMethodRow = (props: Props) => { const makeDefault = (id: number) => { makeDefaultPaymentMethod(id) - .then(() => queryClient.invalidateQueries(`${queryKey}-all`)) + .then(() => queryClient.invalidateQueries([`${queryKey}-all`])) .catch((errors) => enqueueSnackbar( errors[0]?.reason || 'Unable to change your default payment method.', diff --git a/packages/manager/src/components/TagCell/AddTag.tsx b/packages/manager/src/components/TagCell/AddTag.tsx index 18558ebe91e..7d470503b00 100644 --- a/packages/manager/src/components/TagCell/AddTag.tsx +++ b/packages/manager/src/components/TagCell/AddTag.tsx @@ -1,6 +1,6 @@ import { styled } from '@mui/material/styles'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import Select, { Item } from 'src/components/EnhancedSelect/Select'; import { useProfile } from 'src/queries/profile'; diff --git a/packages/manager/src/components/TagsInput/TagsInput.tsx b/packages/manager/src/components/TagsInput/TagsInput.tsx index 2d3cb5495b4..5a5a5fe6d81 100644 --- a/packages/manager/src/components/TagsInput/TagsInput.tsx +++ b/packages/manager/src/components/TagsInput/TagsInput.tsx @@ -1,7 +1,7 @@ import { APIError } from '@linode/api-v4/lib/types'; import { concat } from 'ramda'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import Select, { Item, diff --git a/packages/manager/src/components/TagsPanel/TagsPanel.tsx b/packages/manager/src/components/TagsPanel/TagsPanel.tsx index be5b9e4388a..66fb2a4fa8f 100644 --- a/packages/manager/src/components/TagsPanel/TagsPanel.tsx +++ b/packages/manager/src/components/TagsPanel/TagsPanel.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { StyledPlusIcon, diff --git a/packages/manager/src/components/Uploaders/ImageUploader/ImageUploader.tsx b/packages/manager/src/components/Uploaders/ImageUploader/ImageUploader.tsx index 4dc9c18b7f5..7d120b9480e 100644 --- a/packages/manager/src/components/Uploaders/ImageUploader/ImageUploader.tsx +++ b/packages/manager/src/components/Uploaders/ImageUploader/ImageUploader.tsx @@ -3,7 +3,7 @@ import { useSnackbar } from 'notistack'; import * as React from 'react'; import { flushSync } from 'react-dom'; import { FileRejection, useDropzone } from 'react-dropzone'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { useDispatch } from 'react-redux'; import { useHistory } from 'react-router-dom'; @@ -234,7 +234,7 @@ export const ImageUploader = React.memo((props: ImageUploaderProps) => { redirectToLogin('/images'); }, 3000); } else { - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); history.push('/images'); } }; diff --git a/packages/manager/src/components/Uploaders/ObjectUploader/ObjectUploader.tsx b/packages/manager/src/components/Uploaders/ObjectUploader/ObjectUploader.tsx index 7aa380e9f38..cc81f9af594 100644 --- a/packages/manager/src/components/Uploaders/ObjectUploader/ObjectUploader.tsx +++ b/packages/manager/src/components/Uploaders/ObjectUploader/ObjectUploader.tsx @@ -3,7 +3,7 @@ import { AxiosProgressEvent } from 'axios'; import { useSnackbar } from 'notistack'; import * as React from 'react'; import { FileRejection, useDropzone } from 'react-dropzone'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { debounce } from 'throttle-debounce'; import { Button } from 'src/components/Button/Button'; diff --git a/packages/manager/src/containers/account.container.ts b/packages/manager/src/containers/account.container.ts index b698936ad8b..b4c3cec138e 100644 --- a/packages/manager/src/containers/account.container.ts +++ b/packages/manager/src/containers/account.container.ts @@ -1,7 +1,7 @@ import { Account } from '@linode/api-v4/lib'; import { APIError } from '@linode/api-v4/lib/types'; import * as React from 'react'; -import { UseQueryResult } from 'react-query'; +import { UseQueryResult } from '@tanstack/react-query'; import { useAccount } from 'src/queries/account'; diff --git a/packages/manager/src/containers/accountSettings.container.ts b/packages/manager/src/containers/accountSettings.container.ts index 3d0aec2eddd..1615c17e46f 100644 --- a/packages/manager/src/containers/accountSettings.container.ts +++ b/packages/manager/src/containers/accountSettings.container.ts @@ -1,7 +1,7 @@ import { AccountSettings } from '@linode/api-v4/lib'; import { APIError } from '@linode/api-v4/lib/types'; import * as React from 'react'; -import { UseQueryResult } from 'react-query'; +import { UseQueryResult } from '@tanstack/react-query'; import { useAccountSettings } from 'src/queries/accountSettings'; diff --git a/packages/manager/src/containers/profile.container.ts b/packages/manager/src/containers/profile.container.ts index 917fdfff8d7..0e8a0d986cb 100644 --- a/packages/manager/src/containers/profile.container.ts +++ b/packages/manager/src/containers/profile.container.ts @@ -1,7 +1,7 @@ import { Grants, Profile } from '@linode/api-v4/lib'; import { APIError } from '@linode/api-v4/lib/types'; import * as React from 'react'; -import { UseQueryResult } from 'react-query'; +import { UseQueryResult } from '@tanstack/react-query'; import { useGrants, useProfile } from 'src/queries/profile'; diff --git a/packages/manager/src/containers/withQueryClient.container.tsx b/packages/manager/src/containers/withQueryClient.container.tsx index 3b1cc135393..06a70807e3b 100644 --- a/packages/manager/src/containers/withQueryClient.container.tsx +++ b/packages/manager/src/containers/withQueryClient.container.tsx @@ -1,5 +1,5 @@ import React from 'react'; -import { QueryClient, useQueryClient } from 'react-query'; +import { QueryClient, useQueryClient } from '@tanstack/react-query'; export interface WithQueryClientProps { queryClient: QueryClient; diff --git a/packages/manager/src/features/Account/Agreements/withAgreements.ts b/packages/manager/src/features/Account/Agreements/withAgreements.ts index 3197857457b..76eb159a758 100644 --- a/packages/manager/src/features/Account/Agreements/withAgreements.ts +++ b/packages/manager/src/features/Account/Agreements/withAgreements.ts @@ -1,7 +1,7 @@ import { Agreements } from '@linode/api-v4/lib'; import { APIError } from '@linode/api-v4/lib/types'; import * as React from 'react'; -import { UseQueryResult } from 'react-query'; +import { UseQueryResult } from '@tanstack/react-query'; import { useAccountAgreements } from 'src/queries/accountAgreements'; diff --git a/packages/manager/src/features/Account/EnableManaged.tsx b/packages/manager/src/features/Account/EnableManaged.tsx index 0ae8c14cbce..d3acd2b5894 100644 --- a/packages/manager/src/features/Account/EnableManaged.tsx +++ b/packages/manager/src/features/Account/EnableManaged.tsx @@ -2,7 +2,7 @@ import { enableManaged } from '@linode/api-v4/lib/managed'; import { APIError } from '@linode/api-v4/lib/types'; import Grid from '@mui/material/Unstable_Grid2'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Accordion } from 'src/components/Accordion'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; diff --git a/packages/manager/src/features/Account/EnableObjectStorage.tsx b/packages/manager/src/features/Account/EnableObjectStorage.tsx index 899f7e76ac8..7d5676b5802 100644 --- a/packages/manager/src/features/Account/EnableObjectStorage.tsx +++ b/packages/manager/src/features/Account/EnableObjectStorage.tsx @@ -3,7 +3,7 @@ import { cancelObjectStorage } from '@linode/api-v4/lib/object-storage'; import { APIError } from '@linode/api-v4/lib/types'; import Grid from '@mui/material/Unstable_Grid2'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Accordion } from 'src/components/Accordion'; import { Button } from 'src/components/Button/Button'; @@ -89,8 +89,8 @@ export const EnableObjectStorage = (props: Props) => { .then(() => { updateAccountSettingsData({ object_storage: 'disabled' }, queryClient); handleClose(); - queryClient.invalidateQueries(`${queryKey}-buckets`); - queryClient.invalidateQueries(`${queryKey}-access-keys`); + queryClient.invalidateQueries([queryKey, 'buckets']); + queryClient.invalidateQueries([queryKey, 'access-keys']); }) .catch(handleError); }; diff --git a/packages/manager/src/features/Account/SwitchAccounts/ChildAccountList.tsx b/packages/manager/src/features/Account/SwitchAccounts/ChildAccountList.tsx index 3f9075bb849..993fd12f963 100644 --- a/packages/manager/src/features/Account/SwitchAccounts/ChildAccountList.tsx +++ b/packages/manager/src/features/Account/SwitchAccounts/ChildAccountList.tsx @@ -1,6 +1,6 @@ import _ from 'lodash'; import React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Waypoint } from 'react-waypoint'; import ErrorStateCloud from 'src/assets/icons/error-state-cloud.svg'; diff --git a/packages/manager/src/features/Backups/utils.ts b/packages/manager/src/features/Backups/utils.ts index 87768021c88..c00d8f60895 100644 --- a/packages/manager/src/features/Backups/utils.ts +++ b/packages/manager/src/features/Backups/utils.ts @@ -1,5 +1,5 @@ import { enableBackups } from '@linode/api-v4'; -import { useMutation, useQueryClient } from 'react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { queryKey } from 'src/queries/linodes/linodes'; import { pluralize } from 'src/utilities/pluralize'; diff --git a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/GooglePayButton.tsx b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/GooglePayButton.tsx index ab11bedecbd..0de6edd239f 100644 --- a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/GooglePayButton.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/GooglePayButton.tsx @@ -2,7 +2,7 @@ import { APIWarning } from '@linode/api-v4/lib/types'; import Grid from '@mui/material/Unstable_Grid2'; import { Theme } from '@mui/material/styles'; import * as React from 'react'; -import { QueryClient, useQueryClient } from 'react-query'; +import { QueryClient, useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import GooglePayIcon from 'src/assets/icons/payment/gPayButton.svg'; diff --git a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PayPalButton.tsx b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PayPalButton.tsx index c2062c251fa..9219ad5d8d6 100644 --- a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PayPalButton.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PayPalButton.tsx @@ -10,7 +10,7 @@ import { usePayPalScriptReducer, } from '@paypal/react-paypal-js'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import { CircleProgress } from 'src/components/CircleProgress'; @@ -179,7 +179,7 @@ export const PayPalButton = (props: Props) => { setProcessing(false); }); if (response) { - queryClient.invalidateQueries(`${accountBillingKey}-payments`); + queryClient.invalidateQueries([`${accountBillingKey}-payments`]); setSuccess( `Payment for $${response.usd} successfully submitted with PayPal`, diff --git a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PaymentDrawer.tsx b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PaymentDrawer.tsx index 6ce794aa8f9..58e9f5d22fc 100644 --- a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PaymentDrawer.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PaymentDrawer/PaymentDrawer.tsx @@ -4,7 +4,7 @@ import { APIWarning } from '@linode/api-v4/lib/types'; import Grid from '@mui/material/Unstable_Grid2'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import { Button } from 'src/components/Button/Button'; @@ -189,7 +189,7 @@ export const PaymentDrawer = (props: Props) => { true, response.warnings ); - queryClient.invalidateQueries(`${queryKey}-payments`); + queryClient.invalidateQueries([`${queryKey}-payments`]); }) .catch((errorResponse) => { setSubmitting(false); diff --git a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PromoDialog.tsx b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PromoDialog.tsx index 47822bf9cd3..cb9ec1bc799 100644 --- a/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PromoDialog.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/BillingSummary/PromoDialog.tsx @@ -2,7 +2,7 @@ import { addPromotion } from '@linode/api-v4/lib'; import { APIError } from '@linode/api-v4/lib/types'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; @@ -51,7 +51,7 @@ const PromoDialog = (props: Props) => { enqueueSnackbar('Successfully applied promo to your account.', { variant: 'success', }); - queryClient.invalidateQueries(queryKey); + queryClient.invalidateQueries([queryKey]); onClose(); }) .catch((error: APIError[]) => { diff --git a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/AddPaymentMethodDrawer/AddCreditCardForm.tsx b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/AddPaymentMethodDrawer/AddCreditCardForm.tsx index e5c34763de0..3f1e4f523d5 100644 --- a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/AddPaymentMethodDrawer/AddCreditCardForm.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/AddPaymentMethodDrawer/AddCreditCardForm.tsx @@ -7,7 +7,7 @@ import { useFormik, yupToFormErrors } from 'formik'; import { useSnackbar } from 'notistack'; import * as React from 'react'; import NumberFormat, { NumberFormatProps } from 'react-number-format'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; @@ -81,7 +81,7 @@ const AddCreditCardForm = (props: Props) => { enqueueSnackbar('Successfully added Credit Card', { variant: 'success', }); - queryClient.invalidateQueries('account-payment-methods-all'); + queryClient.invalidateQueries(['account-payment-methods-all']); onClose(); } catch (errors) { handleAPIErrors(errors, setFieldError, setError); diff --git a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/GooglePayChip.tsx b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/GooglePayChip.tsx index 439b1e46e18..72e599a0e33 100644 --- a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/GooglePayChip.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/GooglePayChip.tsx @@ -1,6 +1,6 @@ import Grid from '@mui/material/Unstable_Grid2'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import GooglePayIcon from 'src/assets/icons/payment/googlePay.svg'; diff --git a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PayPalChip.tsx b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PayPalChip.tsx index ca211b3a5ed..2dee35c0171 100644 --- a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PayPalChip.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PayPalChip.tsx @@ -11,7 +11,7 @@ import { } from '@paypal/react-paypal-js'; import { useSnackbar } from 'notistack'; import React, { useEffect } from 'react'; -import { QueryClient, useQueryClient } from 'react-query'; +import { QueryClient, useQueryClient } from '@tanstack/react-query'; import { makeStyles } from 'tss-react/mui'; import { CircleProgress } from 'src/components/CircleProgress'; @@ -115,7 +115,7 @@ export const PayPalChip = (props: Props) => { type: 'payment_method_nonce', }) .then(() => { - queryClient.invalidateQueries(`${accountPaymentKey}-all`); + queryClient.invalidateQueries([`${accountPaymentKey}-all`]); onClose(); diff --git a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PaymentInformation.tsx b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PaymentInformation.tsx index 1846e7e6588..b0d0dab7c59 100644 --- a/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PaymentInformation.tsx +++ b/packages/manager/src/features/Billing/BillingPanels/PaymentInfoPanel/PaymentInformation.tsx @@ -2,7 +2,7 @@ import { PaymentMethod, deletePaymentMethod } from '@linode/api-v4/lib/account'; import { APIError } from '@linode/api-v4/lib/types'; import Grid from '@mui/material/Unstable_Grid2'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { useHistory, useRouteMatch } from 'react-router-dom'; import { DeletePaymentMethodDialog } from 'src/components/PaymentMethodRow/DeletePaymentMethodDialog'; @@ -63,7 +63,7 @@ const PaymentInformation = (props: Props) => { .then(() => { setDeleteLoading(false); closeDeleteDialog(); - queryClient.invalidateQueries(`${queryKey}-all`); + queryClient.invalidateQueries([`${queryKey}-all`]); }) .catch((e: APIError[]) => { setDeleteLoading(false); diff --git a/packages/manager/src/features/Billing/GooglePayProvider.ts b/packages/manager/src/features/Billing/GooglePayProvider.ts index 4a6c20a8482..1050d7b871d 100644 --- a/packages/manager/src/features/Billing/GooglePayProvider.ts +++ b/packages/manager/src/features/Billing/GooglePayProvider.ts @@ -5,7 +5,7 @@ import { import { APIWarning } from '@linode/api-v4/lib/types'; import braintree, { GooglePayment } from 'braintree-web'; import { VariantType } from 'notistack'; -import { QueryClient } from 'react-query'; +import { QueryClient } from '@tanstack/react-query'; import { GPAY_CLIENT_ENV, GPAY_MERCHANT_ID } from 'src/constants'; import { reportException } from 'src/exceptionReporting'; @@ -116,7 +116,7 @@ export const gPay = async ( nonce, usd: transactionInfo.totalPrice as string, }); - queryClient.invalidateQueries(`${accountBillingKey}-payments`); + queryClient.invalidateQueries([`${accountBillingKey}-payments`]); const message = { text: `Payment for $${transactionInfo.totalPrice} successfully submitted with Google Pay`, variant: 'success' as VariantType, @@ -130,7 +130,7 @@ export const gPay = async ( is_default: true, type: 'payment_method_nonce', }); - queryClient.invalidateQueries(`${accountPaymentKey}-all`); + queryClient.invalidateQueries([`${accountPaymentKey}-all`]); setMessage({ text: 'Successfully added Google Pay', variant: 'success', diff --git a/packages/manager/src/features/EntityTransfers/EntityTransfersCreate/EntityTransfersCreate.tsx b/packages/manager/src/features/EntityTransfers/EntityTransfersCreate/EntityTransfersCreate.tsx index 860de6d7051..8b52c6a3aba 100644 --- a/packages/manager/src/features/EntityTransfers/EntityTransfersCreate/EntityTransfersCreate.tsx +++ b/packages/manager/src/features/EntityTransfers/EntityTransfersCreate/EntityTransfersCreate.tsx @@ -2,7 +2,7 @@ import { CreateTransferPayload } from '@linode/api-v4/lib/entity-transfers'; import Grid from '@mui/material/Unstable_Grid2'; import { curry } from 'ramda'; import * as React from 'react'; -import { QueryClient, useQueryClient } from 'react-query'; +import { QueryClient, useQueryClient } from '@tanstack/react-query'; import { useHistory } from 'react-router-dom'; import { DocumentTitleSegment } from 'src/components/DocumentTitle'; @@ -70,7 +70,7 @@ export const EntityTransfersCreate = () => { const entityCount = countByEntity(transfer.entities); sendEntityTransferCreateEvent(entityCount); - queryClient.invalidateQueries(queryKey); + queryClient.invalidateQueries([queryKey]); push({ pathname: '/account/service-transfers', state: { transfer } }); }, }).catch((_) => null); diff --git a/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferCancelDialog.tsx b/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferCancelDialog.tsx index ebc25ebd369..4476bf5b782 100644 --- a/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferCancelDialog.tsx +++ b/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferCancelDialog.tsx @@ -5,7 +5,7 @@ import { import { APIError } from '@linode/api-v4/lib/types'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { ConfirmationDialog } from 'src/components/ConfirmationDialog/ConfirmationDialog'; @@ -55,7 +55,7 @@ export const ConfirmTransferCancelDialog = React.memo((props: Props) => { sendEntityTransferCancelEvent(); // Refresh the query for Entity Transfers. - queryClient.invalidateQueries(queryKey); + queryClient.invalidateQueries([queryKey]); onClose(); setSubmitting(false); diff --git a/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferDialog.tsx b/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferDialog.tsx index ab63e1cc1b6..e811635f9ac 100644 --- a/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferDialog.tsx +++ b/packages/manager/src/features/EntityTransfers/EntityTransfersLanding/ConfirmTransferDialog.tsx @@ -5,7 +5,7 @@ import { import { APIError } from '@linode/api-v4/lib/types'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Checkbox } from 'src/components/Checkbox'; import { CircleProgress } from 'src/components/CircleProgress'; diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Devices/AddNodebalancerDrawer.tsx b/packages/manager/src/features/Firewalls/FirewallDetail/Devices/AddNodebalancerDrawer.tsx index 98710cb41e0..17061da3771 100644 --- a/packages/manager/src/features/Firewalls/FirewallDetail/Devices/AddNodebalancerDrawer.tsx +++ b/packages/manager/src/features/Firewalls/FirewallDetail/Devices/AddNodebalancerDrawer.tsx @@ -2,7 +2,7 @@ import { NodeBalancer } from '@linode/api-v4'; import { useTheme } from '@mui/material'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { useParams } from 'react-router-dom'; import sanitize from 'sanitize-html'; diff --git a/packages/manager/src/features/Firewalls/FirewallDetail/Devices/RemoveDeviceDialog.tsx b/packages/manager/src/features/Firewalls/FirewallDetail/Devices/RemoveDeviceDialog.tsx index 771b1b33c6c..39cb445108b 100644 --- a/packages/manager/src/features/Firewalls/FirewallDetail/Devices/RemoveDeviceDialog.tsx +++ b/packages/manager/src/features/Firewalls/FirewallDetail/Devices/RemoveDeviceDialog.tsx @@ -1,7 +1,7 @@ import { FirewallDevice } from '@linode/api-v4'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { ConfirmationDialog } from 'src/components/ConfirmationDialog/ConfirmationDialog'; diff --git a/packages/manager/src/features/Firewalls/FirewallLanding/CreateFirewallDrawer.tsx b/packages/manager/src/features/Firewalls/FirewallLanding/CreateFirewallDrawer.tsx index 89c1eced39e..530be79abe6 100644 --- a/packages/manager/src/features/Firewalls/FirewallLanding/CreateFirewallDrawer.tsx +++ b/packages/manager/src/features/Firewalls/FirewallLanding/CreateFirewallDrawer.tsx @@ -11,7 +11,7 @@ import { CreateFirewallSchema } from '@linode/validation/lib/firewalls.schema'; import { useFormik } from 'formik'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { Box } from 'src/components/Box'; diff --git a/packages/manager/src/features/Firewalls/FirewallLanding/FirewallDialog.tsx b/packages/manager/src/features/Firewalls/FirewallLanding/FirewallDialog.tsx index 47573efb469..33fd6a16ce3 100644 --- a/packages/manager/src/features/Firewalls/FirewallLanding/FirewallDialog.tsx +++ b/packages/manager/src/features/Firewalls/FirewallLanding/FirewallDialog.tsx @@ -1,6 +1,6 @@ import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { ConfirmationDialog } from 'src/components/ConfirmationDialog/ConfirmationDialog'; diff --git a/packages/manager/src/features/GlobalNotifications/ComplianceUpdateModal.tsx b/packages/manager/src/features/GlobalNotifications/ComplianceUpdateModal.tsx index 17bc9f31f19..21d4ee82a23 100644 --- a/packages/manager/src/features/GlobalNotifications/ComplianceUpdateModal.tsx +++ b/packages/manager/src/features/GlobalNotifications/ComplianceUpdateModal.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { ConfirmationDialog } from 'src/components/ConfirmationDialog/ConfirmationDialog'; diff --git a/packages/manager/src/features/Images/ImagesLanding.tsx b/packages/manager/src/features/Images/ImagesLanding.tsx index 49d9b65514e..1bc17a33f5c 100644 --- a/packages/manager/src/features/Images/ImagesLanding.tsx +++ b/packages/manager/src/features/Images/ImagesLanding.tsx @@ -5,7 +5,7 @@ import { makeStyles } from 'tss-react/mui'; import produce from 'immer'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { useHistory } from 'react-router-dom'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; diff --git a/packages/manager/src/features/Linodes/CloneLanding/CloneLanding.tsx b/packages/manager/src/features/Linodes/CloneLanding/CloneLanding.tsx index 148c7c40aad..2582f476159 100644 --- a/packages/manager/src/features/Linodes/CloneLanding/CloneLanding.tsx +++ b/packages/manager/src/features/Linodes/CloneLanding/CloneLanding.tsx @@ -339,8 +339,7 @@ const CloneLanding = () => { selectedDisks={disksInState.filter((disk) => { return ( // This disk has been individually selected ... - state.diskSelection[disk.id].isSelected && - // ... AND it's associated configs are NOT selected + state.diskSelection[disk.id].isSelected && // ... AND it's associated configs are NOT selected intersection( pathOr( [], diff --git a/packages/manager/src/features/Linodes/LinodeEntityDetailHeader.tsx b/packages/manager/src/features/Linodes/LinodeEntityDetailHeader.tsx index b792be8fac7..885e22b3609 100644 --- a/packages/manager/src/features/Linodes/LinodeEntityDetailHeader.tsx +++ b/packages/manager/src/features/Linodes/LinodeEntityDetailHeader.tsx @@ -3,7 +3,7 @@ import { LinodeBackups } from '@linode/api-v4/lib/linodes'; import { Typography } from '@mui/material'; import { useTheme } from '@mui/material/styles'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Box } from 'src/components/Box'; import { Button } from 'src/components/Button/Button'; diff --git a/packages/manager/src/features/Linodes/LinodesCreate/AttachVLAN.tsx b/packages/manager/src/features/Linodes/LinodesCreate/AttachVLAN.tsx index 4332e95edaa..50a00436090 100644 --- a/packages/manager/src/features/Linodes/LinodesCreate/AttachVLAN.tsx +++ b/packages/manager/src/features/Linodes/LinodesCreate/AttachVLAN.tsx @@ -2,7 +2,7 @@ import { Interface } from '@linode/api-v4/lib/linodes'; import Grid from '@mui/material/Unstable_Grid2'; import { useTheme } from '@mui/material/styles'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Link } from 'src/components/Link'; import { Paper } from 'src/components/Paper'; @@ -46,7 +46,7 @@ export const AttachVLAN = React.memo((props: Props) => { React.useEffect(() => { // Ensure VLANs are fresh. - queryClient.invalidateQueries(vlansQueryKey); + queryClient.invalidateQueries([vlansQueryKey]); }, []); const regions = useRegionsQuery().data ?? []; diff --git a/packages/manager/src/features/Linodes/LinodesCreate/LinodeCreateContainer.tsx b/packages/manager/src/features/Linodes/LinodesCreate/LinodeCreateContainer.tsx index 10bcd964208..20fed84b85d 100644 --- a/packages/manager/src/features/Linodes/LinodesCreate/LinodeCreateContainer.tsx +++ b/packages/manager/src/features/Linodes/LinodesCreate/LinodeCreateContainer.tsx @@ -53,11 +53,7 @@ import withAgreements, { AgreementsProps, } from 'src/features/Account/Agreements/withAgreements'; import { hasPlacementGroupReachedCapacity } from 'src/features/PlacementGroups/utils'; -import { - accountAgreementsQueryKey, - reportAgreementSigningError, -} from 'src/queries/accountAgreements'; -import { simpleMutationHandlers } from 'src/queries/base'; +import { reportAgreementSigningError } from 'src/queries/accountAgreements'; import { vpcQueryKey } from 'src/queries/vpcs'; import { CreateTypes } from 'src/store/linodeCreate/linodeCreate.actions'; import { MapState } from 'src/store/types'; @@ -67,11 +63,11 @@ import { } from 'src/utilities/analytics'; import { getAPIErrorOrDefault } from 'src/utilities/errorUtils'; import { ExtendedType, extendType } from 'src/utilities/extendType'; -import { isEURegion } from 'src/utilities/formatRegion'; import { getGDPRDetails, getSelectedRegionGroup, } from 'src/utilities/formatRegion'; +import { isEURegion } from 'src/utilities/formatRegion'; import { ExtendedIP } from 'src/utilities/ipUtils'; import { UNKNOWN_PRICE } from 'src/utilities/pricing/constants'; import { getLinodeRegionPrice } from 'src/utilities/pricing/linodes'; @@ -79,8 +75,8 @@ import { getQueryParamsFromQueryString } from 'src/utilities/queryParams'; import { scrollErrorIntoView } from 'src/utilities/scrollErrorIntoView'; import { validatePassword } from 'src/utilities/validatePassword'; -import LinodeCreate from './LinodeCreate'; import { deriveDefaultLabel } from './deriveDefaultLabel'; +import LinodeCreate from './LinodeCreate'; import { HandleSubmit, Info, LinodeCreateValidation, TypeInfo } from './types'; import type { @@ -877,20 +873,18 @@ class LinodeCreateContainer extends React.PureComponent { this.setState({ formIsSubmitting: false }); if (signedAgreement) { - this.props.queryClient.executeMutation< - {}, - APIError[], - Partial - >({ - mutationFn: signAgreement, - mutationKey: accountAgreementsQueryKey, - onError: reportAgreementSigningError, - variables: { eu_model: true, privacy_policy: true }, - ...simpleMutationHandlers( - accountAgreementsQueryKey, - this.props.queryClient - ), - }); + const agreeData = { eu_model: true, privacy_policy: true }; + signAgreement(agreeData) + .then(() => { + this.props.queryClient.setQueryData( + ['account', 'agreements'], + (prev) => ({ + ...(prev ?? {}), + ...agreeData, + }) + ); + }) + .catch(reportAgreementSigningError); } /** Analytics creation event */ diff --git a/packages/manager/src/features/Linodes/LinodesCreate/SelectLinodePanel/SelectLinodeRow.tsx b/packages/manager/src/features/Linodes/LinodesCreate/SelectLinodePanel/SelectLinodeRow.tsx index 5e4bf419a29..e1cdd70fa47 100644 --- a/packages/manager/src/features/Linodes/LinodesCreate/SelectLinodePanel/SelectLinodeRow.tsx +++ b/packages/manager/src/features/Linodes/LinodesCreate/SelectLinodePanel/SelectLinodeRow.tsx @@ -1,7 +1,7 @@ import ErrorOutline from '@mui/icons-material/ErrorOutline'; import { useTheme } from '@mui/material'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Box } from 'src/components/Box'; import { CircleProgress } from 'src/components/CircleProgress'; diff --git a/packages/manager/src/features/Linodes/LinodesCreate/VLANAccordion.tsx b/packages/manager/src/features/Linodes/LinodesCreate/VLANAccordion.tsx index 3a9cc92b3e3..9cb966e6fb9 100644 --- a/packages/manager/src/features/Linodes/LinodesCreate/VLANAccordion.tsx +++ b/packages/manager/src/features/Linodes/LinodesCreate/VLANAccordion.tsx @@ -1,6 +1,6 @@ import { Interface } from '@linode/api-v4/lib/linodes'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Accordion } from 'src/components/Accordion'; import { Box } from 'src/components/Box'; @@ -41,7 +41,7 @@ export const VLANAccordion = React.memo((props: VLANAccordionProps) => { React.useEffect(() => { // Ensure VLANs are fresh. - queryClient.invalidateQueries(vlansQueryKey); + queryClient.invalidateQueries([vlansQueryKey]); }, []); const regions = useRegionsQuery().data ?? []; diff --git a/packages/manager/src/features/Linodes/LinodesDetail/LinodeConfigs/LinodeConfigDialog.tsx b/packages/manager/src/features/Linodes/LinodesDetail/LinodeConfigs/LinodeConfigDialog.tsx index 072c1bfeeba..56676a7edb6 100644 --- a/packages/manager/src/features/Linodes/LinodesDetail/LinodeConfigs/LinodeConfigDialog.tsx +++ b/packages/manager/src/features/Linodes/LinodesDetail/LinodeConfigs/LinodeConfigDialog.tsx @@ -10,7 +10,7 @@ import { useFormik } from 'formik'; import { useSnackbar } from 'notistack'; import { equals, pathOr, repeat } from 'ramda'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { Box } from 'src/components/Box'; @@ -391,7 +391,7 @@ export const LinodeConfigDialog = (props: Props) => { (thisInterface) => thisInterface.purpose === 'vlan' ) ) { - queryClient.invalidateQueries(vlansQueryKey); + queryClient.invalidateQueries([vlansQueryKey]); } // Ensure VPC query data is up-to-date @@ -400,7 +400,7 @@ export const LinodeConfigDialog = (props: Props) => { (thisInterface) => thisInterface.purpose === 'vpc' ) ) { - queryClient.invalidateQueries(vpcQueryKey); + queryClient.invalidateQueries([vpcQueryKey]); } enqueueSnackbar( @@ -451,7 +451,7 @@ export const LinodeConfigDialog = (props: Props) => { React.useEffect(() => { if (open) { // Ensure VLANs are fresh. - queryClient.invalidateQueries(vlansQueryKey); + queryClient.invalidateQueries([vlansQueryKey]); /** * If config is defined, we're editing. Set the state diff --git a/packages/manager/src/features/Linodes/LinodesLanding/DeleteLinodeDialog.tsx b/packages/manager/src/features/Linodes/LinodesLanding/DeleteLinodeDialog.tsx index e0b5dd916bb..f77a0b1f351 100644 --- a/packages/manager/src/features/Linodes/LinodesLanding/DeleteLinodeDialog.tsx +++ b/packages/manager/src/features/Linodes/LinodesLanding/DeleteLinodeDialog.tsx @@ -1,5 +1,5 @@ import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Notice } from 'src/components/Notice/Notice'; import { TypeToConfirmDialog } from 'src/components/TypeToConfirmDialog/TypeToConfirmDialog'; diff --git a/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx b/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx index bf76d4729c7..fb2963832f9 100644 --- a/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx +++ b/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx @@ -5,10 +5,10 @@ import { getObjectList, getObjectURL, } from '@linode/api-v4/lib/object-storage'; +import { useQueryClient } from '@tanstack/react-query'; import produce from 'immer'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; import { useHistory, useLocation, useRouteMatch } from 'react-router-dom'; import { Waypoint } from 'react-waypoint'; import { debounce } from 'throttle-debounce'; diff --git a/packages/manager/src/features/PlacementGroups/PlacementGroupsCreateDrawer.tsx b/packages/manager/src/features/PlacementGroups/PlacementGroupsCreateDrawer.tsx index 6b2e80cbe58..46c709c88e4 100644 --- a/packages/manager/src/features/PlacementGroups/PlacementGroupsCreateDrawer.tsx +++ b/packages/manager/src/features/PlacementGroups/PlacementGroupsCreateDrawer.tsx @@ -2,7 +2,7 @@ import { createPlacementGroupSchema } from '@linode/validation'; import { useFormik } from 'formik'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Drawer } from 'src/components/Drawer'; import { useFormValidateOnChange } from 'src/hooks/useFormValidateOnChange'; diff --git a/packages/manager/src/features/PlacementGroups/PlacementGroupsRenameDrawer.tsx b/packages/manager/src/features/PlacementGroups/PlacementGroupsRenameDrawer.tsx index 1eb03f28b6a..0a898e3b52f 100644 --- a/packages/manager/src/features/PlacementGroups/PlacementGroupsRenameDrawer.tsx +++ b/packages/manager/src/features/PlacementGroups/PlacementGroupsRenameDrawer.tsx @@ -2,7 +2,7 @@ import { renamePlacementGroupSchema } from '@linode/validation'; import { useFormik } from 'formik'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Drawer } from 'src/components/Drawer'; import { useFormValidateOnChange } from 'src/hooks/useFormValidateOnChange'; diff --git a/packages/manager/src/features/Profile/AuthenticationSettings/PhoneVerification/PhoneVerification.tsx b/packages/manager/src/features/Profile/AuthenticationSettings/PhoneVerification/PhoneVerification.tsx index b1ba84369c3..f2ab35d106b 100644 --- a/packages/manager/src/features/Profile/AuthenticationSettings/PhoneVerification/PhoneVerification.tsx +++ b/packages/manager/src/features/Profile/AuthenticationSettings/PhoneVerification/PhoneVerification.tsx @@ -3,7 +3,7 @@ import { useFormik } from 'formik'; import { CountryCode, parsePhoneNumber } from 'libphonenumber-js'; import { useSnackbar } from 'notistack'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Box } from 'src/components/Box'; import { Button } from 'src/components/Button/Button'; @@ -98,7 +98,7 @@ export const PhoneVerification = ({ ); } else { // Cloud Manager does not know about the country, so lets refetch the user's phone number so we know it's displaying correctly - queryClient.invalidateQueries(queryKey); + queryClient.invalidateQueries([queryKey]); } // reset form states diff --git a/packages/manager/src/features/Profile/AuthenticationSettings/TwoFactor/TwoFactor.tsx b/packages/manager/src/features/Profile/AuthenticationSettings/TwoFactor/TwoFactor.tsx index 0d1b89a8c7b..655b8c5c1f7 100644 --- a/packages/manager/src/features/Profile/AuthenticationSettings/TwoFactor/TwoFactor.tsx +++ b/packages/manager/src/features/Profile/AuthenticationSettings/TwoFactor/TwoFactor.tsx @@ -1,7 +1,7 @@ import { getTFAToken } from '@linode/api-v4/lib/profile'; import { APIError } from '@linode/api-v4/lib/types'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { StyledLinkButton } from 'src/components/Button/StyledLinkButton'; import { Notice } from 'src/components/Notice/Notice'; @@ -61,7 +61,7 @@ export const TwoFactor = (props: TwoFactorProps) => { */ const handleEnableSuccess = (scratchCode: string) => { // Refetch Profile with React Query so profile is up to date - queryClient.invalidateQueries(queryKey); + queryClient.invalidateQueries([queryKey]); setSuccess('Two-factor authentication has been enabled.'); setShowQRCode(false); setTwoFactorEnabled(true); diff --git a/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.test.tsx b/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.test.tsx index 6d9de4f6fe6..d6595d73a1e 100644 --- a/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.test.tsx +++ b/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.test.tsx @@ -1,7 +1,7 @@ import { Grants, Profile } from '@linode/api-v4/lib'; import { APIError } from '@linode/api-v4/lib/types'; import * as React from 'react'; -import { UseQueryResult } from 'react-query'; +import { UseQueryResult } from '@tanstack/react-query'; import { reactRouterProps } from 'src/__data__/reactRouterProps'; import { imageFactory, normalizeEntities, profileFactory } from 'src/factories'; diff --git a/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.tsx b/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.tsx index 30c51fa3a6e..f4971810641 100644 --- a/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.tsx +++ b/packages/manager/src/features/StackScripts/StackScriptCreate/StackScriptCreate.tsx @@ -9,7 +9,7 @@ import { import { APIError } from '@linode/api-v4/lib/types'; import { equals } from 'ramda'; import * as React from 'react'; -import { QueryClient } from 'react-query'; +import { QueryClient } from '@tanstack/react-query'; import { RouteComponentProps, withRouter } from 'react-router-dom'; import { compose } from 'recompose'; import { debounce } from 'throttle-debounce'; @@ -78,7 +78,7 @@ export class StackScriptCreate extends React.Component { }, } = this.props; const valuesFromStorage = storage.stackScriptInProgress.get(); - const account = this.props.queryClient.getQueryData('account'); + const account = this.props.queryClient.getQueryData(['account']); if (stackScriptID) { // If we have a stackScriptID we're in the edit flow and @@ -284,7 +284,7 @@ export class StackScriptCreate extends React.Component { }, mode, } = this.props; - const account = queryClient.getQueryData('account'); + const account = queryClient.getQueryData(['account']); if (account) { // Use the euuid if we're creating to avoid loading another user's data diff --git a/packages/manager/src/features/Users/UserDetail.tsx b/packages/manager/src/features/Users/UserDetail.tsx index 8e09a60acea..c12422b3e0a 100644 --- a/packages/manager/src/features/Users/UserDetail.tsx +++ b/packages/manager/src/features/Users/UserDetail.tsx @@ -3,7 +3,7 @@ import { updateProfile } from '@linode/api-v4/lib/profile'; import { APIError } from '@linode/api-v4/lib/types'; import { clone } from 'ramda'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { matchPath, useHistory, diff --git a/packages/manager/src/features/Users/UserPermissions.tsx b/packages/manager/src/features/Users/UserPermissions.tsx index 70b815f7084..f217a186abe 100644 --- a/packages/manager/src/features/Users/UserPermissions.tsx +++ b/packages/manager/src/features/Users/UserPermissions.tsx @@ -14,7 +14,7 @@ import Grid from '@mui/material/Unstable_Grid2'; import { WithSnackbarProps, withSnackbar } from 'notistack'; import { compose, flatten, lensPath, omit, set } from 'ramda'; import * as React from 'react'; -import { QueryClient } from 'react-query'; +import { QueryClient } from '@tanstack/react-query'; import { compose as recompose } from 'recompose'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; @@ -301,7 +301,7 @@ class UserPermissions extends React.Component { // unconditionally sets this.state.loadingGrants to false this.getUserGrants(); // refresh the data on /account/users so it is accurate - this.props.queryClient.invalidateQueries('account-users'); + this.props.queryClient.invalidateQueries(['account', 'users']); this.props.enqueueSnackbar('User permissions successfully saved.', { variant: 'success', }); diff --git a/packages/manager/src/features/VPCs/VPCDetail/SubnetAssignLinodesDrawer.tsx b/packages/manager/src/features/VPCs/VPCDetail/SubnetAssignLinodesDrawer.tsx index 16a2eacc7b9..08e97281a50 100644 --- a/packages/manager/src/features/VPCs/VPCDetail/SubnetAssignLinodesDrawer.tsx +++ b/packages/manager/src/features/VPCs/VPCDetail/SubnetAssignLinodesDrawer.tsx @@ -143,9 +143,10 @@ export const SubnetAssignLinodesDrawer = ( // Determine the configId based on the number of configurations function getConfigId(linodeConfigs: Config[], selectedConfig: Config | null) { return ( - (linodeConfigs.length > 1 - ? selectedConfig?.id // Use selected configuration's id if available - : linodeConfigs[0]?.id) ?? -1 // Use the first configuration's id or -1 if no configurations + // Use the first configuration's id or -1 if no configurations + (linodeConfigs.length > 1 // Use selected configuration's id if available + ? selectedConfig?.id + : linodeConfigs[0]?.id) ?? -1 ); } diff --git a/packages/manager/src/features/VPCs/VPCDetail/SubnetLinodeRow.tsx b/packages/manager/src/features/VPCs/VPCDetail/SubnetLinodeRow.tsx index be9474d2da9..0df5ff9bd16 100644 --- a/packages/manager/src/features/VPCs/VPCDetail/SubnetLinodeRow.tsx +++ b/packages/manager/src/features/VPCs/VPCDetail/SubnetLinodeRow.tsx @@ -2,7 +2,7 @@ import { APIError, Firewall, Linode } from '@linode/api-v4'; import { Config, Interface } from '@linode/api-v4/lib/linodes/types'; import ErrorOutline from '@mui/icons-material/ErrorOutline'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { Box } from 'src/components/Box'; import { CircleProgress } from 'src/components/CircleProgress'; diff --git a/packages/manager/src/features/VPCs/VPCDetail/SubnetUnassignLinodesDrawer.tsx b/packages/manager/src/features/VPCs/VPCDetail/SubnetUnassignLinodesDrawer.tsx index 952ad1efdf0..bee06841f95 100644 --- a/packages/manager/src/features/VPCs/VPCDetail/SubnetUnassignLinodesDrawer.tsx +++ b/packages/manager/src/features/VPCs/VPCDetail/SubnetUnassignLinodesDrawer.tsx @@ -2,7 +2,7 @@ import { Subnet } from '@linode/api-v4/lib/vpcs/types'; import { Stack, Typography } from '@mui/material'; import { useFormik } from 'formik'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { ActionsPanel } from 'src/components/ActionsPanel/ActionsPanel'; import { Autocomplete } from 'src/components/Autocomplete/Autocomplete'; diff --git a/packages/manager/src/hooks/useEventHandlers.ts b/packages/manager/src/hooks/useEventHandlers.ts index 73693eceed1..2bd7c2543bd 100644 --- a/packages/manager/src/hooks/useEventHandlers.ts +++ b/packages/manager/src/hooks/useEventHandlers.ts @@ -1,4 +1,4 @@ -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { oauthClientsEventHandler } from 'src/queries/accountOAuth'; import { databaseEventsHandler } from 'src/queries/databases'; @@ -14,7 +14,7 @@ import { tokenEventHandler } from 'src/queries/tokens'; import { volumeEventsHandler } from 'src/queries/volumes'; import type { Event } from '@linode/api-v4'; -import type { QueryClient } from 'react-query'; +import type { QueryClient } from '@tanstack/react-query'; export interface EventHandlerData { event: Event; diff --git a/packages/manager/src/hooks/useInitialRequests.ts b/packages/manager/src/hooks/useInitialRequests.ts index 804cf1ef7de..c9dfc9d702e 100644 --- a/packages/manager/src/hooks/useInitialRequests.ts +++ b/packages/manager/src/hooks/useInitialRequests.ts @@ -1,7 +1,7 @@ import { getAccountInfo, getAccountSettings } from '@linode/api-v4/lib/account'; import { getProfile, getUserPreferences } from '@linode/api-v4/lib/profile'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { useAuthentication } from 'src/hooks/useAuthentication'; import { usePendingUpload } from 'src/hooks/usePendingUpload'; @@ -62,25 +62,25 @@ export const useInitialRequests = () => { // Fetch user's account information queryClient.prefetchQuery({ queryFn: getAccountInfo, - queryKey: accountQueryKey, + queryKey: [accountQueryKey], }), // Username and whether a user is restricted queryClient.prefetchQuery({ queryFn: () => getProfile(), - queryKey: 'profile', + queryKey: ['profile'], }), // Is a user managed queryClient.prefetchQuery({ queryFn: getAccountSettings, - queryKey: 'account-settings', + queryKey: ['account', 'settings'], }), // preferences queryClient.prefetchQuery({ queryFn: getUserPreferences, - queryKey: 'preferences', + queryKey: ['preferences'], }), ]; diff --git a/packages/manager/src/hooks/useOrder.test.tsx b/packages/manager/src/hooks/useOrder.test.tsx index 94838acd73f..1f6b4e0a559 100644 --- a/packages/manager/src/hooks/useOrder.test.tsx +++ b/packages/manager/src/hooks/useOrder.test.tsx @@ -1,5 +1,5 @@ import { act, renderHook, waitFor } from '@testing-library/react'; -import { QueryClient } from 'react-query'; +import { QueryClient } from '@tanstack/react-query'; import { rest, server } from 'src/mocks/testServer'; import { queryClientFactory } from 'src/queries/base'; diff --git a/packages/manager/src/hooks/useUnassignLinode.ts b/packages/manager/src/hooks/useUnassignLinode.ts index 98b1c18a8e5..197b7b15323 100644 --- a/packages/manager/src/hooks/useUnassignLinode.ts +++ b/packages/manager/src/hooks/useUnassignLinode.ts @@ -1,6 +1,6 @@ import { deleteLinodeConfigInterface } from '@linode/api-v4'; import * as React from 'react'; -import { useQueryClient } from 'react-query'; +import { useQueryClient } from '@tanstack/react-query'; import { configQueryKey, interfaceQueryKey } from 'src/queries/linodes/configs'; import { queryKey } from 'src/queries/linodes/linodes'; diff --git a/packages/manager/src/index.tsx b/packages/manager/src/index.tsx index 34b40de4edc..2486f6a902b 100644 --- a/packages/manager/src/index.tsx +++ b/packages/manager/src/index.tsx @@ -2,8 +2,8 @@ import CssBaseline from '@mui/material/CssBaseline'; import 'font-logos/assets/font-logos.css'; import * as React from 'react'; import { createRoot } from 'react-dom/client'; -import { QueryClientProvider } from 'react-query'; -import { ReactQueryDevtools } from 'react-query/devtools'; +import { QueryClientProvider } from '@tanstack/react-query'; +import { ReactQueryDevtools } from '@tanstack/react-query-devtools'; import { Provider as ReduxStoreProvider } from 'react-redux'; import { Route, BrowserRouter as Router, Switch } from 'react-router-dom'; diff --git a/packages/manager/src/queries/account.ts b/packages/manager/src/queries/account.ts index e18ff88aff4..2706f154ab7 100644 --- a/packages/manager/src/queries/account.ts +++ b/packages/manager/src/queries/account.ts @@ -10,7 +10,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { useGrants, useProfile } from 'src/queries/profile'; @@ -30,7 +30,7 @@ export const queryKey = 'account'; export const useAccount = () => { const { data: profile } = useProfile(); - return useQuery(queryKey, getAccountInfo, { + return useQuery([queryKey], getAccountInfo, { ...queryPresets.oneTimeFetch, ...queryPresets.noRetry, enabled: !profile?.restricted, @@ -42,7 +42,7 @@ export const useMutateAccount = () => { return useMutation>(updateAccountInfo, { onSuccess(account) { - queryClient.setQueryData(queryKey, account); + queryClient.setQueryData([queryKey], account); }, }); }; diff --git a/packages/manager/src/queries/accountAgreements.ts b/packages/manager/src/queries/accountAgreements.ts index f631f21dc56..af37ec18a11 100644 --- a/packages/manager/src/queries/accountAgreements.ts +++ b/packages/manager/src/queries/accountAgreements.ts @@ -4,20 +4,18 @@ import { signAgreement, } from '@linode/api-v4/lib/account'; import { APIError } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { reportException } from 'src/exceptionReporting'; import { useProfile } from 'src/queries/profile'; import { queryPresets, simpleMutationHandlers } from './base'; -export const accountAgreementsQueryKey = 'account-agreements'; - export const useAccountAgreements = (enabled?: boolean) => { const { data: profile } = useProfile(); return useQuery( - accountAgreementsQueryKey, + ['account', 'agreements'], getAccountAgreements, { ...queryPresets.oneTimeFetch, @@ -35,7 +33,7 @@ export const useMutateAccountAgreements = () => { return useMutation<{}, APIError[], Partial>( (data) => signAgreement(data), simpleMutationHandlers>( - accountAgreementsQueryKey, + ['account', 'agreements'], queryClient ) ); diff --git a/packages/manager/src/queries/accountAvailability.ts b/packages/manager/src/queries/accountAvailability.ts index fd7318fab16..fbd3923fc5e 100644 --- a/packages/manager/src/queries/accountAvailability.ts +++ b/packages/manager/src/queries/accountAvailability.ts @@ -9,7 +9,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/accountBetas.ts b/packages/manager/src/queries/accountBetas.ts index 733e49e6b4d..70545c1412e 100644 --- a/packages/manager/src/queries/accountBetas.ts +++ b/packages/manager/src/queries/accountBetas.ts @@ -11,7 +11,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; export const queryKey = 'account-betas'; diff --git a/packages/manager/src/queries/accountBilling.ts b/packages/manager/src/queries/accountBilling.ts index 3258bcd064f..c0fdf606401 100644 --- a/packages/manager/src/queries/accountBilling.ts +++ b/packages/manager/src/queries/accountBilling.ts @@ -5,7 +5,7 @@ import { getPayments, } from '@linode/api-v4/lib/account'; import { APIError, Filter, Params } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/accountLogins.ts b/packages/manager/src/queries/accountLogins.ts index f1021e6dbec..6de9ebb3db3 100644 --- a/packages/manager/src/queries/accountLogins.ts +++ b/packages/manager/src/queries/accountLogins.ts @@ -5,7 +5,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; export const queryKey = 'account-login'; diff --git a/packages/manager/src/queries/accountMaintenance.ts b/packages/manager/src/queries/accountMaintenance.ts index 4111d89981e..4838b5cbca7 100644 --- a/packages/manager/src/queries/accountMaintenance.ts +++ b/packages/manager/src/queries/accountMaintenance.ts @@ -6,7 +6,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/accountNotifications.ts b/packages/manager/src/queries/accountNotifications.ts index c53eb9dfffb..cf1fecd896c 100644 --- a/packages/manager/src/queries/accountNotifications.ts +++ b/packages/manager/src/queries/accountNotifications.ts @@ -1,5 +1,5 @@ import { APIError, Notification, getNotifications } from '@linode/api-v4'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/accountOAuth.ts b/packages/manager/src/queries/accountOAuth.ts index 23277144230..3a8d610809e 100644 --- a/packages/manager/src/queries/accountOAuth.ts +++ b/packages/manager/src/queries/accountOAuth.ts @@ -10,7 +10,7 @@ import { resetOAuthClientSecret, updateOAuthClient, } from '@linode/api-v4'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { EventHandlerData } from 'src/hooks/useEventHandlers'; diff --git a/packages/manager/src/queries/accountPayment.ts b/packages/manager/src/queries/accountPayment.ts index b17c5922ee7..caeb188bc42 100644 --- a/packages/manager/src/queries/accountPayment.ts +++ b/packages/manager/src/queries/accountPayment.ts @@ -10,7 +10,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { useGrants } from 'src/queries/profile'; import { getAll } from 'src/utilities/getAll'; @@ -36,7 +36,7 @@ export const useAllPaymentMethodsQuery = () => { const { data: grants } = useGrants(); return useQuery( - queryKey + '-all', + [queryKey + '-all'], getAllPaymentMethodsRequest, { ...queryPresets.oneTimeFetch, @@ -56,7 +56,7 @@ export const getAllPaymentMethodsRequest = () => export const useClientToken = () => useQuery( - queryKey + '-client-token', + [queryKey + '-client-token'], getClientToken, queryPresets.longLived ); diff --git a/packages/manager/src/queries/accountSettings.ts b/packages/manager/src/queries/accountSettings.ts index c49c42143c0..5bfbfa35a0a 100644 --- a/packages/manager/src/queries/accountSettings.ts +++ b/packages/manager/src/queries/accountSettings.ts @@ -9,22 +9,24 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { useProfile } from 'src/queries/profile'; import { queryPresets } from './base'; -export const queryKey = 'account-settings'; - export const useAccountSettings = () => { const { data: profile } = useProfile(); - return useQuery(queryKey, getAccountSettings, { - ...queryPresets.oneTimeFetch, - ...queryPresets.noRetry, - enabled: !profile?.restricted, - }); + return useQuery( + ['account', 'settings'], + getAccountSettings, + { + ...queryPresets.oneTimeFetch, + ...queryPresets.noRetry, + enabled: !profile?.restricted, + } + ); }; export const useMutateAccountSettings = () => { @@ -48,8 +50,11 @@ export const updateAccountSettingsData = ( newData: Partial, queryClient: QueryClient ): void => { - queryClient.setQueryData(queryKey, (oldData: AccountSettings) => ({ - ...oldData, - ...newData, - })); + queryClient.setQueryData( + ['account', 'settings'], + (oldData: AccountSettings) => ({ + ...oldData, + ...newData, + }) + ); }; diff --git a/packages/manager/src/queries/accountTransfer.ts b/packages/manager/src/queries/accountTransfer.ts index 63688e7cbe8..83f371bcbe0 100644 --- a/packages/manager/src/queries/accountTransfer.ts +++ b/packages/manager/src/queries/accountTransfer.ts @@ -3,13 +3,13 @@ import { getNetworkUtilization, } from '@linode/api-v4/lib/account'; import { APIError } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { queryPresets } from './base'; export const useAccountTransfer = () => useQuery( - 'network-utilization', + ['network-utilization'], getNetworkUtilization, queryPresets.oneTimeFetch ); diff --git a/packages/manager/src/queries/accountUsers.ts b/packages/manager/src/queries/accountUsers.ts index c22de8fcc84..7aa005f3ab9 100644 --- a/packages/manager/src/queries/accountUsers.ts +++ b/packages/manager/src/queries/accountUsers.ts @@ -4,7 +4,7 @@ import { getUser, getUsers, } from '@linode/api-v4/lib/account'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useProfile } from 'src/queries/profile'; diff --git a/packages/manager/src/queries/aclb/certificates.ts b/packages/manager/src/queries/aclb/certificates.ts index d3fc0db024c..840dc4537ea 100644 --- a/packages/manager/src/queries/aclb/certificates.ts +++ b/packages/manager/src/queries/aclb/certificates.ts @@ -10,7 +10,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { QUERY_KEY } from './loadbalancers'; diff --git a/packages/manager/src/queries/aclb/configurations.ts b/packages/manager/src/queries/aclb/configurations.ts index 3e27c543c7d..8c7dfe347ce 100644 --- a/packages/manager/src/queries/aclb/configurations.ts +++ b/packages/manager/src/queries/aclb/configurations.ts @@ -10,7 +10,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { QUERY_KEY } from './loadbalancers'; diff --git a/packages/manager/src/queries/aclb/loadbalancers.ts b/packages/manager/src/queries/aclb/loadbalancers.ts index 69d065c2c54..b46215e267f 100644 --- a/packages/manager/src/queries/aclb/loadbalancers.ts +++ b/packages/manager/src/queries/aclb/loadbalancers.ts @@ -7,7 +7,7 @@ import { getLoadbalancers, updateLoadbalancer, } from '@linode/api-v4'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import type { APIError, diff --git a/packages/manager/src/queries/aclb/routes.ts b/packages/manager/src/queries/aclb/routes.ts index a91cd3bebf7..2769d9846d3 100644 --- a/packages/manager/src/queries/aclb/routes.ts +++ b/packages/manager/src/queries/aclb/routes.ts @@ -10,7 +10,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { updateInPaginatedStore } from '../base'; import { QUERY_KEY } from './loadbalancers'; diff --git a/packages/manager/src/queries/aclb/serviceTargets.ts b/packages/manager/src/queries/aclb/serviceTargets.ts index 4e5b0ad3ad3..535c89e5a06 100644 --- a/packages/manager/src/queries/aclb/serviceTargets.ts +++ b/packages/manager/src/queries/aclb/serviceTargets.ts @@ -10,7 +10,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { QUERY_KEY } from './loadbalancers'; diff --git a/packages/manager/src/queries/base.ts b/packages/manager/src/queries/base.ts index 2855299eb4d..69cb1a482a0 100644 --- a/packages/manager/src/queries/base.ts +++ b/packages/manager/src/queries/base.ts @@ -5,7 +5,7 @@ import { QueryKey, UseMutationOptions, UseQueryOptions, -} from 'react-query'; +} from '@tanstack/react-query'; // ============================================================================= // Config @@ -70,7 +70,7 @@ export const listToItemsByID = ( }; export const mutationHandlers = ( - queryKey: string, + queryKey: QueryKey, indexer: string = 'id', queryClient: QueryClient ): UseMutationOptions void> => { @@ -86,7 +86,7 @@ export const mutationHandlers = ( }; export const simpleMutationHandlers = ( - queryKey: string, + queryKey: QueryKey, queryClient: QueryClient ): UseMutationOptions void> => { return { @@ -100,7 +100,7 @@ export const simpleMutationHandlers = ( }; export const creationHandlers = ( - queryKey: string, + queryKey: QueryKey, indexer: string = 'id', queryClient: QueryClient ): UseMutationOptions void> => { @@ -116,7 +116,7 @@ export const creationHandlers = ( }; export const deletionHandlers = ( - queryKey: string, + queryKey: QueryKey, indexer: string = 'id', queryClient: QueryClient ): UseMutationOptions void> => { diff --git a/packages/manager/src/queries/betas.ts b/packages/manager/src/queries/betas.ts index 4d199c808e2..19cf23a7a5f 100644 --- a/packages/manager/src/queries/betas.ts +++ b/packages/manager/src/queries/betas.ts @@ -1,5 +1,5 @@ import { Beta, getBetas, getBeta } from '@linode/api-v4/lib/betas'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { APIError, Filter, diff --git a/packages/manager/src/queries/databases.ts b/packages/manager/src/queries/databases.ts index a17e46f3daf..deb682283f4 100644 --- a/packages/manager/src/queries/databases.ts +++ b/packages/manager/src/queries/databases.ts @@ -35,7 +35,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { EventHandlerData } from 'src/hooks/useEventHandlers'; import { getAll } from 'src/utilities/getAll'; @@ -66,7 +66,7 @@ export const useDatabasesQuery = (params: Params, filter: Filter) => export const useAllDatabasesQuery = (enabled: boolean = true) => useQuery( - `${queryKey}-all-list`, + [`${queryKey}-all-list`], getAllDatabases, { enabled } ); @@ -86,7 +86,7 @@ export const useDatabaseMutation = (engine: Engine, id: number) => { if (oldEntity.label !== data.label) { updateInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], id, { label: data.label, @@ -112,7 +112,7 @@ export const useCreateDatabaseMutation = () => { // Invalidate useDatabasesQuery to show include the new database. // We choose to refetch insted of manually mutate the cache because it // is API paginated. - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); // Add database to the cache queryClient.setQueryData([queryKey, data.id], data); // If a restricted user creates an entity, we must make sure grants are up to date. @@ -129,7 +129,7 @@ export const useDeleteDatabaseMutation = (engine: Engine, id: number) => { // Invalidate useDatabasesQuery to remove the deleted database. // We choose to refetch insted of manually mutate the cache because it // is API paginated. - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); }, }); }; @@ -152,7 +152,7 @@ export const getAllDatabaseEngines = () => export const useDatabaseEnginesQuery = (enabled: boolean = false) => useQuery( - `${queryKey}-versions`, + [`${queryKey}-versions`], getAllDatabaseEngines, { enabled } ); @@ -164,7 +164,7 @@ export const getAllDatabaseTypes = () => export const useDatabaseTypesQuery = () => useQuery( - `${queryKey}-types`, + [`${queryKey}-types`], getAllDatabaseTypes ); @@ -174,7 +174,7 @@ export const useDatabaseCredentialsQuery = ( enabled: boolean = false ) => useQuery( - [`${queryKey}-credentials`, id], + [[queryKey, 'credentials'], id], () => getDatabaseCredentials(engine, id), { ...queryPresets.oneTimeFetch, enabled } ); @@ -185,8 +185,8 @@ export const useDatabaseCredentialsMutation = (engine: Engine, id: number) => { () => resetDatabaseCredentials(engine, id), { onSuccess: () => { - queryClient.invalidateQueries([`${queryKey}-credentials`, id]); - queryClient.removeQueries([`${queryKey}-credentials`, id]); + queryClient.invalidateQueries([[queryKey, 'credentials'], id]); + queryClient.removeQueries([[queryKey, 'credentials'], id]); }, } ); @@ -225,7 +225,7 @@ export const databaseEventsHandler = (event: EventHandlerData) => { // Database status will change from `provisioning` to `active` (or `failed`) and // the host fields will populate. We need to refetch to get the hostnames. queryClient.invalidateQueries([queryKey, entity!.id]); - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); case 'notification': // In this case, the API let us know the user initialized a Database create event. // We use this logic for the case a user created a Database from outside Cloud Manager, @@ -235,7 +235,7 @@ export const databaseEventsHandler = (event: EventHandlerData) => { entity!.id, ]); if (!storedDatabase) { - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); } case 'scheduled': case 'started': @@ -250,7 +250,7 @@ const updateStoreForDatabase = ( queryClient: QueryClient ) => { updateDatabaseStore(id, data, queryClient); - updateInPaginatedStore(`${queryKey}-list`, id, data, queryClient); + updateInPaginatedStore([`${queryKey}-list`], id, data, queryClient); }; const updateDatabaseStore = ( diff --git a/packages/manager/src/queries/domains.ts b/packages/manager/src/queries/domains.ts index fe57b612bfc..66644bc4e4c 100644 --- a/packages/manager/src/queries/domains.ts +++ b/packages/manager/src/queries/domains.ts @@ -20,7 +20,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/entityTransfers.ts b/packages/manager/src/queries/entityTransfers.ts index 18b5eb2017e..a0dfee17111 100644 --- a/packages/manager/src/queries/entityTransfers.ts +++ b/packages/manager/src/queries/entityTransfers.ts @@ -6,7 +6,7 @@ import { getEntityTransfers, } from '@linode/api-v4/lib/entity-transfers'; import { APIError, Filter, Params } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { useProfile } from 'src/queries/profile'; @@ -75,6 +75,6 @@ export const useCreateTransfer = () => { (createData) => { return createEntityTransfer(createData); }, - creationHandlers(queryKey, 'token', queryClient) + creationHandlers([queryKey], 'token', queryClient) ); }; diff --git a/packages/manager/src/queries/events/events.ts b/packages/manager/src/queries/events/events.ts index 2ef13ec33fe..5e8554cd756 100644 --- a/packages/manager/src/queries/events/events.ts +++ b/packages/manager/src/queries/events/events.ts @@ -9,7 +9,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { ISO_DATETIME_NO_TZ_FORMAT, POLLING_INTERVALS } from 'src/constants'; import { useEventHandlers } from 'src/hooks/useEventHandlers'; diff --git a/packages/manager/src/queries/firewalls.ts b/packages/manager/src/queries/firewalls.ts index 2cb17838ee0..f38d81cb532 100644 --- a/packages/manager/src/queries/firewalls.ts +++ b/packages/manager/src/queries/firewalls.ts @@ -20,7 +20,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { EventHandlerData } from 'src/hooks/useEventHandlers'; import { queryKey as linodesQueryKey } from 'src/queries/linodes/linodes'; diff --git a/packages/manager/src/queries/images.ts b/packages/manager/src/queries/images.ts index 4da791e952e..f81ad4c3524 100644 --- a/packages/manager/src/queries/images.ts +++ b/packages/manager/src/queries/images.ts @@ -21,7 +21,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -53,7 +53,7 @@ export const useCreateImageMutation = () => { }, { onSuccess() { - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); // If a restricted user creates an entity, we must make sure grants are up to date. queryClient.invalidateQueries([PROFILE_QUERY_KEY, 'grants']); }, @@ -74,7 +74,7 @@ export const useUpdateImageMutation = () => { { onSuccess(image) { updateInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], image.id, image, queryClient @@ -91,7 +91,7 @@ export const useDeleteImageMutation = () => { ({ imageId }) => deleteImage(imageId), { onSuccess() { - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); }, } ); @@ -99,7 +99,7 @@ export const useDeleteImageMutation = () => { // Remove Image from cache export const removeImageFromCache = (queryClient: QueryClient) => - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); // Get all Images export const getAllImages = ( @@ -133,18 +133,18 @@ export const imageEventsHandler = ({ const { action, entity, status } = event; // Keep the getAll query up to date so that when we have to use it, it contains accurate data - queryClient.invalidateQueries(`${queryKey}-all`); + queryClient.invalidateQueries([`${queryKey}-all`]); switch (action) { case 'image_delete': if ( doesItemExistInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], entity!.id, queryClient ) ) { - queryClient.invalidateQueries(`${queryKey}-list`); + queryClient.invalidateQueries([`${queryKey}-list`]); } return; @@ -155,7 +155,7 @@ export const imageEventsHandler = ({ case 'disk_imagize': if (status === 'failed' && event.secondary_entity) { updateInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], event.secondary_entity.id, {}, queryClient @@ -168,7 +168,7 @@ export const imageEventsHandler = ({ event.secondary_entity ) { updateInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], `private/${event.secondary_entity.id}`, { status: 'available', @@ -184,7 +184,7 @@ export const imageEventsHandler = ({ (async () => await getImage(`private/${event.entity?.id}`).then(() => { updateInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], `private/${event.entity?.id}`, { status: 'available', diff --git a/packages/manager/src/queries/kubernetes.ts b/packages/manager/src/queries/kubernetes.ts index 6e942e6dbbb..2c2e23b5a9a 100644 --- a/packages/manager/src/queries/kubernetes.ts +++ b/packages/manager/src/queries/kubernetes.ts @@ -31,7 +31,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -62,7 +62,7 @@ export const useKubernetesClusterMutation = (id: number) => { { onSuccess(data) { updateInPaginatedStore( - `${queryKey}-list`, + [`${queryKey}-list`], id, data, queryClient diff --git a/packages/manager/src/queries/linodes/actions.ts b/packages/manager/src/queries/linodes/actions.ts index 4d3982c0678..8d3156f8741 100644 --- a/packages/manager/src/queries/linodes/actions.ts +++ b/packages/manager/src/queries/linodes/actions.ts @@ -1,5 +1,5 @@ import { APIError, startMutation } from '@linode/api-v4'; -import { useMutation, useQueryClient } from 'react-query'; +import { useMutation, useQueryClient } from '@tanstack/react-query'; import { queryKey } from './linodes'; diff --git a/packages/manager/src/queries/linodes/backups.ts b/packages/manager/src/queries/linodes/backups.ts index d0f9a0edc40..8885c3c0131 100644 --- a/packages/manager/src/queries/linodes/backups.ts +++ b/packages/manager/src/queries/linodes/backups.ts @@ -7,7 +7,7 @@ import { restoreBackup, takeSnapshot, } from '@linode/api-v4'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { queryKey } from './linodes'; diff --git a/packages/manager/src/queries/linodes/configs.ts b/packages/manager/src/queries/linodes/configs.ts index 4c09ccc06be..12e5b05357e 100644 --- a/packages/manager/src/queries/linodes/configs.ts +++ b/packages/manager/src/queries/linodes/configs.ts @@ -16,7 +16,7 @@ import { updateLinodeConfig, updateLinodeConfigOrder, } from '@linode/api-v4'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { queryKey } from './linodes'; import { getAllLinodeConfigs } from './requests'; diff --git a/packages/manager/src/queries/linodes/disks.ts b/packages/manager/src/queries/linodes/disks.ts index b9357d5df47..09a5e1bd20a 100644 --- a/packages/manager/src/queries/linodes/disks.ts +++ b/packages/manager/src/queries/linodes/disks.ts @@ -9,7 +9,7 @@ import { resizeLinodeDisk, updateLinodeDisk, } from '@linode/api-v4'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/linodes/firewalls.ts b/packages/manager/src/queries/linodes/firewalls.ts index c9b9293add3..47e16d087a4 100644 --- a/packages/manager/src/queries/linodes/firewalls.ts +++ b/packages/manager/src/queries/linodes/firewalls.ts @@ -4,7 +4,7 @@ import { ResourcePage, getLinodeFirewalls, } from '@linode/api-v4'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { queryPresets } from '../base'; import { queryKey } from './linodes'; diff --git a/packages/manager/src/queries/linodes/linodes.ts b/packages/manager/src/queries/linodes/linodes.ts index aed5a974fcd..de623245f43 100644 --- a/packages/manager/src/queries/linodes/linodes.ts +++ b/packages/manager/src/queries/linodes/linodes.ts @@ -34,7 +34,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { manuallySetVPCConfigInterfacesToActive } from 'src/utilities/configs'; diff --git a/packages/manager/src/queries/linodes/networking.ts b/packages/manager/src/queries/linodes/networking.ts index f78b100f3db..0205ad3ad7f 100644 --- a/packages/manager/src/queries/linodes/networking.ts +++ b/packages/manager/src/queries/linodes/networking.ts @@ -26,7 +26,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { queryKey } from './linodes'; import { getAllIPv6Ranges, getAllIps } from './requests'; diff --git a/packages/manager/src/queries/linodes/stats.ts b/packages/manager/src/queries/linodes/stats.ts index 8679e3fb0e3..0884d635ece 100644 --- a/packages/manager/src/queries/linodes/stats.ts +++ b/packages/manager/src/queries/linodes/stats.ts @@ -7,7 +7,7 @@ import { getLinodeTransferByDate, } from '@linode/api-v4'; import { DateTime } from 'luxon'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { parseAPIDate } from 'src/utilities/date'; diff --git a/packages/manager/src/queries/managed/managed.ts b/packages/manager/src/queries/managed/managed.ts index 71662f3e051..166c868e75b 100644 --- a/packages/manager/src/queries/managed/managed.ts +++ b/packages/manager/src/queries/managed/managed.ts @@ -34,7 +34,7 @@ import { updateServiceMonitor, } from '@linode/api-v4/lib/managed'; import { APIError } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -51,14 +51,14 @@ export const queryKey = 'managed'; export const useManagedSSHKey = () => useQuery( - `${queryKey}-ssh-key`, + [queryKey, 'public-ssh-key'], getSSHPubKey, queryPresets.oneTimeFetch ); export const useAllLinodeSettingsQuery = () => useQuery( - `${queryKey}-linode-settings`, + [queryKey, 'linode-settings'], getAllLinodeSettings, { // A Linode may have been created or deleted since the last visit. @@ -68,26 +68,26 @@ export const useAllLinodeSettingsQuery = () => export const useAllManagedCredentialsQuery = () => useQuery( - `${queryKey}-credentials`, + [queryKey, 'credentials'], getAllCredentials, queryPresets.oneTimeFetch ); export const useAllManagedContactsQuery = () => useQuery( - `${queryKey}-contacts`, + [queryKey, 'contacts'], getAllContacts, queryPresets.oneTimeFetch ); export const useAllManagedIssuesQuery = () => - useQuery(`${queryKey}-issues`, getAllIssues, { + useQuery([queryKey, 'issues'], getAllIssues, { refetchInterval: 20000, }); export const useAllManagedMonitorsQuery = () => useQuery( - `${queryKey}-monitors`, + [queryKey, 'monitors'], getAllMonitors, { refetchInterval: 20000, @@ -95,7 +95,7 @@ export const useAllManagedMonitorsQuery = () => ); export const useManagedStatsQuery = () => - useQuery(`${queryKey}-stats`, getManagedStats, { + useQuery([queryKey, 'stats'], getManagedStats, { ...queryPresets.shortLived, retry: false, }); @@ -104,7 +104,7 @@ export const useDeleteMonitorMutation = () => { const queryClient = useQueryClient(); return useMutation<{}, APIError[], { id: number }>( ({ id }) => deleteServiceMonitor(id), - itemInListDeletionHandler(`${queryKey}-monitors`, queryClient) + itemInListDeletionHandler([queryKey, 'monitors'], queryClient) ); }; @@ -112,7 +112,7 @@ export const useCreateMonitorMutation = () => { const queryClient = useQueryClient(); return useMutation( createServiceMonitor, - itemInListCreationHandler(`${queryKey}-monitors`, queryClient) + itemInListCreationHandler([queryKey, 'monitors'], queryClient) ); }; @@ -124,7 +124,7 @@ export const useUpdateMonitorMutation = (id: number) => { Partial >( (data) => updateServiceMonitor(id, data), - itemInListMutationHandler(`${queryKey}-monitors`, queryClient) + itemInListMutationHandler([queryKey, 'monitors'], queryClient) ); }; @@ -132,7 +132,7 @@ export const useCreateCredentialMutation = () => { const queryClient = useQueryClient(); return useMutation( createCredential, - itemInListCreationHandler(`${queryKey}-credentials`, queryClient) + itemInListCreationHandler([queryKey, 'credentials'], queryClient) ); }; @@ -145,7 +145,7 @@ export const useUpdateCredentialMutation = (id: number) => { const queryClient = useQueryClient(); return useMutation( (data) => updateCredential(id, data), - itemInListMutationHandler(`${queryKey}-credentials`, queryClient) + itemInListMutationHandler([queryKey, 'credentials'], queryClient) ); }; @@ -153,7 +153,7 @@ export const useDeleteCredentialMutation = () => { const queryClient = useQueryClient(); return useMutation<{}, APIError[], { id: number }>( ({ id }) => deleteCredential(id), - itemInListDeletionHandler(`${queryKey}-credentials`, queryClient) + itemInListDeletionHandler([queryKey, 'credentials'], queryClient) ); }; @@ -161,7 +161,7 @@ export const useCreateContactMutation = () => { const queryClient = useQueryClient(); return useMutation( createContact, - itemInListCreationHandler(`${queryKey}-contacts`, queryClient) + itemInListCreationHandler([queryKey, 'contacts'], queryClient) ); }; @@ -169,7 +169,7 @@ export const useDeleteContactMutation = () => { const queryClient = useQueryClient(); return useMutation<{}, APIError[], { id: number }>( ({ id }) => deleteContact(id), - itemInListDeletionHandler(`${queryKey}-contacts`, queryClient) + itemInListDeletionHandler([queryKey, 'contacts'], queryClient) ); }; @@ -177,7 +177,7 @@ export const useUpdateContactMutation = (id: number) => { const queryClient = useQueryClient(); return useMutation>( (data) => updateContact(id, data), - itemInListMutationHandler(`${queryKey}-contacts`, queryClient) + itemInListMutationHandler([queryKey, 'contacts'], queryClient) ); }; @@ -189,7 +189,7 @@ export const useUpdateLinodeSettingsMutation = (id: number) => { { ssh: Partial } >( (data) => updateLinodeSettings(id, data), - itemInListMutationHandler(`${queryKey}-linode-settings`, queryClient) + itemInListMutationHandler([queryKey, 'linode-settings'], queryClient) ); }; @@ -197,7 +197,7 @@ export const useEnableMonitorMutation = (id: number) => { const queryClient = useQueryClient(); return useMutation( () => enableServiceMonitor(id), - itemInListMutationHandler(`${queryKey}-monitors`, queryClient) + itemInListMutationHandler([queryKey, 'monitors'], queryClient) ); }; @@ -205,7 +205,7 @@ export const useDisableMonitorMutation = (id: number) => { const queryClient = useQueryClient(); return useMutation( () => disableServiceMonitor(id), - itemInListMutationHandler(`${queryKey}-monitors`, queryClient) + itemInListMutationHandler([queryKey, 'monitors'], queryClient) ); }; diff --git a/packages/manager/src/queries/nodebalancers.ts b/packages/manager/src/queries/nodebalancers.ts index dc11cf2a47d..6acb041d798 100644 --- a/packages/manager/src/queries/nodebalancers.ts +++ b/packages/manager/src/queries/nodebalancers.ts @@ -29,7 +29,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { EventHandlerData } from 'src/hooks/useEventHandlers'; import { queryKey as firewallsQueryKey } from 'src/queries/firewalls'; diff --git a/packages/manager/src/queries/objectStorage.ts b/packages/manager/src/queries/objectStorage.ts index b5fe4bc750a..88ab970d800 100644 --- a/packages/manager/src/queries/objectStorage.ts +++ b/packages/manager/src/queries/objectStorage.ts @@ -30,12 +30,11 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { OBJECT_STORAGE_DELIMITER as delimiter } from 'src/constants'; import { getAll } from 'src/utilities/getAll'; -import { queryKey as accountSettingsQueryKey } from './accountSettings'; import { queryPresets } from './base'; export interface BucketError { @@ -69,7 +68,7 @@ export const getAllObjectStorageBuckets = () => export const useObjectStorageClusters = (enabled: boolean = true) => useQuery( - `${queryKey}-clusters`, + [`${queryKey}-clusters`], getAllObjectStorageClusters, { ...queryPresets.oneTimeFetch, enabled } ); @@ -79,7 +78,7 @@ export const useObjectStorageBuckets = ( enabled: boolean = true ) => useQuery( - `${queryKey}-buckets`, + [`${queryKey}-buckets`], // Ideally we would use the line below, but if a cluster is down, the buckets on that // cluster don't show up in the responce. We choose to fetch buckets per-cluster so // we can tell the user which clusters are having issues. @@ -97,7 +96,7 @@ export const useObjectStorageBucketsFromRegions = ( enabled: boolean = true ) => useQuery( - `${queryKey}-buckets-from-regions`, + [`${queryKey}-buckets-from-regions`], () => getAllBucketsFromRegions(regions), { ...queryPresets.longLived, @@ -122,9 +121,9 @@ export const useCreateBucketMutation = () => { >(createBucket, { onSuccess: (newEntity) => { // Invalidate account settings because it contains obj information - queryClient.invalidateQueries(accountSettingsQueryKey); + queryClient.invalidateQueries(['account', 'settings']); queryClient.setQueryData( - `${queryKey}-buckets`, + [`${queryKey}-buckets`], (oldData) => ({ buckets: [...(oldData?.buckets || []), newEntity], errors: oldData?.errors || [], @@ -141,7 +140,7 @@ export const useDeleteBucketMutation = () => { { onSuccess: (_, variables) => { queryClient.setQueryData( - `${queryKey}-buckets`, + [`${queryKey}-buckets`], (oldData) => { return { buckets: @@ -271,7 +270,7 @@ export const updateBucket = async ( ) => { const bucket = await getBucket(cluster, bucketName); queryClient.setQueryData( - `${queryKey}-buckets`, + [`${queryKey}-buckets`], (oldData) => { if (oldData === undefined) { return undefined; diff --git a/packages/manager/src/queries/placementGroups.ts b/packages/manager/src/queries/placementGroups.ts index 79e7dd39e2d..8d9f8b8c2bf 100644 --- a/packages/manager/src/queries/placementGroups.ts +++ b/packages/manager/src/queries/placementGroups.ts @@ -13,7 +13,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/preferences.ts b/packages/manager/src/queries/preferences.ts index c2e71812b91..f99f578931b 100644 --- a/packages/manager/src/queries/preferences.ts +++ b/packages/manager/src/queries/preferences.ts @@ -8,7 +8,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { ManagerPreferences } from 'src/types/ManagerPreferences'; @@ -17,7 +17,7 @@ import { queryPresets } from './base'; export const queryKey = 'preferences'; export const usePreferences = (enabled = true) => - useQuery(queryKey, getUserPreferences, { + useQuery([queryKey], getUserPreferences, { ...queryPresets.oneTimeFetch, enabled, }); @@ -47,7 +47,7 @@ export const updatePreferenceData = ( queryClient: QueryClient ): void => { queryClient.setQueryData( - queryKey, + [queryKey], (oldData: ManagerPreferences) => ({ ...(!replace ? oldData : {}), ...newData, diff --git a/packages/manager/src/queries/profile.ts b/packages/manager/src/queries/profile.ts index a95c92040a4..00e37373147 100644 --- a/packages/manager/src/queries/profile.ts +++ b/packages/manager/src/queries/profile.ts @@ -29,7 +29,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { Grants } from '../../../api-v4/lib'; import { queryKey as accountQueryKey } from './account'; diff --git a/packages/manager/src/queries/regions.ts b/packages/manager/src/queries/regions.ts index 74e729b4860..431ee8808f4 100644 --- a/packages/manager/src/queries/regions.ts +++ b/packages/manager/src/queries/regions.ts @@ -6,7 +6,7 @@ import { getRegions, } from '@linode/api-v4/lib/regions'; import { APIError } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -15,7 +15,7 @@ import { queryPresets } from './base'; const queryKey = 'region-availability'; export const useRegionsQuery = () => - useQuery('regions', getAllRegionsRequest, { + useQuery(['regions'], getAllRegionsRequest, { ...queryPresets.longLived, }); @@ -26,7 +26,7 @@ const getAllRegionsRequest = () => export const useRegionsAvailabilitiesQuery = (enabled: boolean = true) => useQuery( - queryKey, + [queryKey], getAllRegionAvailabilitiesRequest, { enabled, diff --git a/packages/manager/src/queries/securityQuestions.ts b/packages/manager/src/queries/securityQuestions.ts index 779d20c93c4..7af77613dcc 100644 --- a/packages/manager/src/queries/securityQuestions.ts +++ b/packages/manager/src/queries/securityQuestions.ts @@ -5,7 +5,7 @@ import { updateSecurityQuestions, } from '@linode/api-v4/lib/profile'; import { APIError } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { queryPresets } from './base'; @@ -17,7 +17,7 @@ export const useSecurityQuestions = ({ enabled?: boolean; } = {}) => { return useQuery( - queryKey, + [queryKey], getSecurityQuestions, { ...queryPresets.oneTimeFetch, @@ -39,7 +39,7 @@ export const useMutateSecurityQuestions = () => { { onSuccess: (response) => { queryClient.setQueryData( - queryKey, + [queryKey], (oldData) => { if (oldData === undefined) { return undefined; diff --git a/packages/manager/src/queries/stackscripts.ts b/packages/manager/src/queries/stackscripts.ts index d719e80e645..607edb6c24a 100644 --- a/packages/manager/src/queries/stackscripts.ts +++ b/packages/manager/src/queries/stackscripts.ts @@ -1,6 +1,6 @@ import { StackScript } from '@linode/api-v4/lib/stackscripts'; import { APIError, Params } from '@linode/api-v4/lib/types'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getOneClickApps } from 'src/features/StackScripts/stackScriptUtils'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/statusPage/statusPage.ts b/packages/manager/src/queries/statusPage/statusPage.ts index a91e530de29..9b71a75fa37 100644 --- a/packages/manager/src/queries/statusPage/statusPage.ts +++ b/packages/manager/src/queries/statusPage/statusPage.ts @@ -1,6 +1,6 @@ import { APIError } from '@linode/api-v4/lib/types'; import Axios from 'axios'; -import { UseQueryOptions, useQuery } from 'react-query'; +import { UseQueryOptions, useQuery } from '@tanstack/react-query'; import { LINODE_STATUS_PAGE_URL } from 'src/constants'; import { reportException } from 'src/exceptionReporting'; @@ -51,7 +51,7 @@ const maintenanceKey = 'status-page-maintenance'; export const useIncidentQuery = () => { return useQuery( - incidentKey, + [incidentKey], getIncidents, queryPresets.shortLived ); @@ -59,7 +59,7 @@ export const useIncidentQuery = () => { export const useMaintenanceQuery = (options?: UseQueryOptions) => { return useQuery( - maintenanceKey, + [maintenanceKey], getAllMaintenance, { ...queryPresets.shortLived, ...(options ?? {}) } ); diff --git a/packages/manager/src/queries/support.ts b/packages/manager/src/queries/support.ts index 60aac525eef..40bd2cf3961 100644 --- a/packages/manager/src/queries/support.ts +++ b/packages/manager/src/queries/support.ts @@ -13,7 +13,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { EventHandlerData } from 'src/hooks/useEventHandlers'; diff --git a/packages/manager/src/queries/tags.ts b/packages/manager/src/queries/tags.ts index ee69450fdff..5bbf110fce8 100644 --- a/packages/manager/src/queries/tags.ts +++ b/packages/manager/src/queries/tags.ts @@ -1,6 +1,6 @@ import { Tag, getTags } from '@linode/api-v4'; import { APIError, Filter, Params } from '@linode/api-v4/lib/types'; -import { QueryClient, useQuery } from 'react-query'; +import { QueryClient, useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -9,7 +9,7 @@ import { queryPresets } from './base'; export const queryKey = 'tags'; export const useTagSuggestions = (enabled = true) => - useQuery(queryKey, () => getAllTagSuggestions(), { + useQuery([queryKey], () => getAllTagSuggestions(), { ...queryPresets.longLived, enabled, }); @@ -29,5 +29,5 @@ export const updateTagsSuggestionsData = ( const uniqueTags = Array.from(new Set(newData.map((tag) => tag.label))) .sort() .map((label) => ({ label })); - queryClient.setQueryData(queryKey, uniqueTags); + queryClient.setQueryData([queryKey], uniqueTags); }; diff --git a/packages/manager/src/queries/tokens.ts b/packages/manager/src/queries/tokens.ts index 598204c72c7..7d87614cc2e 100644 --- a/packages/manager/src/queries/tokens.ts +++ b/packages/manager/src/queries/tokens.ts @@ -13,7 +13,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { updateInPaginatedStore } from './base'; import { queryKey } from './profile'; diff --git a/packages/manager/src/queries/types.ts b/packages/manager/src/queries/types.ts index d659396747e..eeef894db05 100644 --- a/packages/manager/src/queries/types.ts +++ b/packages/manager/src/queries/types.ts @@ -6,7 +6,7 @@ import { useQueries, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -43,14 +43,14 @@ const specificTypesQueryKey = (type: string) => [queryKey, 'detail', type]; */ export const useSpecificTypes = (types: string[], enabled = true) => { const queryClient = useQueryClient(); - return useQueries( - types.map>((type) => ({ + return useQueries({ + queries: types.map>((type) => ({ enabled: Boolean(type) && enabled, queryFn: () => getSingleType(type, queryClient), queryKey: specificTypesQueryKey(type), ...queryPresets.oneTimeFetch, - })) - ); + })), + }); }; export const useTypeQuery = (type: string, enabled = true) => { diff --git a/packages/manager/src/queries/vlans.ts b/packages/manager/src/queries/vlans.ts index f510d634518..6976134a7de 100644 --- a/packages/manager/src/queries/vlans.ts +++ b/packages/manager/src/queries/vlans.ts @@ -1,6 +1,6 @@ import { APIError } from '@linode/api-v4/lib/types'; import { VLAN, getVlans } from '@linode/api-v4/lib/vlans'; -import { useQuery } from 'react-query'; +import { useQuery } from '@tanstack/react-query'; import { getAll } from 'src/utilities/getAll'; @@ -12,7 +12,7 @@ const _getVlans = (): Promise => getAll((params) => getVlans(params))().then(({ data }) => data); export const useVlansQuery = () => { - return useQuery(queryKey, _getVlans, { + return useQuery([queryKey], _getVlans, { ...queryPresets.longLived, }); }; diff --git a/packages/manager/src/queries/volumes.ts b/packages/manager/src/queries/volumes.ts index 5b4098d1534..0a36f854eb6 100644 --- a/packages/manager/src/queries/volumes.ts +++ b/packages/manager/src/queries/volumes.ts @@ -22,7 +22,7 @@ import { useMutation, useQuery, useQueryClient, -} from 'react-query'; +} from '@tanstack/react-query'; import { EventHandlerData } from 'src/hooks/useEventHandlers'; import { getAll } from 'src/utilities/getAll'; diff --git a/packages/manager/src/queries/volumesMigrations.ts b/packages/manager/src/queries/volumesMigrations.ts index 604fd05ddd6..7ce3c9f0f96 100644 --- a/packages/manager/src/queries/volumesMigrations.ts +++ b/packages/manager/src/queries/volumesMigrations.ts @@ -4,7 +4,7 @@ import { migrateVolumes, } from '@linode/api-v4/lib/volumes/migrations'; import { VolumesMigrationQueue } from '@linode/api-v4/lib/volumes/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; import { queryKey as notificationsQueryKey } from './accountNotifications'; import { queryPresets } from './base'; diff --git a/packages/manager/src/queries/vpcs.ts b/packages/manager/src/queries/vpcs.ts index 10175e32a41..a6051a8964e 100644 --- a/packages/manager/src/queries/vpcs.ts +++ b/packages/manager/src/queries/vpcs.ts @@ -22,7 +22,7 @@ import { Params, ResourcePage, } from '@linode/api-v4/lib/types'; -import { useMutation, useQuery, useQueryClient } from 'react-query'; +import { useMutation, useQuery, useQueryClient } from '@tanstack/react-query'; export const vpcQueryKey = 'vpcs'; export const subnetQueryKey = 'subnets'; diff --git a/packages/manager/src/store/types.ts b/packages/manager/src/store/types.ts index 1c4afd0701d..43e680b2565 100644 --- a/packages/manager/src/store/types.ts +++ b/packages/manager/src/store/types.ts @@ -1,6 +1,6 @@ import { Event, Entity as EventEntity } from '@linode/api-v4/lib/account'; import { APIError } from '@linode/api-v4/lib/types'; -import { QueryClient } from 'react-query'; +import { QueryClient } from '@tanstack/react-query'; import { MapStateToProps as _MapStateToProps } from 'react-redux'; import { Action, Dispatch } from 'redux'; import { ThunkDispatch as _ThunkDispatch, ThunkAction } from 'redux-thunk'; diff --git a/packages/manager/src/utilities/extendType.ts b/packages/manager/src/utilities/extendType.ts index d6501c85369..bcf646463f4 100644 --- a/packages/manager/src/utilities/extendType.ts +++ b/packages/manager/src/utilities/extendType.ts @@ -1,5 +1,5 @@ import { APIError, LinodeType } from '@linode/api-v4'; -import { UseQueryResult } from 'react-query'; +import { UseQueryResult } from '@tanstack/react-query'; import { LINODE_NETWORK_IN } from 'src/constants'; import { typeLabelDetails } from 'src/features/Linodes/presentation'; diff --git a/packages/manager/src/utilities/subnets.ts b/packages/manager/src/utilities/subnets.ts index cc14a84eb0c..9f65527a397 100644 --- a/packages/manager/src/utilities/subnets.ts +++ b/packages/manager/src/utilities/subnets.ts @@ -90,13 +90,13 @@ const isValidRFC1918IPv4 = (address: string) => { // 192.168.x.x (192.168/16 prefix) return ( // check for valid 10.x IPs + // check for valid 192.x IPs (firstOctet === '10' && parsedMask >= 8) || // check for valid 172.x IPs (firstOctet === '172' && parsedSecondOctet >= 16 && parsedSecondOctet <= 31 && parsedMask >= 12) || - // check for valid 192.x IPs (firstOctet === '192' && secondOctet === '168' && parsedMask >= 16) ); }; diff --git a/packages/manager/src/utilities/testHelpers.tsx b/packages/manager/src/utilities/testHelpers.tsx index 541a0191633..67509fb8c39 100644 --- a/packages/manager/src/utilities/testHelpers.tsx +++ b/packages/manager/src/utilities/testHelpers.tsx @@ -5,7 +5,7 @@ import { LDProvider } from 'launchdarkly-react-client-sdk'; import { SnackbarProvider } from 'notistack'; import { mergeDeepRight } from 'ramda'; import * as React from 'react'; -import { QueryClient, QueryClientProvider } from 'react-query'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; import { Provider } from 'react-redux'; import { MemoryRouterProps } from 'react-router'; import { MemoryRouter } from 'react-router-dom'; From 99363113d2fe6ba0f3dc9be356ff77d9ceace8db Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 12:00:36 -0500 Subject: [PATCH 02/10] update --- yarn.lock | 175 +++++++++++++++++++++++++++--------------------------- 1 file changed, 88 insertions(+), 87 deletions(-) diff --git a/yarn.lock b/yarn.lock index 26ae94aacef..344f7202270 100644 --- a/yarn.lock +++ b/yarn.lock @@ -378,6 +378,11 @@ resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.23.9.tgz#7b903b6149b0f8fa7ad564af646c4c38a77fc44b" integrity sha512-9tcKgqKbs3xGJ+NtKF2ndOBBLVwPjl1SHxPQkd36r3Dlirw3xWUeGaTbqr7uGZcTaxkVNwc+03SVP7aCdWrTlA== +"@babel/parser@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.24.0.tgz#26a3d1ff49031c53a97d03b604375f028746a9ac" + integrity sha512-QuP/FxEAzMSjXygs8v4N9dvdXzEHN4W1oF3PxuWAtPo08UdM17u89RDMgjLn/mlc56iM0HlLmVkO/wgR+rDgHg== + "@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@^7.23.3": version "7.23.3" resolved "https://registry.yarnpkg.com/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression/-/plugin-bugfix-safari-id-destructuring-collision-in-function-expression-7.23.3.tgz#5cd1c87ba9380d0afb78469292c954fee5d2411a" @@ -1106,7 +1111,7 @@ resolved "https://registry.yarnpkg.com/@babel/regjsgen/-/regjsgen-0.8.0.tgz#f0ba69b075e1f05fb2825b7fad991e7adbb18310" integrity sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA== -"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.8", "@babel/runtime@^7.23.9", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.6.2", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.0.0", "@babel/runtime@^7.1.2", "@babel/runtime@^7.12.13", "@babel/runtime@^7.12.5", "@babel/runtime@^7.13.10", "@babel/runtime@^7.14.0", "@babel/runtime@^7.14.6", "@babel/runtime@^7.15.4", "@babel/runtime@^7.17.8", "@babel/runtime@^7.18.3", "@babel/runtime@^7.23.2", "@babel/runtime@^7.23.9", "@babel/runtime@^7.4.4", "@babel/runtime@^7.5.5", "@babel/runtime@^7.7.2", "@babel/runtime@^7.8.4", "@babel/runtime@^7.8.7", "@babel/runtime@^7.9.2": version "7.23.9" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.23.9.tgz#47791a15e4603bb5f905bc0753801cf21d6345f7" integrity sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw== @@ -1123,9 +1128,9 @@ "@babel/types" "^7.23.9" "@babel/traverse@^7.18.9", "@babel/traverse@^7.23.2", "@babel/traverse@^7.23.3", "@babel/traverse@^7.23.9", "@babel/traverse@^7.7.0": - version "7.23.9" - resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.23.9.tgz#2f9d6aead6b564669394c5ce0f9302bb65b9d950" - integrity sha512-I/4UJ9vs90OkBtY6iiiTORVMyIhJ4kAVmsKo9KFc8UOxMeUfi2hvtIBsET5u9GizXE6/GFSuKCTNfgCswuEjRg== + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.24.0.tgz#4a408fbf364ff73135c714a2ab46a5eab2831b1e" + integrity sha512-HfuJlI8qq3dEDmNU5ChzzpZRWq+oxCZQyMzIMEqLho+AQnhMnKQUzH6ydo3RBl/YjPCuk68Y6s0Gx0AeyULiWw== dependencies: "@babel/code-frame" "^7.23.5" "@babel/generator" "^7.23.6" @@ -1133,8 +1138,8 @@ "@babel/helper-function-name" "^7.23.0" "@babel/helper-hoist-variables" "^7.22.5" "@babel/helper-split-export-declaration" "^7.22.6" - "@babel/parser" "^7.23.9" - "@babel/types" "^7.23.9" + "@babel/parser" "^7.24.0" + "@babel/types" "^7.24.0" debug "^4.3.1" globals "^11.1.0" @@ -1147,6 +1152,15 @@ "@babel/helper-validator-identifier" "^7.22.20" to-fast-properties "^2.0.0" +"@babel/types@^7.24.0": + version "7.24.0" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.24.0.tgz#3b951f435a92e7333eba05b7566fd297960ea1bf" + integrity sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w== + dependencies: + "@babel/helper-string-parser" "^7.23.4" + "@babel/helper-validator-identifier" "^7.22.20" + to-fast-properties "^2.0.0" + "@base2/pretty-print-object@1.0.1": version "1.0.1" resolved "https://registry.yarnpkg.com/@base2/pretty-print-object/-/pretty-print-object-1.0.1.tgz#371ba8be66d556812dc7fb169ebc3c08378f69d4" @@ -3420,6 +3434,35 @@ resolved "https://registry.yarnpkg.com/@swc/types/-/types-0.1.5.tgz#043b731d4f56a79b4897a3de1af35e75d56bc63a" integrity sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw== +"@tanstack/match-sorter-utils@^8.7.0": + version "8.11.8" + resolved "https://registry.yarnpkg.com/@tanstack/match-sorter-utils/-/match-sorter-utils-8.11.8.tgz#9132c2a21cf18ca2f0071b604ddadb7a66e73367" + integrity sha512-3VPh0SYMGCa5dWQEqNab87UpCMk+ANWHDP4ALs5PeEW9EpfTAbrezzaOk/OiM52IESViefkoAOYuxdoa04p6aA== + dependencies: + remove-accents "0.4.2" + +"@tanstack/query-core@4.36.1": + version "4.36.1" + resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.36.1.tgz#79f8c1a539d47c83104210be2388813a7af2e524" + integrity sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA== + +"@tanstack/react-query-devtools@4": + version "4.36.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-4.36.1.tgz#7e63601135902a993ca9af73507b125233b1554e" + integrity sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw== + dependencies: + "@tanstack/match-sorter-utils" "^8.7.0" + superjson "^1.10.0" + use-sync-external-store "^1.2.0" + +"@tanstack/react-query@4": + version "4.36.1" + resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.36.1.tgz#acb589fab4085060e2e78013164868c9c785e5d2" + integrity sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw== + dependencies: + "@tanstack/query-core" "4.36.1" + use-sync-external-store "^1.2.0" + "@testing-library/cypress@^10.0.0": version "10.0.1" resolved "https://registry.yarnpkg.com/@testing-library/cypress/-/cypress-10.0.1.tgz#15abae0edb83237316ec6d07e152b71a50b38387" @@ -5062,7 +5105,7 @@ better-opn@^3.0.2: dependencies: open "^8.0.4" -big-integer@^1.6.16, big-integer@^1.6.44: +big-integer@^1.6.44: version "1.6.52" resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.52.tgz#60a887f3047614a8e1bffe5d7173490a97dc8c85" integrity sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg== @@ -5172,20 +5215,6 @@ braintree-web@^3.92.2: promise-polyfill "8.2.3" restricted-input "3.0.5" -broadcast-channel@^3.4.1: - version "3.7.0" - resolved "https://registry.yarnpkg.com/broadcast-channel/-/broadcast-channel-3.7.0.tgz#2dfa5c7b4289547ac3f6705f9c00af8723889937" - integrity sha512-cIAKJXAxGJceNZGTZSBzMxzyOn72cVgPnKx4dc6LRjQgbaJUQqhy5rzL3zbMxkMWsGKkv2hSFkPRMEXfoMZ2Mg== - dependencies: - "@babel/runtime" "^7.7.2" - detect-node "^2.1.0" - js-sha3 "0.8.0" - microseconds "0.2.0" - nano-time "1.0.0" - oblivious-set "1.0.0" - rimraf "3.0.2" - unload "2.2.0" - browser-assert@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/browser-assert/-/browser-assert-1.2.1.tgz#9aaa5a2a8c74685c2ae05bfe46efd606f068c200" @@ -5785,6 +5814,13 @@ cookie@^0.4.2: resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.2.tgz#0e41f24de5ecf317947c82fc789e06a884824432" integrity sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA== +copy-anything@^3.0.2: + version "3.0.5" + resolved "https://registry.yarnpkg.com/copy-anything/-/copy-anything-3.0.5.tgz#2d92dce8c498f790fa7ad16b01a1ae5a45b020a0" + integrity sha512-yCEafptTtb4bk7GLEQoM8KVJpxAfdBJYaXyzQEgQQQgYrZiDp8SJmGKlYza6CYjEDNstAdNdKA3UuoULlEbS6w== + dependencies: + is-what "^4.1.8" + copy-to-clipboard@^3.0.8: version "3.3.3" resolved "https://registry.yarnpkg.com/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz#55ac43a1db8ae639a4bd99511c148cdd1b83a1b0" @@ -6310,11 +6346,6 @@ detect-node-es@^1.1.0: resolved "https://registry.yarnpkg.com/detect-node-es/-/detect-node-es-1.1.0.tgz#163acdf643330caa0b4cd7c21e7ee7755d6fa493" integrity sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ== -detect-node@^2.0.4, detect-node@^2.1.0: - version "2.1.0" - resolved "https://registry.yarnpkg.com/detect-node/-/detect-node-2.1.0.tgz#c9c70775a49c3d03bc2c06d9a73be550f978f8b1" - integrity sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g== - detect-package-manager@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/detect-package-manager/-/detect-package-manager-2.0.1.tgz#6b182e3ae5e1826752bfef1de9a7b828cffa50d8" @@ -8693,6 +8724,11 @@ is-weakset@^2.0.1: call-bind "^1.0.2" get-intrinsic "^1.1.1" +is-what@^4.1.8: + version "4.1.16" + resolved "https://registry.yarnpkg.com/is-what/-/is-what-4.1.16.tgz#1ad860a19da8b4895ad5495da3182ce2acdd7a6f" + integrity sha512-ZhMwEosbFJkA0YhFnNDgTM4ZxDRsS6HqTo7qsZM08fehyRYIYa0yHu5R6mgo1n/8MgaPBXiPimPD77baVFYg+A== + is-wsl@^2.1.1, is-wsl@^2.2.0: version "2.2.0" resolved "https://registry.yarnpkg.com/is-wsl/-/is-wsl-2.2.0.tgz#74a4c76e77ca9fd3f932f290c17ea326cd157271" @@ -8866,11 +8902,6 @@ js-levenshtein@^1.1.6: resolved "https://registry.yarnpkg.com/js-levenshtein/-/js-levenshtein-1.1.6.tgz#c6cee58eb3550372df8deb85fad5ce66ce01d59d" integrity sha512-X2BB11YZtrRqY4EnQcLX5Rh373zbK4alC1FW7D7MBhL2gtcC17cTnr6DmfHZeS0s2rTHjUTMMHfG7gO8SSdw+g== -js-sha3@0.8.0: - version "0.8.0" - resolved "https://registry.yarnpkg.com/js-sha3/-/js-sha3-0.8.0.tgz#b9b7a5da73afad7dedd0f8c463954cbde6818840" - integrity sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q== - "js-tokens@^3.0.0 || ^4.0.0", js-tokens@^4.0.0: version "4.0.0" resolved "https://registry.yarnpkg.com/js-tokens/-/js-tokens-4.0.0.tgz#19203fb59991df98e3a287050d4647cdeaf32499" @@ -9521,14 +9552,6 @@ markdown-to-jsx@^7.1.8: resolved "https://registry.yarnpkg.com/markdown-to-jsx/-/markdown-to-jsx-7.4.1.tgz#1ed6a60f8f9cd944bec39d9923fbbc8d3d60dcb9" integrity sha512-GbrbkTnHp9u6+HqbPRFJbObi369AgJNXi/sGqq5HRsoZW063xR1XDCaConqq+whfEIAlzB1YPnOgsPc7B7bc/A== -match-sorter@^6.0.2: - version "6.3.4" - resolved "https://registry.yarnpkg.com/match-sorter/-/match-sorter-6.3.4.tgz#afa779d8e922c81971fbcb4781c7003ace781be7" - integrity sha512-jfZW7cWS5y/1xswZo8VBOdudUiSd9nifYRWphc9M5D/ee4w4AoXLgBEdRbgVaxbMuagBPeUC5y2Hi8DO6o9aDg== - dependencies: - "@babel/runtime" "^7.23.8" - remove-accents "0.5.0" - md5@^2.2.1, md5@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/md5/-/md5-2.3.0.tgz#c3da9a6aae3a30b46b7b0c349b87b110dc3bda4f" @@ -10002,11 +10025,6 @@ micromatch@4.0.5, micromatch@^4.0.2, micromatch@^4.0.4: braces "^3.0.2" picomatch "^2.3.1" -microseconds@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/microseconds/-/microseconds-0.2.0.tgz#233b25f50c62a65d861f978a4a4f8ec18797dc39" - integrity sha512-n7DHHMjR1avBbSpsTBj6fmMGh2AGrifVV4e+WYc3Q9lO+xnSZ3NyhcBND3vzzatt05LFhoKFRxrIyklmLlUtyA== - mime-db@1.52.0, "mime-db@>= 1.43.0 < 2": version "1.52.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.52.0.tgz#bbabcdc02859f4987301c856e3387ce5ec43bf70" @@ -10219,13 +10237,6 @@ mz@^2.7.0: object-assign "^4.0.1" thenify-all "^1.0.0" -nano-time@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/nano-time/-/nano-time-1.0.0.tgz#b0554f69ad89e22d0907f7a12b0993a5d96137ef" - integrity sha512-flnngywOoQ0lLQOTRNexn2gGSNuM9bKj9RZAWSzhQ+UJYaAFG9bac4DW9VHjUAzrOaIcajHybCTHe/bkvozQqA== - dependencies: - big-integer "^1.6.16" - nanoclone@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/nanoclone/-/nanoclone-0.2.1.tgz#dd4090f8f1a110d26bb32c49ed2f5b9235209ed4" @@ -10445,11 +10456,6 @@ object.values@^1.1.6: define-properties "^1.2.0" es-abstract "^1.22.1" -oblivious-set@1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/oblivious-set/-/oblivious-set-1.0.0.tgz#c8316f2c2fb6ff7b11b6158db3234c49f733c566" - integrity sha512-z+pI07qxo4c2CulUHCDf9lcqDlMSo72N/4rLUpRXf6fu+q8vjt8y0xS+Tlf8NTJDdTXHbdeO1n3MlbctwEoXZw== - ohash@^1.1.3: version "1.1.3" resolved "https://registry.yarnpkg.com/ohash/-/ohash-1.1.3.tgz#f12c3c50bfe7271ce3fd1097d42568122ccdcf07" @@ -11325,15 +11331,6 @@ react-number-format@^3.5.0: dependencies: prop-types "^15.6.0" -react-query@^3.3.2: - version "3.39.3" - resolved "https://registry.yarnpkg.com/react-query/-/react-query-3.39.3.tgz#4cea7127c6c26bdea2de5fb63e51044330b03f35" - integrity sha512-nLfLz7GiohKTJDuT4us4X3h/8unOh+00MLb2yJoGTPjxKs2bc1iDhkNx2bd5MKklXnOD3NrVZ+J2UXujA5In4g== - dependencies: - "@babel/runtime" "^7.5.5" - broadcast-channel "^3.4.1" - match-sorter "^6.0.2" - react-redux@^7.2.0: version "7.2.9" resolved "https://registry.yarnpkg.com/react-redux/-/react-redux-7.2.9.tgz#09488fbb9416a4efe3735b7235055442b042481d" @@ -11753,10 +11750,10 @@ remark-slug@^6.0.0: mdast-util-to-string "^1.0.0" unist-util-visit "^2.0.0" -remove-accents@0.5.0: - version "0.5.0" - resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.5.0.tgz#77991f37ba212afba162e375b627631315bed687" - integrity sha512-8g3/Otx1eJaVD12e31UbJj1YzdtVvzH85HV7t+9MJYk/u3XmkOUJ5Ys9wQrf9PCPK8+xn4ymzqYCiZl6QWKn+A== +remove-accents@0.4.2: + version "0.4.2" + resolved "https://registry.yarnpkg.com/remove-accents/-/remove-accents-0.4.2.tgz#0a43d3aaae1e80db919e07ae254b285d9e1c7bb5" + integrity sha512-7pXIJqJOq5tFgG1A2Zxti3Ht8jJF337m4sowbuHsW30ZnkQFnDzy9qBNhgzX8ZLW4+UBcXiiR7SwR6pokHsxiA== req-all@^1.0.0: version "1.0.0" @@ -11907,13 +11904,6 @@ rimraf@2.6.3, rimraf@~2.6.2: dependencies: glob "^7.1.3" -rimraf@3.0.2, rimraf@^3.0.0, rimraf@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" - integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== - dependencies: - glob "^7.1.3" - rimraf@^2.6.1, rimraf@^2.6.3: version "2.7.1" resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.7.1.tgz#35797f13a7fdadc566142c29d4f07ccad483e3ec" @@ -11921,6 +11911,13 @@ rimraf@^2.6.1, rimraf@^2.6.3: dependencies: glob "^7.1.3" +rimraf@^3.0.0, rimraf@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-3.0.2.tgz#f1a5402ba6220ad52cc1282bac1ae3aa49fd061a" + integrity sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA== + dependencies: + glob "^7.1.3" + "rollup@^2.25.0 || ^3.3.0": version "3.29.4" resolved "https://registry.yarnpkg.com/rollup/-/rollup-3.29.4.tgz#4d70c0f9834146df8705bfb69a9a19c9e1109981" @@ -12703,6 +12700,13 @@ sucrase@^3.20.3: pirates "^4.0.1" ts-interface-checker "^0.1.9" +superjson@^1.10.0: + version "1.13.3" + resolved "https://registry.yarnpkg.com/superjson/-/superjson-1.13.3.tgz#3bd64046f6c0a47062850bb3180ef352a471f930" + integrity sha512-mJiVjfd2vokfDxsQPOwJ/PtanO87LhpYY88ubI5dUB1Ab58Txbyje3+jpm+/83R/fevaq/107NNhtYBLuoTrFg== + dependencies: + copy-anything "^3.0.2" + supports-color@^4.5.0: version "4.5.0" resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-4.5.0.tgz#be7a0de484dec5c5cddf8b3d59125044912f635b" @@ -13361,14 +13365,6 @@ universalify@^2.0.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-2.0.1.tgz#168efc2180964e6386d061e094df61afe239b18d" integrity sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw== -unload@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/unload/-/unload-2.2.0.tgz#ccc88fdcad345faa06a92039ec0f80b488880ef7" - integrity sha512-B60uB5TNBLtN6/LsgAf3udH9saB5p7gqJwcFfbOEZ8BcBHnGwCf6G/TGiEqkRAxX7zAFIUtzdrXQSdL3Q/wqNA== - dependencies: - "@babel/runtime" "^7.6.2" - detect-node "^2.0.4" - unpipe@1.0.0, unpipe@~1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/unpipe/-/unpipe-1.0.0.tgz#b2bf4ee8514aae6165b4817829d21b2ef49904ec" @@ -13447,6 +13443,11 @@ use-sidecar@^1.1.2: detect-node-es "^1.1.0" tslib "^2.0.0" +use-sync-external-store@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz#7dbefd6ef3fe4e767a0cf5d7287aacfb5846928a" + integrity sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA== + util-deprecate@^1.0.1, util-deprecate@^1.0.2, util-deprecate@~1.0.1: version "1.0.2" resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" @@ -13978,9 +13979,9 @@ yallist@^4.0.0: integrity sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A== yaml@2.3.1, yaml@^1.10.0, yaml@^1.7.2, yaml@^2.2.2, yaml@^2.3.0, yaml@^2.3.4: - version "2.3.4" - resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.3.4.tgz#53fc1d514be80aabf386dc6001eb29bf3b7523b2" - integrity sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA== + version "2.4.0" + resolved "https://registry.yarnpkg.com/yaml/-/yaml-2.4.0.tgz#2376db1083d157f4b3a452995803dbcf43b08140" + integrity sha512-j9iR8g+/t0lArF4V6NE/QCfT+CO7iLqrXAHZbJdo+LfjqP1vR8Fg5bSiaq6Q2lOD1AUEVrEVIgABvBFYojJVYQ== yargs-parser@^11.1.1, yargs-parser@^18.1.3, yargs-parser@^21.1.1: version "18.1.3" From 0ac9ade3dbd0cd0eb1a930a4c4fc0de4fe4ceb72 Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 12:12:21 -0500 Subject: [PATCH 03/10] Added changeset: Upgrade to TanStack Query v4 --- .../.changeset/pr-10236-tech-stories-1709140341110.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 packages/manager/.changeset/pr-10236-tech-stories-1709140341110.md diff --git a/packages/manager/.changeset/pr-10236-tech-stories-1709140341110.md b/packages/manager/.changeset/pr-10236-tech-stories-1709140341110.md new file mode 100644 index 00000000000..9186cba4493 --- /dev/null +++ b/packages/manager/.changeset/pr-10236-tech-stories-1709140341110.md @@ -0,0 +1,5 @@ +--- +"@linode/manager": Tech Stories +--- + +Upgrade to TanStack Query v4 ([#10236](https://github.com/linode/manager/pull/10236)) From a31fcfc3111927b68898ab72de8aad7d770ebebe Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 12:35:46 -0500 Subject: [PATCH 04/10] fix: linode backups render order bug --- .../LinodeBackup/LinodeBackups.tsx | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/packages/manager/src/features/Linodes/LinodesDetail/LinodeBackup/LinodeBackups.tsx b/packages/manager/src/features/Linodes/LinodesDetail/LinodeBackup/LinodeBackups.tsx index 6a4fd7829d6..fe2f7e5d2e7 100644 --- a/packages/manager/src/features/Linodes/LinodesDetail/LinodeBackup/LinodeBackups.tsx +++ b/packages/manager/src/features/Linodes/LinodesDetail/LinodeBackup/LinodeBackups.tsx @@ -74,12 +74,6 @@ export const LinodeBackups = () => { setSelectedBackup(backup); }; - if (error) { - return ( - - ); - } - const backupsMonthlyPrice: | PriceObject['monthly'] | undefined = getMonthlyBackupsPrice({ @@ -87,10 +81,6 @@ export const LinodeBackups = () => { type, }); - if (isLoading) { - return ; - } - if (!linode?.backups.enabled) { return ( { ); } + if (error) { + return ( + + ); + } + + if (isLoading) { + return ; + } + const hasBackups = backups !== undefined && (backups?.automatic.length > 0 || From 997ab198e1dc5f864234a4b4821376311e4b64a9 Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 12:51:52 -0500 Subject: [PATCH 05/10] try to fix test flake in `EditAPITokenDrawer.test.tsx` --- .../src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx b/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx index 03fd219e1e3..153595a8188 100644 --- a/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx +++ b/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx @@ -42,7 +42,7 @@ describe('Edit API Token Drawer', () => { await act(async () => { const labelField = getByTestId('textfield-input'); - userEvent.type(labelField, 'updated-token-label'); + await userEvent.type(labelField, 'updated-token-label'); const saveButton = getByTestId('save-button'); From 3b012ff01859fdf86e9190cef83875c16c6fc220 Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 12:52:27 -0500 Subject: [PATCH 06/10] try to fix test flake in `EditAPITokenDrawer.test.tsx` --- .../src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx b/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx index 153595a8188..05c526a8bf6 100644 --- a/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx +++ b/packages/manager/src/features/Profile/APITokens/EditAPITokenDrawer.test.tsx @@ -58,7 +58,7 @@ describe('Edit API Token Drawer', () => { await act(async () => { const labelField = getByTestId('textfield-input'); - userEvent.type(labelField, 'my-token-updated'); + await userEvent.type(labelField, 'my-token-updated'); const saveButton = getByTestId('save-button'); From 1f135ef5426051796b4035945060f6e0232e2611 Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 14:40:13 -0500 Subject: [PATCH 07/10] fix: dbaas query keys and show button --- .../DatabaseSummary/DatabaseSummaryConnectionDetails.tsx | 2 +- packages/manager/src/queries/databases.ts | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSummary/DatabaseSummaryConnectionDetails.tsx b/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSummary/DatabaseSummaryConnectionDetails.tsx index 5f6fddeccaf..e8b6d8a1ec1 100644 --- a/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSummary/DatabaseSummaryConnectionDetails.tsx +++ b/packages/manager/src/features/Databases/DatabaseDetail/DatabaseSummary/DatabaseSummaryConnectionDetails.tsx @@ -242,7 +242,7 @@ export const DatabaseSummaryConnectionDetails = (props: Props) => { password = {password} - {credentialsLoading ? ( + {showCredentials && credentialsLoading ? (
diff --git a/packages/manager/src/queries/databases.ts b/packages/manager/src/queries/databases.ts index deb682283f4..57133d704ab 100644 --- a/packages/manager/src/queries/databases.ts +++ b/packages/manager/src/queries/databases.ts @@ -174,7 +174,7 @@ export const useDatabaseCredentialsQuery = ( enabled: boolean = false ) => useQuery( - [[queryKey, 'credentials'], id], + [queryKey, 'credentials', id], () => getDatabaseCredentials(engine, id), { ...queryPresets.oneTimeFetch, enabled } ); @@ -185,8 +185,8 @@ export const useDatabaseCredentialsMutation = (engine: Engine, id: number) => { () => resetDatabaseCredentials(engine, id), { onSuccess: () => { - queryClient.invalidateQueries([[queryKey, 'credentials'], id]); - queryClient.removeQueries([[queryKey, 'credentials'], id]); + queryClient.invalidateQueries([queryKey, 'credentials', id]); + queryClient.removeQueries([queryKey, 'credentials', id]); }, } ); From 340caac7c2c45b3ca84203aa8adb92f81a2d2621 Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 16:50:08 -0500 Subject: [PATCH 08/10] fix: obj file upload (we must create new object) --- .../src/features/ObjectStorage/BucketDetail/BucketDetail.tsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx b/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx index fb2963832f9..21aee455a88 100644 --- a/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx +++ b/packages/manager/src/features/ObjectStorage/BucketDetail/BucketDetail.tsx @@ -271,7 +271,10 @@ export const BucketDetail = () => { const dataCopy = [...copy[copy.length - 1].data]; dataCopy.push(object); - copy[copy.length - 1].data = dataCopy; + copy[copy.length - 1] = { + ...copy[copy.length - 1], + data: dataCopy, + }; updateStore(copy); }; From 3f9e561cecfc2cafda7227c1bfd32fed6eff44d9 Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 17:25:21 -0500 Subject: [PATCH 09/10] revert clean up to prevent breaking changes --- packages/manager/src/features/Account/EnableObjectStorage.tsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/manager/src/features/Account/EnableObjectStorage.tsx b/packages/manager/src/features/Account/EnableObjectStorage.tsx index 7d5676b5802..f8d5960735b 100644 --- a/packages/manager/src/features/Account/EnableObjectStorage.tsx +++ b/packages/manager/src/features/Account/EnableObjectStorage.tsx @@ -89,8 +89,8 @@ export const EnableObjectStorage = (props: Props) => { .then(() => { updateAccountSettingsData({ object_storage: 'disabled' }, queryClient); handleClose(); - queryClient.invalidateQueries([queryKey, 'buckets']); - queryClient.invalidateQueries([queryKey, 'access-keys']); + queryClient.invalidateQueries([`${queryKey}-buckets`]); + queryClient.invalidateQueries([`${queryKey}-access-keys`]); }) .catch(handleError); }; From ff88cf28402e843c9ec052ac9badd3cb4843295b Mon Sep 17 00:00:00 2001 From: Banks Nussman Date: Wed, 28 Feb 2024 17:27:37 -0500 Subject: [PATCH 10/10] specify the exact react query version --- packages/manager/package.json | 4 ++-- yarn.lock | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/manager/package.json b/packages/manager/package.json index 1538ecf3285..064df438018 100644 --- a/packages/manager/package.json +++ b/packages/manager/package.json @@ -23,8 +23,8 @@ "@paypal/react-paypal-js": "^7.8.3", "@reach/tabs": "^0.10.5", "@sentry/react": "^7.57.0", - "@tanstack/react-query": "4", - "@tanstack/react-query-devtools": "4", + "@tanstack/react-query": "4.36.1", + "@tanstack/react-query-devtools": "4.36.1", "algoliasearch": "^4.14.3", "axios": "~1.6.5", "braintree-web": "^3.92.2", diff --git a/yarn.lock b/yarn.lock index 344f7202270..fa2ab05d4d7 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3446,7 +3446,7 @@ resolved "https://registry.yarnpkg.com/@tanstack/query-core/-/query-core-4.36.1.tgz#79f8c1a539d47c83104210be2388813a7af2e524" integrity sha512-DJSilV5+ytBP1FbFcEJovv4rnnm/CokuVvrBEtW/Va9DvuJ3HksbXUJEpI0aV1KtuL4ZoO9AVE6PyNLzF7tLeA== -"@tanstack/react-query-devtools@4": +"@tanstack/react-query-devtools@4.36.1": version "4.36.1" resolved "https://registry.yarnpkg.com/@tanstack/react-query-devtools/-/react-query-devtools-4.36.1.tgz#7e63601135902a993ca9af73507b125233b1554e" integrity sha512-WYku83CKP3OevnYSG8Y/QO9g0rT75v1om5IvcWUwiUZJ4LanYGLVCZ8TdFG5jfsq4Ej/lu2wwDAULEUnRIMBSw== @@ -3455,7 +3455,7 @@ superjson "^1.10.0" use-sync-external-store "^1.2.0" -"@tanstack/react-query@4": +"@tanstack/react-query@4.36.1": version "4.36.1" resolved "https://registry.yarnpkg.com/@tanstack/react-query/-/react-query-4.36.1.tgz#acb589fab4085060e2e78013164868c9c785e5d2" integrity sha512-y7ySVHFyyQblPl3J3eQBWpXZkliroki3ARnBKsdJchlgt7yJLRDUcf4B8soufgiYt3pEQIkBWBx1N9/ZPIeUWw==