import React, { useEffect} from 'react'; import Paper from '@material-ui/core/Paper'; import Grid from '@material-ui/core/Grid'; import ButtonBase from '@material-ui/core/ButtonBase'; import Button from '@material-ui/core/Button'; import List from '@material-ui/core/List'; import ListItem from '@material-ui/core/ListItem'; import TextField from '@material-ui/core/TextField'; import Select from '@material-ui/core/Select'; import MenuItem from '@material-ui/core/MenuItem'; import Dialog from '@material-ui/core/Dialog'; import DialogTitle from '@material-ui/core/DialogTitle'; import DialogActions from '@material-ui/core/DialogActions'; import DialogContent from '@material-ui/core/DialogContent'; import WebhookImage from './assets/img/webhook.png'; import KafkaImage from './assets/img/kafka.png'; const Webhooks = (props) => { const { globalUrl, isLoaded } = props; const validtypes = ["webhook"] //const [hooks, setSchedules] = React.useState(hookdata); const [hooks, setHooks] = React.useState([]); const [modalOpen, setModalOpen] = React.useState(false); const [newHookName, setNewHookName] = React.useState(""); const [newHookDescription, setNewHookDescription] = React.useState(""); const [newHookType, setNewHookType] = React.useState(""); const [firstrequest, setFirstrequest] = React.useState(true); const [, setModalError] = React.useState(""); useEffect(() => { if (firstrequest) { setFirstrequest(false) getAvailableHooks() } }) const newHook = () => { if (newHookName.length === 0) { setModalError("Missing name in modal") return } if (!validtypes.includes(newHookType)) { setModalError(newHookType + " is not a valid type. Try this: "+validtypes) } fetch(globalUrl+"/api/v1/hooks/new", { method: "POST", headers: {"content-type": "application/json"}, body: JSON.stringify({"name": newHookName, "description": newHookDescription, "type": newHookType}), credentials: "include", }) .then((response) => response.json()) .then((responseJson) => { console.log(responseJson) setHooks([]) }) .catch(error => { console.log(error) }); } const getAvailableHooks = () => { fetch(globalUrl+"/api/v1/hooks", { method: 'GET', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, credentials: "include", }) .then((response) => response.json()) .then((responseJson) => { setHooks(responseJson) }) .catch(error => { console.log(error) // window.location.pathname = "/" }); } const deleteHook = (id) => { if (id === undefined) { return } fetch(globalUrl+"/api/v1/hooks/"+id+"/delete", { method: 'DELETE', headers: { 'Content-Type': 'application/json', 'Accept': 'application/json', }, credentials: "include", }) .then((response) => response.json()) .then((responseJson) => { setHooks([]) }) .catch(error => { console.log(error) }); } const bodyDivStyle = { marginLeft: "20px", marginRight: "20px", width: "1350px", minWidth: "1350px", maxWidth: "1350px", } const hookApp = (app) => { // Might be more options, but should be webhook or MQ const appPicture = app.type === "webhook" ? webhook : MQ return( {appPicture} {splitter}

{app.info.name}

Desc: {app.info.description}
Status: {app.status}
{app.action}
) } const splitter =
const hrefStyle = { color: "#385f71", textDecoration: "none" } // FIXME - add Schedule modal const hookPaper = (hook) => { return(
{hookApp(hook)}
{splitter}
) } const modalView = modalOpen ? {setModalOpen(false)}} > Hook configuration {setNewHookName(event.target.value)}} color="primary" placeholder="Name" margin="dense" fullWidth /> {setNewHookDescription(event.target.value)}} color="primary" placeholder="Description" margin="dense" fullWidth /> : null const hookmap = hooks.length > 0 ?
{hooks.map(data => ( hookPaper(data) ))}
:
const hookView =
{hookmap}
const loadedCheck = isLoaded ?
{modalView} {hookView}
:
// Maybe use gridview or something, idk return (
{loadedCheck}
) } export default Webhooks