diff --git a/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx b/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx index 48587752bc1..a62a3366b6c 100644 --- a/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx +++ b/public/app/features/explore/QueryLibrary/QueryTemplatesList.tsx @@ -1,10 +1,7 @@ -import { uniq } from 'lodash'; -import React, { useEffect, useState } from 'react'; +import React from 'react'; -import { getBackendSrv } from '@grafana/runtime/src/services/backendSrv'; import { EmptyState, Spinner } from '@grafana/ui'; import { useAllQueryTemplatesQuery } from 'app/features/query-library'; -import { User } from 'app/features/query-library/api/types'; import { QueryTemplate } from 'app/features/query-library/types'; import { getDatasourceSrv } from '../../plugins/datasource_srv'; @@ -12,59 +9,8 @@ import { getDatasourceSrv } from '../../plugins/datasource_srv'; import QueryTemplatesTable from './QueryTemplatesTable'; import { QueryTemplateRow } from './QueryTemplatesTable/types'; -const getQueryTemplateRows = async (data: QueryTemplate[]): Promise => { - const userQtList = uniq(data.map((qt) => qt.user).filter((user): user is User => !!user)); - - const userData = Promise.all( - userQtList.map((user) => { - if (user.userId) { - return getBackendSrv().get(`api/users/${user.userId}`); - } else if (user.login) { - return getBackendSrv().get(`api/users/lookup/${user.login}`); - } else { - // should never happen - return Promise.resolve(); - } - }) - ); - - return userData.then((ud) => { - return data.map((queryTemplate: QueryTemplate, index: number) => { - const datasourceRef = queryTemplate.targets[0]?.datasource; - const datasourceType = getDatasourceSrv().getInstanceSettings(datasourceRef)?.meta.name || ''; - - const user = - queryTemplate.user?.userId !== undefined - ? ud.find((user) => user.id === queryTemplate.user?.userId) - : ud.find((user) => user.login === queryTemplate.user?.login); - - return { - index: index.toString(), - datasourceRef, - datasourceType, - createdAtTimestamp: queryTemplate?.createdAtTimestamp || 0, - query: queryTemplate.targets[0], - description: queryTemplate.title, - user: user, - }; - }); - }); -}; - export function QueryTemplatesList() { const { data, isLoading, error } = useAllQueryTemplatesQuery(); - const [queryTemplateData, setQueryTemplateData] = useState([]); - - useEffect(() => { - const setQTData = async () => { - const queryTemplateData = await getQueryTemplateRows(data!); - setQueryTemplateData(queryTemplateData); - }; - - if (isLoading === false && data !== undefined) { - setQTData(); - } - }, [data, isLoading]); if (error) { return ( @@ -90,5 +36,19 @@ export function QueryTemplatesList() { ); } - return ; + const queryTemplateRows: QueryTemplateRow[] = data.map((queryTemplate: QueryTemplate, index: number) => { + const datasourceRef = queryTemplate.targets[0]?.datasource; + const datasourceType = getDatasourceSrv().getInstanceSettings(datasourceRef)?.meta.name || ''; + return { + index: index.toString(), + datasourceRef, + datasourceType, + createdAtTimestamp: queryTemplate?.createdAtTimestamp || 0, + query: queryTemplate.targets[0], + description: queryTemplate.title, + user: queryTemplate.user, + }; + }); + + return ; } diff --git a/public/app/features/explore/QueryLibrary/QueryTemplatesTable/AddedByCell.tsx b/public/app/features/explore/QueryLibrary/QueryTemplatesTable/AddedByCell.tsx index 9eacbefbb53..a0d5c497c88 100644 --- a/public/app/features/explore/QueryLibrary/QueryTemplatesTable/AddedByCell.tsx +++ b/public/app/features/explore/QueryLibrary/QueryTemplatesTable/AddedByCell.tsx @@ -1,21 +1,17 @@ import React from 'react'; -import { Avatar } from '@grafana/ui'; -import { UserDTO } from 'app/types'; +import { User } from 'app/features/query-library/api/types'; import { useQueryLibraryListStyles } from './styles'; type AddedByCellProps = { - user?: UserDTO; + user?: User; }; export function AddedByCell(props: AddedByCellProps) { const styles = useQueryLibraryListStyles(); return (
- - - {props.user?.login || 'Unknown'}
); diff --git a/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts b/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts index 2d7bf1ca455..0f9041fa533 100644 --- a/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts +++ b/public/app/features/explore/QueryLibrary/QueryTemplatesTable/types.ts @@ -1,5 +1,5 @@ import { DataQuery, DataSourceRef } from '@grafana/schema'; -import { UserDTO } from 'app/types'; +import { User } from 'app/features/query-library/api/types'; export type QueryTemplateRow = { index: string; @@ -8,5 +8,5 @@ export type QueryTemplateRow = { datasourceRef?: DataSourceRef | null; datasourceType?: string; createdAtTimestamp?: number; - user?: UserDTO; + user?: User; }; diff --git a/public/app/features/explore/spec/helper/setup.tsx b/public/app/features/explore/spec/helper/setup.tsx index ad5260eb489..c2aa3187aff 100644 --- a/public/app/features/explore/spec/helper/setup.tsx +++ b/public/app/features/explore/spec/helper/setup.tsx @@ -83,7 +83,7 @@ export function setupExplore(options?: SetupOptions): { } return of({ data }); }), - get: jest.fn().mockResolvedValue({}), + get: jest.fn(), patch: jest.fn().mockRejectedValue(undefined), post: jest.fn(), put: jest.fn().mockRejectedValue(undefined),