Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat(dashboard): remove query client provider #3112

Merged
merged 1 commit into from
Jan 22, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,22 +1,25 @@
import { QueryClient } from '@tanstack/react-query';

vi.mock('../../data/query-client', () => ({
queryClient: new QueryClient({
defaultOptions: {
queries: {
retry: false,
},
},
}),
}));

import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { createMockSiteWiseSDK } from '@iot-app-kit/testing-util';

import { type IoTSiteWiseClient } from '@aws-sdk/client-iotsitewise';
import { CSVDownloadButton } from './index';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import {
type StyledAssetQuery,
type StyledSiteWiseQueryConfig,
} from '~/customization/widgets/types';

const testQueryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false,
},
},
});

const assetId1 = 'some-asset-id-1';
const propertyId1 = 'some-property-id-1';
const alias1 = 'some-asset-alias-1';
Expand All @@ -40,17 +43,15 @@ vi.mock('~/data/listAssetPropertiesMap/fetchListAssetPropertiesMap', () => ({

it('does not render button if query has no content', function () {
render(
<QueryClientProvider client={testQueryClient}>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: MOCK_EMPTY_QUERY,
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
</QueryClientProvider>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: MOCK_EMPTY_QUERY,
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
);

expect(screen.queryByTestId(/csv-download-button/)).toBeNull();
Expand All @@ -66,14 +67,12 @@ it('creates a file for download if data is empty', async function () {
},
} as StyledSiteWiseQueryConfig;
render(
<QueryClientProvider client={testQueryClient}>
<CSVDownloadButton
queryConfig={mockQueryConfig}
fileName='csv-test'
widgetType='line'
client={mockClient}
/>
</QueryClientProvider>
<CSVDownloadButton
queryConfig={mockQueryConfig}
fileName='csv-test'
widgetType='line'
client={mockClient}
/>
);

const downloadButton = screen.queryByTestId(/csv-download-button/);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,24 @@
import { QueryClient } from '@tanstack/react-query';

vi.mock('../../data/query-client', () => ({
queryClient: new QueryClient({
defaultOptions: {
queries: {
retry: false,
},
},
}),
}));

import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { createMockSiteWiseSDK } from '@iot-app-kit/testing-util';

import { type IoTSiteWiseClient } from '@aws-sdk/client-iotsitewise';
import { CSVDownloadButton } from './index';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import { useFetchTimeSeriesData } from '../dashboard/queryContext';
import { type StyledAssetQuery } from '~/customization/widgets/types';
import { type DataStream } from '@iot-app-kit/core';

const testQueryClient = new QueryClient({
defaultOptions: {
queries: {
retry: false,
},
},
});

const assetId1 = 'some-asset-id-1';
const propertyId1 = 'some-property-id-1';
const alias1 = 'some-asset-alias-1';
Expand Down Expand Up @@ -47,19 +50,17 @@ vi.mock('~/data/listAssetPropertiesMap/fetchListAssetPropertiesMap', () => ({

it('console an errors if data has errors', async function () {
render(
<QueryClientProvider client={testQueryClient}>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: {
...MOCK_QUERY,
},
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
</QueryClientProvider>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: {
...MOCK_QUERY,
},
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
);

const consoleErrorSpy = vi.spyOn(console, 'error');
Expand All @@ -72,19 +73,17 @@ it('console an errors if data has errors', async function () {

it('does not create a file for download if data has errors', async function () {
render(
<QueryClientProvider client={testQueryClient}>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: {
...MOCK_QUERY,
},
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
</QueryClientProvider>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: {
...MOCK_QUERY,
},
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
);

const downloadButton = screen.queryByTestId(/csv-download-button/);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,14 +9,14 @@ import { useFetchTimeSeriesData } from '../dashboard/queryContext';
import { useViewport } from '@iot-app-kit/react-components';
import { assetModelQueryToSiteWiseAssetQuery } from '~/customization/widgets/utils/assetModelQueryToAssetQuery';
import { convertToCSVObject } from './convertToCSVObject';
import { useQueryClient } from '@tanstack/react-query';
import { fetchListAssetPropertiesMap } from '~/data/listAssetPropertiesMap/fetchListAssetPropertiesMap';
import {
BAR_CHART_RESOLUTIONS,
DEFAULT_VIEWPORT,
EMPTY_DATA,
} from './constants';
import { convertViewportToHistoricalViewport } from '../util/dateTimeUtil';
import { queryClient } from '~/data/query-client';

export const canOnlyDownloadLiveMode: readonly string[] = [
'table',
Expand Down Expand Up @@ -48,7 +48,6 @@ export const CSVDownloadButton = ({
fileName?: string;
} & ButtonProps) => {
const [isDownloading, setIsDownloading] = useState(false);
const queryClient = useQueryClient();
const fetchTimeSeriesData = useFetchTimeSeriesData();

const { viewport: injectedViewport } = useViewport();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,17 +1,26 @@
import { QueryClient } from '@tanstack/react-query';

vi.mock('../../data/query-client', () => ({
queryClient: new QueryClient({
defaultOptions: {
queries: {
retry: false,
},
},
}),
}));

import { fireEvent, render, screen, waitFor } from '@testing-library/react';
import { createMockSiteWiseSDK } from '@iot-app-kit/testing-util';

import { type IoTSiteWiseClient } from '@aws-sdk/client-iotsitewise';
import { CSVDownloadButton } from './index';
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
import {
type StyledAssetQuery,
type StyledSiteWiseQueryConfig,
} from '~/customization/widgets/types';
import { type DataStream, type DataType } from '@iot-app-kit/core';

const testQueryClient = new QueryClient({});

const assetId1 = 'some-asset-id-1';
const propertyId1 = 'some-property-id-1';
const alias1 = 'some-asset-alias-1';
Expand Down Expand Up @@ -44,19 +53,17 @@ vi.mock('~/data/listAssetPropertiesMap/fetchListAssetPropertiesMap', () => ({

it('renders a working download button if query has content', function () {
render(
<QueryClientProvider client={testQueryClient}>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: {
...MOCK_QUERY,
},
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
</QueryClientProvider>
<CSVDownloadButton
queryConfig={{
source: 'iotsitewise',
query: {
...MOCK_QUERY,
},
}}
widgetType='line'
fileName='csv-test'
client={createMockSiteWiseSDK() as unknown as IoTSiteWiseClient}
/>
);

const downloadButton = screen.queryByTestId(/csv-download-button/);
Expand All @@ -74,14 +81,12 @@ it('creates a file for download if query has content', async function () {
},
} as StyledSiteWiseQueryConfig;
render(
<QueryClientProvider client={testQueryClient}>
<CSVDownloadButton
queryConfig={mockQueryConfig}
fileName='csv-test'
client={mockClient}
widgetType='line'
/>
</QueryClientProvider>
<CSVDownloadButton
queryConfig={mockQueryConfig}
fileName='csv-test'
client={mockClient}
widgetType='line'
/>
);

const downloadButton = screen.queryByTestId(/csv-download-button/);
Expand Down
68 changes: 33 additions & 35 deletions packages/dashboard/src/components/dashboard/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@ import '@cloudscape-design/global-styles/index.css';
import type { EdgeMode, Viewport } from '@iot-app-kit/core';
import { isEdgeModeEnabled } from '@iot-app-kit/core';
import { TimeSync } from '@iot-app-kit/react-components';
import { QueryClientProvider } from '@tanstack/react-query';
import { ReactQueryDevtools } from '@tanstack/react-query-devtools';
import debounce from 'lodash-es/debounce';
import { memo, useMemo } from 'react';
Expand Down Expand Up @@ -102,42 +101,41 @@ const Dashboard: React.FC<DashboardProperties> = ({
{showFPSMonitor && <FpsView height={50} width={80} />}
<ClientContext.Provider value={clients}>
<QueryContext.Provider value={queries}>
<QueryClientProvider client={queryClient}>
<Provider store={initialStore}>
<DndProvider
backend={TouchBackend}
options={{
enableMouseEvents: true,
enableKeyboardEvents: true,
}}
<Provider store={initialStore}>
<DndProvider
backend={TouchBackend}
options={{
enableMouseEvents: true,
enableKeyboardEvents: true,
}}
>
<TimeSync
initialViewport={
dashboardConfiguration.defaultViewport ?? { duration: '5m' }
}
group='dashboard-timesync'
onViewportChange={debounceOnViewportChange}
>
<TimeSync
initialViewport={
dashboardConfiguration.defaultViewport ?? { duration: '5m' }
<InternalDashboard
toolbar={toolbar}
onSave={onSave}
editable={true}
name={name}
propertiesPanel={<PropertiesPanel />}
defaultViewport={dashboardConfiguration.defaultViewport}
currentViewport={currentViewport}
onDashboardConfigurationChange={
onDashboardConfigurationChange
}
group='dashboard-timesync'
onViewportChange={debounceOnViewportChange}
>
<InternalDashboard
toolbar={toolbar}
onSave={onSave}
editable={true}
name={name}
propertiesPanel={<PropertiesPanel />}
defaultViewport={dashboardConfiguration.defaultViewport}
currentViewport={currentViewport}
onDashboardConfigurationChange={
onDashboardConfigurationChange
}
/>
</TimeSync>
</DndProvider>
</Provider>
<ReactQueryDevtools
initialIsOpen={false}
buttonPosition='bottom-left'
/>
</QueryClientProvider>
/>
</TimeSync>
</DndProvider>
</Provider>
<ReactQueryDevtools
client={queryClient}
initialIsOpen={false}
buttonPosition='bottom-left'
/>
</QueryContext.Provider>
</ClientContext.Provider>
</>
Expand Down
Loading
Loading