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