From b297d57f9d9b0df410163fbde99c225af55bd315 Mon Sep 17 00:00:00 2001 From: Anton Tananaev Date: Sun, 21 Jun 2020 18:54:00 -0700 Subject: Implement device editing --- modern/src/DevicePage.js | 67 +++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 61 insertions(+), 6 deletions(-) (limited to 'modern/src/DevicePage.js') diff --git a/modern/src/DevicePage.js b/modern/src/DevicePage.js index 24a06d1..c9362de 100644 --- a/modern/src/DevicePage.js +++ b/modern/src/DevicePage.js @@ -1,6 +1,6 @@ -import React from 'react'; +import React, { useEffect, useState } from 'react'; import MainToobar from './MainToolbar'; -import { useHistory } from 'react-router-dom'; +import { useHistory, useParams } from 'react-router-dom'; import { makeStyles } from '@material-ui/core/styles'; import TextField from '@material-ui/core/TextField'; import Container from '@material-ui/core/Container'; @@ -25,20 +25,75 @@ const useStyles = makeStyles(theme => ({ const DevicePage = () => { const history = useHistory(); const classes = useStyles(); + const { id } = useParams(); + const [device, setDevice] = useState(); + const [name, setName] = useState(''); + const [uniqueId, setUniqueId] = useState(''); + + useEffect(() => { + fetch(`/api/devices/${id}`).then(response => { + if (response.ok) { + response.json().then(setDevice); + } + }); + }, [id]); + + const handleSave = () => { + const updatedDevice = id ? device : {}; + updatedDevice.name = name || updatedDevice.name; + updatedDevice.uniqueId = uniqueId || updatedDevice.uniqueId; + + let request; + if (id) { + request = fetch(`/api/devices/${id}`, { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(updatedDevice), + }); + } else { + request = fetch('/api/devices', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(updatedDevice), + }); + } + + request.then(response => { + if (response.ok) { + history.goBack(); + } + }); + } return ( <>
- - + {(!id || device) && + setName(event.target.value)} + label={t('sharedName')} + variant="filled" /> + } + {(!id || device) && + setUniqueId(event.target.value)} + label={t('deviceIdentifier')} + variant="filled" /> + }
- -
-- cgit v1.2.3