import { useMemo } from 'react'; import { LiveChannelAddress, isValidLiveChannelAddress } from '@grafana/data'; import { getBackendSrv, getGrafanaLiveSrv } from '@grafana/runtime'; import { CodeEditor, Button } from '@grafana/ui'; import { MessagePublishMode } from './types'; interface Props { height: number; addr?: LiveChannelAddress; mode: MessagePublishMode; body?: string | object; onSave: (v: string | object) => void; } export function LivePublish({ height, mode, body, addr, onSave }: Props) { const txt = useMemo(() => { if (mode === MessagePublishMode.JSON) { return body ? JSON.stringify(body, null, 2) : '{ }'; } return body == null ? '' : `${body}`; }, [mode, body]); const doSave = (v: string) => { if (mode === MessagePublishMode.JSON) { onSave(JSON.parse(v)); } else { onSave(v); } }; const onPublishClicked = async () => { if (mode === MessagePublishMode.Influx) { if (addr?.scope !== 'stream') { alert('expected stream scope!'); return; } return getBackendSrv().post(`api/live/push/${addr.namespace}`, body); } if (!isValidLiveChannelAddress(addr)) { alert('invalid address'); return; } const rsp = await getGrafanaLiveSrv().publish(addr, body); console.log('onPublishClicked (response from publish)', rsp); }; return ( <>
); }