diff --git a/src/App.js b/src/App.js index 6d0a5d6..b82604d 100644 --- a/src/App.js +++ b/src/App.js @@ -31,7 +31,10 @@ export default function App() { setUserSession={setUserSession} notificationApi={notificationApi} > - + diff --git a/src/Components/SideMenu/index.js b/src/Components/SideMenu/index.js index a2bcdf0..97124d5 100644 --- a/src/Components/SideMenu/index.js +++ b/src/Components/SideMenu/index.js @@ -9,15 +9,9 @@ import Sider from "antd/es/layout/Sider"; import { useContext, useEffect, useState } from "react"; import { useLocation, useNavigate } from "react-router-dom"; import PropTypes from "prop-types"; -import { - Constants, - MyAvatar, - UseUserSession, - WebSocketContext, -} from "../../utils"; +import { Constants, MyAvatar, WebSocketContext } from "../../utils"; -export default function SideMenu({ setUserSession }) { - const { userSession } = UseUserSession(); +export default function SideMenu({ userSession, setUserSession }) { const location = useLocation(); const [selectedKeys, setSelectedKeys] = useState("/"); const webSocketContext = useContext(WebSocketContext); diff --git a/src/Pages/Scanners/index.js b/src/Pages/Scanners/index.js index 3811586..8c5ce8e 100644 --- a/src/Pages/Scanners/index.js +++ b/src/Pages/Scanners/index.js @@ -1,6 +1,7 @@ -import { Button, Popover, QRCode, Space, Table } from "antd"; -import { MyAvatar } from "../../utils"; -import { PlusOutlined } from "@ant-design/icons"; +import { Space, Table } from "antd"; +import { FormatDatetime, WebSocketContext } from "../../utils"; +import { useContext } from "react"; +import { Link } from "react-router-dom"; const columns = [ { @@ -23,37 +24,71 @@ const columns = [ dataIndex: "registeredAt", key: "registeredAt", }, -]; - -const data = [ { - key: "1", - name: "Alex", - usedBy: , - lastUsed: new Date().toLocaleString(), - registeredAt: new Date().toLocaleString(), + title: "User-Agent", + dataIndex: "userAgent", + key: "userAgent", + }, + { + title: "Action", + dataIndex: "action", + key: "action", + render: (_, record) => ( + + Use scanner + + ), }, ]; export default function Scanners() { + const webSocketContext = useContext(WebSocketContext); + + const getTableItems = () => { + if (webSocketContext.Scanners === null) return []; + + let items = []; + + webSocketContext.Scanners.forEach((scanner) => { + items.push({ + key: scanner.Id, + name: scanner.Name, + usedBy: scanner.UsedByUserId, + lastUsed: scanner.LastUsed, + registeredAt: FormatDatetime(scanner.RegisteredAt), + userAgent: scanner.UserAgent, + }); + }); + + return items; + }; + return ( <> -

Scanners (0)

+

+ Scanners ( + {webSocketContext.Scanners === null + ? "0" + : webSocketContext.Scanners.length} + ) +

- } - > - - - - +
); } + +/* +} +> + + +*/ diff --git a/src/Pages/UserProfile/index.js b/src/Pages/UserProfile/index.js index 59c17bf..2f76365 100644 --- a/src/Pages/UserProfile/index.js +++ b/src/Pages/UserProfile/index.js @@ -8,6 +8,7 @@ import { getConnectionStatusItem, getUserSessionFromLocalStorage, } from "../../utils"; +import { Link } from "react-router-dom"; const columns = [ { @@ -37,7 +38,7 @@ const columns = [ render: (_, record) => { return ( - { fetch(`${Constants.API_ADDRESS}/user/session/${record.key}`, { @@ -52,7 +53,7 @@ const columns = [ }} > Sign out - + ); }, diff --git a/src/utils.js b/src/utils.js index 872ef70..23b18f3 100644 --- a/src/utils.js +++ b/src/utils.js @@ -85,6 +85,7 @@ let webSocketContextPreview = { CategoryGroups: [], GroupTasks: [], GroupTasksSteps: [], + Scanners: [], }; export const WebSocketContext = createContext(webSocketContextPreview); @@ -101,6 +102,8 @@ const ReceivedMessagesCommands = { GroupTasksReloaded: 8, UpdateUserSessions: 9, UpdateAllUsersUserAvatar: 10, + NewScanner: 11, + DeleteScanner: 12, }; // commands sent to the backend server @@ -131,6 +134,7 @@ export function WebSocketProvider({ // these are all group tasks that are then filtered and displayed in the respective tables for the category const [groupTasks, setGroupTasks] = useState([]); const [groupTasksSteps, setGroupTasksSteps] = useState([]); + const [scanners, setScanners] = useState([]); const navigate = useNavigate(); const StartGroupTasksOpenModalRememberIdRef = useRef(null); @@ -162,6 +166,7 @@ export function WebSocketProvider({ setCategoryGroups(body.CategoryGroups); setGroupTasks(body.GroupTasks); setGroupTasksSteps(body.GroupTasksSteps); + if (body.Scanners !== null) setScanners(body.Scanners); break; case ReceivedMessagesCommands.UpdateConnectedUsers: setConnectedWebSocketUsersCount(body.WebSocketUsersCount); @@ -240,6 +245,12 @@ export function WebSocketProvider({ return newArr; }); break; + case ReceivedMessagesCommands.NewScanner: + setScanners((arr) => [...arr, body]); + break; + case ReceivedMessagesCommands.DeleteScanner: + setScanners((arr) => arr.filter((arr) => arr.Id !== body.Id)); + break; default: console.error("unknown command", cmd); break; @@ -291,6 +302,7 @@ export function WebSocketProvider({ GroupTasks: groupTasks, User: user, AllUsers: allUsers, + Scanners: scanners, SendSocketMessage: SendSocketMessage, GroupTasksSteps: groupTasksSteps, setGroupTasksSteps: setGroupTasksSteps,