import { AppEvents, UrlQueryMap } from '@grafana/data'; import { FetchError, getBackendSrv } from '@grafana/runtime'; import { Dashboard } from '@grafana/schema'; import appEvents from 'app/core/app_events'; import { dashboardWatcher } from 'app/features/live/dashboard/dashboardWatcher'; import { DeleteDashboardResponse } from 'app/features/manage-dashboards/types'; import { SaveDashboardResponseDTO, DashboardDTO } from 'app/types'; import { SaveDashboardCommand } from '../components/SaveDashboard/types'; import { DashboardAPI } from './types'; export class LegacyDashboardAPI implements DashboardAPI { constructor() {} saveDashboard(options: SaveDashboardCommand): Promise { dashboardWatcher.ignoreNextSave(); return getBackendSrv().post('/api/dashboards/db/', { dashboard: options.dashboard, message: options.message ?? '', overwrite: options.overwrite ?? false, folderUid: options.folderUid, }); } deleteDashboard(uid: string, showSuccessAlert: boolean): Promise { return getBackendSrv().delete(`/api/dashboards/uid/${uid}`, undefined, { showSuccessAlert, }); } async getDashboardDTO(uid: string, params?: UrlQueryMap) { const result = await getBackendSrv().get(`/api/dashboards/uid/${uid}`, params); if (result.meta.isFolder) { appEvents.emit(AppEvents.alertError, ['Dashboard not found']); const fetchError: FetchError = { status: 404, config: { url: `/api/dashboards/uid/${uid}` }, data: { message: 'Dashboard not found' }, }; throw fetchError; } return result; } }