2022-04-22 08:33:13 -05:00
|
|
|
import React, { useCallback } from 'react';
|
|
|
|
|
2021-10-15 06:18:39 -05:00
|
|
|
import { DataSourcePluginMeta } from '@grafana/data';
|
|
|
|
import { Button } from '@grafana/ui';
|
2023-02-06 04:24:04 -06:00
|
|
|
import { useDataSourcesRoutes, addDataSource } from 'app/features/datasources/state';
|
2022-09-19 04:49:35 -05:00
|
|
|
import { useDispatch } from 'app/types';
|
2022-04-22 08:33:13 -05:00
|
|
|
|
2021-10-26 08:18:12 -05:00
|
|
|
import { isDataSourceEditor } from '../../permissions';
|
2021-10-15 06:18:39 -05:00
|
|
|
import { CatalogPlugin } from '../../types';
|
|
|
|
|
|
|
|
type Props = {
|
|
|
|
plugin: CatalogPlugin;
|
|
|
|
};
|
|
|
|
|
2021-10-26 08:18:12 -05:00
|
|
|
export function GetStartedWithDataSource({ plugin }: Props): React.ReactElement | null {
|
2021-10-15 06:18:39 -05:00
|
|
|
const dispatch = useDispatch();
|
2023-02-06 04:24:04 -06:00
|
|
|
const dataSourcesRoutes = useDataSourcesRoutes();
|
2021-10-15 06:18:39 -05:00
|
|
|
const onAddDataSource = useCallback(() => {
|
|
|
|
const meta = {
|
|
|
|
name: plugin.name,
|
|
|
|
id: plugin.id,
|
|
|
|
} as DataSourcePluginMeta;
|
|
|
|
|
2023-02-06 04:24:04 -06:00
|
|
|
dispatch(addDataSource(meta, dataSourcesRoutes.Edit));
|
|
|
|
}, [dispatch, plugin, dataSourcesRoutes]);
|
2021-10-15 06:18:39 -05:00
|
|
|
|
2021-10-26 08:18:12 -05:00
|
|
|
if (!isDataSourceEditor()) {
|
|
|
|
return null;
|
|
|
|
}
|
|
|
|
|
2021-10-15 06:18:39 -05:00
|
|
|
return (
|
|
|
|
<Button variant="primary" onClick={onAddDataSource}>
|
2023-05-26 03:15:16 -05:00
|
|
|
Add new data source
|
2021-10-15 06:18:39 -05:00
|
|
|
</Button>
|
|
|
|
);
|
|
|
|
}
|