import React, { PureComponent } from 'react'; import Remarkable from 'remarkable'; import { getBackendSrv } from '../../services/backend_srv'; interface Props { plugin: { name: string; id: string; }; type: string; } interface State { isError: boolean; isLoading: boolean; help: string; } export class PluginHelp extends PureComponent { state = { isError: false, isLoading: false, help: '', }; componentDidMount(): void { this.loadHelp(); } constructPlaceholderInfo() { return 'No plugin help or readme markdown file was found'; } loadHelp = () => { const { plugin, type } = this.props; this.setState({ isLoading: true }); getBackendSrv() .get(`/api/plugins/${plugin.id}/markdown/${type}`) .then(response => { const markdown = new Remarkable(); const helpHtml = markdown.render(response); if (response === '' && type === 'help') { this.setState({ isError: false, isLoading: false, help: this.constructPlaceholderInfo(), }); } else { this.setState({ isError: false, isLoading: false, help: helpHtml, }); } }) .catch(() => { this.setState({ isError: true, isLoading: false, }); }); }; render() { const { type } = this.props; const { isError, isLoading, help } = this.state; if (isLoading) { return

Loading help...

; } if (isError) { return

'Error occurred when loading help'

; } if (type === 'panel_help' && help === '') { } return
; } }