CEC-2545 Fix/can signals context (#210)

This commit is contained in:
arpanetus
2022-10-03 20:50:15 +06:00
committed by GitHub
parent d2a467d22b
commit 84fbf57daa
17 changed files with 347 additions and 205 deletions

View File

@@ -1,8 +1,8 @@
import React, { useContext, useState, useEffect } from "react";
import React, {useContext, useState} from "react";
import api from "../../services/vehiclesAPI";
import { useUserContext } from "./UserContext";
import { LocalDateTimeString } from "../../utils/dates";
import {useInterval} from "usehooks-ts";
const CANSignalContext = React.createContext();
@@ -15,41 +15,26 @@ const BlankSignal = (msg) => ({
const transformSignals = (signals) =>
signals
.map((signal) => {
const { Timestamp, ...Settings } = signal;
const keys = Object.keys(Settings);
const { timestamp, value, name } = signal;
return keys.map((key) => ({
timestamp: LocalDateTimeString(Timestamp),
signal: key,
value: Settings[key],
}));
return {
timestamp: LocalDateTimeString(timestamp),
signal: name,
value: value,
};
})
.flat();
export const CANSignalProvider = ({ children }) => {
const {
token: {
idToken: { jwtToken: token },
},
} = useUserContext();
export const CANSignalProvider = ({ token, children }) => {
const [vin, setVIN] = useState(null);
const [signals, setSignals] = useState([]);
let delay = 500;
const [delay, setDelay] = useState(500);
useEffect(() => {
getCANSignals();
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [vin]);
useEffect(() => {
const timer = setTimeout(() => {
getCANSignals();
}, delay);
return () => {
clearTimeout(timer);
};
// eslint-disable-next-line react-hooks/exhaustive-deps
}, [signals]);
useInterval(
() => {
getCANSignals()
}, vin?delay:null
)
const getCANSignals = async () => {
try {
@@ -62,10 +47,10 @@ export const CANSignalProvider = ({ children }) => {
const items = transformSignals(result.data);
if (items.length > 0) {
delay = 500;
setDelay(500);
setSignals(items);
} else {
delay = 1000;
setDelay(1000);
setSignals([BlankSignal("No signals")]);
}
} catch (e) {