import { createPortal } from 'react-dom' import { useState, useEffect } from 'react' import PropTypes from 'prop-types' import { Dialog, DialogContent, DialogTitle, TableContainer, Table, TableHead, TableRow, TableCell, TableBody, Paper } from '@mui/material' import moment from 'moment' import axios from 'axios' const fetchLatestVer = async ({ api }) => { let apiReturn = await axios .get(api) .then(async function (response) { return response.data }) .catch(function (error) { console.error(error) }) return apiReturn } const AboutDialog = ({ show, onCancel }) => { const portalElement = document.getElementById('portal') const [data, setData] = useState({}) useEffect(() => { if (show) { const fetchData = async (api) => { let response = await fetchLatestVer({ api }) setData(response) } fetchData('https://api.github.com/repos/FlowiseAI/Flowise/releases/latest') } // eslint-disable-next-line react-hooks/exhaustive-deps }, [show]) const component = show ? ( Flowise Version {data && ( Latest Version Published At {data.name} {moment(data.published_at).fromNow()}
)}
) : null return createPortal(component, portalElement) } AboutDialog.propTypes = { show: PropTypes.bool, onCancel: PropTypes.func } export default AboutDialog