use scanner

main
alex 2023-05-25 14:36:42 +02:00
parent 81412ef340
commit 487fd255cf
2 changed files with 57 additions and 6 deletions

View File

@ -1,7 +1,13 @@
import { Space, Table } from "antd"; import { Space, Table, message } from "antd";
import { FormatDatetime, WebSocketContext } from "../../utils"; import {
FormatDatetime,
MyAvatar,
WebSocketContext,
getUserSessionFromLocalStorage,
} from "../../utils";
import { useContext } from "react"; import { useContext } from "react";
import { Link } from "react-router-dom"; import { Link } from "react-router-dom";
import { Constants } from "../../utils";
const columns = [ const columns = [
{ {
@ -11,8 +17,8 @@ const columns = [
}, },
{ {
title: "Used by", title: "Used by",
dataIndex: "usedBy", dataIndex: "usedByUserId",
key: "usedBy", key: "usedByUserId",
}, },
{ {
title: "Last used", title: "Last used",
@ -35,7 +41,25 @@ const columns = [
key: "action", key: "action",
render: (_, record) => ( render: (_, record) => (
<Space size="middle"> <Space size="middle">
<Link to="#">Use scanner</Link> <Link
to="#"
onClick={() => {
if (localStorage.getItem("userId") === record._usedByUserId) {
message.error("You are already using this scanner");
return;
}
fetch(`${Constants.API_ADDRESS}/scanner/${record.key}`, {
method: "PATCH",
headers: {
"Content-Type": "application/json",
"X-Authorization": getUserSessionFromLocalStorage(),
},
}).catch((err) => console.error(err));
}}
>
Use scanner
</Link>
</Space> </Space>
), ),
}, },
@ -50,10 +74,23 @@ export default function Scanners() {
let items = []; let items = [];
webSocketContext.Scanners.forEach((scanner) => { webSocketContext.Scanners.forEach((scanner) => {
const usedByUser = webSocketContext.AllUsers.find(
(user) => user.Id === scanner.UsedByUserId
);
items.push({ items.push({
key: scanner.Id, key: scanner.Id,
name: scanner.Name, name: scanner.Name,
usedBy: scanner.UsedByUserId, usedByUserId:
scanner.UsedByUserId === "" ? (
Constants.TEXT_EMPTY_PLACEHOLDER
) : (
<>
<MyAvatar avatar={usedByUser.Avatar} />
<span> {usedByUser.Username}</span>
</>
),
_usedByUserId: scanner.UsedByUserId,
lastUsed: scanner.LastUsed, lastUsed: scanner.LastUsed,
registeredAt: FormatDatetime(scanner.RegisteredAt), registeredAt: FormatDatetime(scanner.RegisteredAt),
userAgent: scanner.UserAgent, userAgent: scanner.UserAgent,

View File

@ -104,6 +104,7 @@ const ReceivedMessagesCommands = {
UpdateAllUsersUserAvatar: 10, UpdateAllUsersUserAvatar: 10,
NewScanner: 11, NewScanner: 11,
DeleteScanner: 12, DeleteScanner: 12,
UpdateScannerUsedByUserId: 13,
}; };
// commands sent to the backend server // commands sent to the backend server
@ -167,6 +168,8 @@ export function WebSocketProvider({
setGroupTasks(body.GroupTasks); setGroupTasks(body.GroupTasks);
setGroupTasksSteps(body.GroupTasksSteps); setGroupTasksSteps(body.GroupTasksSteps);
if (body.Scanners !== null) setScanners(body.Scanners); if (body.Scanners !== null) setScanners(body.Scanners);
localStorage.setItem("userId", body.User.Id);
break; break;
case ReceivedMessagesCommands.UpdateConnectedUsers: case ReceivedMessagesCommands.UpdateConnectedUsers:
setConnectedWebSocketUsersCount(body.WebSocketUsersCount); setConnectedWebSocketUsersCount(body.WebSocketUsersCount);
@ -251,6 +254,17 @@ export function WebSocketProvider({
case ReceivedMessagesCommands.DeleteScanner: case ReceivedMessagesCommands.DeleteScanner:
setScanners((arr) => arr.filter((arr) => arr.Id !== body.Id)); setScanners((arr) => arr.filter((arr) => arr.Id !== body.Id));
break; break;
case ReceivedMessagesCommands.UpdateScannerUsedByUserId:
setScanners((arr) => {
const newArr = [...arr];
newArr[
arr.findIndex((arr1) => arr1.Id === body.ScannerId)
].UsedByUserId = body.UsedByUserId;
return newArr;
});
break;
default: default:
console.error("unknown command", cmd); console.error("unknown command", cmd);
break; break;