import { useState, useEffect } from 'react'; import BarcodeScannerComponent from 'react-qr-barcode-scanner'; import Container from 'react-bootstrap/Container'; import Row from 'react-bootstrap/Row'; import Col from 'react-bootstrap/Col'; import Table from 'react-bootstrap/Table'; import Alert from 'react-bootstrap/Alert'; import Form from 'react-bootstrap/Form'; import Button from 'react-bootstrap/Button'; import './App.css'; import 'bootstrap/dist/css/bootstrap.min.css'; function App() { // Ensure we have persistent (informal) user information const [user, setUser] = useState(""); useEffect(() => { const user = localStorage.getItem('user'); if (user) { setUser(user); } }, []); useEffect(() => { localStorage.setItem('user', user); }, [user]); // If no user, must be scanned/set otherwise return ( {user === "" ? : } ); } function NoUserView({setUser}) { const [preUser, setPreUser] = useState(""); return ( <> User: setPreUser(v.target.value)} /> Which user is using this App? Scanner ); } function UserView({user, setUser}) { return ( {user} ); } function BarItemScanner() { const [reqAccount, setReqAccount] = useState(''); const [actAccount, setActAccount] = useState(''); const [balance, setBalance] = useState(-1); const [statusMsg, setStatusMsg] = useState(''); const [msgType, setMsgType] = useState('info'); const handleScan = async (err, result) => { if (result) { const ra = result.text; setReqAccount(ra); setStatusMsg('Loading'); setMsgType('primary'); try { const resp = await fetch('/api/barcode/' + ra); if (resp.ok) { const json = await resp.json(); setActAccount(ra); setBalance(json.amount); setStatusMsg('OK'); setMsgType('success'); } } catch(ex) { setMsgType('danger'); setStatusMsg(ex.message); } } }; return ( <>
Requested: {reqAccount}
Loaded: {actAccount}
Balance: {balance}
{statusMsg} ); } export default App;