import React, { useEffect, useState } from "react"; import { useParams } from "react-router"; import { Button, TextField } from "@material-ui/core"; import { UpdatesProvider, useUpdatesContext, } from "../../Contexts/UpdatesContext"; import { useUserContext } from "../../Contexts/UserContext"; import { useStatusContext } from "../../Contexts/StatusContext"; import useStyles from "../../useStyles"; import { tsLocalDateTimeString } from "../../../utils/dates"; import { logger } from "../../../services/monitoring"; const MainForm = () => { const { id } = useParams(); const { getPackages, updatePackage, packages, busy } = useUpdatesContext(); const { token: { idToken: { jwtToken: token }, }, } = useUserContext(); const { setMessage, setTitle } = useStatusContext(); const [packageName, setPackageName] = useState(""); const [version, setVersion] = useState(""); const [link, setLink] = useState(""); const [description, setDescription] = useState(""); const [releaseNotesLink, setReleaseNotesLink] = useState(""); const [createDate, setCreateDate] = useState(""); const classes = useStyles(); const onSubmit = async (event) => { try { event.preventDefault(); const data = { id: parseInt(id), package_name: packageName, version, link, desc: description, release_notes: releaseNotesLink, }; await updatePackage(data, token); setMessage(`Updated ${packageName} ${version}`); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; const getData = async () => { try { getPackages({ id: parseInt(id) }, token); } catch (e) { setMessage(e.message); logger.warn(e.stack); } }; const handleChange = (event) => { const field = event.target.id; const value = event.target.value; if (field === "packagename") { setPackageName(value); } else if (field === "version") { setVersion(value); } else if (field === "link") { setLink(value); } else if (field === "description") { setDescription(value); } else if (field === "releasenotes") { setReleaseNotesLink(value); } }; useEffect(() => { setTitle(`Edit Update Package ${id}`); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); useEffect(() => { getData(); // eslint-disable-next-line react-hooks/exhaustive-deps }, [token]); useEffect(() => { if (!packages || packages.length === 0) return; var data = packages[0]; setPackageName(data.package_name); setVersion(data.version); setLink(data.link); setDescription(data.desc || ""); setReleaseNotesLink(data.release_notes || ""); setCreateDate(tsLocalDateTimeString(data.timestamp)); }, [packages]); return (
); }; const UpdatePackageEditForm = () => ( ); export default UpdatePackageEditForm;