fixed event is registered multiple times

main
alex 2023-11-01 22:57:18 +01:00
parent d8895914cc
commit f045c1b328
10 changed files with 136 additions and 43 deletions

View File

@ -288,18 +288,19 @@ export function SideMenuContent({
subscribeTopicMessage(); subscribeTopicMessage();
document.addEventListener(wsConnectionCustomEventName, () => const handleSubscribeTopicMessage = () => subscribeTopicMessage();
subscribeTopicMessage()
document.addEventListener(
wsConnectionCustomEventName,
handleSubscribeTopicMessage
); );
// auto close sideMenu on mobile // auto close sideMenu on mobile
// this will prevent to auto close sideMenu on first render as the useEffects will be called after the first render // this will prevent to auto close sideMenu on first render as the useEffects will be called after the first render
if (contentFirstRender.current) { if (contentFirstRender.current) {
contentFirstRender.current = false; contentFirstRender.current = false;
return; //return;
} } else if (
if (
/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test( /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(
navigator.userAgent navigator.userAgent
) || ) ||
@ -307,6 +308,12 @@ export function SideMenuContent({
) { ) {
setIsSideMenuCollapsed(true); setIsSideMenuCollapsed(true);
} }
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleSubscribeTopicMessage
);
}, [location.pathname]); }, [location.pathname]);
return ( return (

View File

@ -22,6 +22,7 @@ const WebSocketContext = createContext(null);
export const useWebSocketContext = () => useContext(WebSocketContext); export const useWebSocketContext = () => useContext(WebSocketContext);
let wsConnectionEvent = null; let wsConnectionEvent = null;
let firstConnection = true;
export default function WebSocketProvider({ export default function WebSocketProvider({
children, children,
@ -56,11 +57,14 @@ export default function WebSocketProvider({
); );
ws.current.onopen = () => { ws.current.onopen = () => {
console.log("connected");
sideBarContext.setConnectionBadgeStatus("success"); sideBarContext.setConnectionBadgeStatus("success");
setIsWebSocketReady(true); setIsWebSocketReady(true);
document.dispatchEvent(wsConnectionEvent); if (firstConnection) {
firstConnection = false;
} else {
document.dispatchEvent(wsConnectionEvent);
}
myFetch("/user/", "GET").then((data) => { myFetch("/user/", "GET").then((data) => {
appContext.userId.current = data.UserId; appContext.userId.current = data.UserId;

View File

@ -153,7 +153,15 @@ function LogManagerServersTable({ t, webSocketContext, appContext }) {
lmscRequest(); lmscRequest();
document.addEventListener(wsConnectionCustomEventName, () => lmscRequest()); const handleLmscRequest = () => lmscRequest();
document.addEventListener(wsConnectionCustomEventName, handleLmscRequest);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleLmscRequest
);
}, []); }, []);
return ( return (

View File

@ -132,9 +132,15 @@ export default function AdminAreaRoles() {
rolesRequest(); rolesRequest();
document.addEventListener(wsConnectionCustomEventName, () => const handleRolesRequest = () => rolesRequest();
rolesRequest()
); document.addEventListener(wsConnectionCustomEventName, handleRolesRequest);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleRolesRequest
);
}, []); }, []);
return ( return (

View File

@ -341,9 +341,15 @@ export default function AllUsers() {
usersRequest(); usersRequest();
document.addEventListener(wsConnectionCustomEventName, () => const handleUsersRequest = () => usersRequest();
usersRequest()
); document.addEventListener(wsConnectionCustomEventName, handleUsersRequest);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleUsersRequest
);
}, []); }, []);
return ( return (

View File

@ -18,13 +18,23 @@ export default function Consoles() {
const lmscRequest = () => const lmscRequest = () =>
myFetch("/lmsc", "GET").then((data) => { myFetch("/lmsc", "GET").then((data) => {
consolesContext.setConnectedLogManagerServers(data); consolesContext.setConnectedLogManagerServers(data);
setSelectedLogServer(data.length > 0 ? data[0].Address : ""); setSelectedLogServer(data.length > 0 ? data[0].Address : "");
}); });
lmscRequest(); lmscRequest();
document.addEventListener(wsConnectionCustomEventName, () => lmscRequest()); const handleWsConnectionEvent = () => lmscRequest();
document.addEventListener(
wsConnectionCustomEventName,
handleWsConnectionEvent
);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleWsConnectionEvent
);
}, []); }, []);
useEffect(() => { useEffect(() => {

View File

@ -21,6 +21,7 @@ import {
GetDuration, GetDuration,
hasXYPermission, hasXYPermission,
myFetch, myFetch,
wsConnectionCustomEventName,
} from "../../../utils"; } from "../../../utils";
import { import {
CheckOutlined, CheckOutlined,
@ -63,27 +64,43 @@ export default function GroupTasksViewModal({ isOpen }) {
useEffect(() => { useEffect(() => {
if (!isOpen) return; if (!isOpen) return;
myFetch( const stepsRequest = () =>
`/grouptasks/${paramCategory}/steps/${paramGroupTaskId}`, myFetch(
"GET" `/grouptasks/${paramCategory}/steps/${paramGroupTaskId}`,
).then((data) => { "GET"
currentGroupTask.current = data.GroupTask; ).then((data) => {
groupTasksContext.setGroupTasksSteps(data.GroupTaskSteps); currentGroupTask.current = data.GroupTask;
groupTasksContext.setGroupTasksSteps(data.GroupTaskSteps);
// set the select inputs // set the select inputs
if ( if (
data.GroupTaskSteps[data.GroupTaskSteps.length - 1].Inputs !== "" && data.GroupTaskSteps[data.GroupTaskSteps.length - 1].Inputs !== "" &&
data.GroupTaskSteps[data.GroupTaskSteps.length - 1].Status === data.GroupTaskSteps[data.GroupTaskSteps.length - 1].Status ===
Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED Constants.GROUP_TASKS_STATUS.INPUT_REQUIRED
) { ) {
const inputs = JSON.parse( const inputs = JSON.parse(
data.GroupTaskSteps[data.GroupTaskSteps.length - 1].Inputs data.GroupTaskSteps[data.GroupTaskSteps.length - 1].Inputs
); );
groupTasksContext.setSelectInputs(inputs); groupTasksContext.setSelectInputs(inputs);
} }
}); });
stepsRequest();
const handleWsConnectionEvent = () => stepsRequest();
document.addEventListener(
wsConnectionCustomEventName,
handleWsConnectionEvent
);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleWsConnectionEvent
);
}, [isOpen, paramCategory]); }, [isOpen, paramCategory]);
if (!isOpen) return <></>; if (!isOpen) return <></>;

View File

@ -95,9 +95,18 @@ export default function GroupTasks({ isGroupTasksViewModalOpen }) {
groupTasksRequest(); groupTasksRequest();
document.addEventListener(wsConnectionCustomEventName, () => const handleGroupTasksRequest = () => groupTasksRequest();
groupTasksRequest()
document.addEventListener(
wsConnectionCustomEventName,
handleGroupTasksRequest
); );
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleGroupTasksRequest
);
}, [groupTasksContext.paginationPage]); }, [groupTasksContext.paginationPage]);
useEffect( useEffect(

View File

@ -519,7 +519,18 @@ export default function Robots() {
useEffect(() => { useEffect(() => {
initRequest(); initRequest();
document.addEventListener(wsConnectionCustomEventName, () => initRequest()); const handleInitRequest = () => initRequest();
document.addEventListener(
wsConnectionCustomEventName,
() => handleInitRequest
);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
() => handleInitRequest
);
}, [robotsPaginationPage]); }, [robotsPaginationPage]);
const initRequest2 = () => fetchRobots(1, unauthorizedRobotsPaginationPage); const initRequest2 = () => fetchRobots(1, unauthorizedRobotsPaginationPage);
@ -527,9 +538,15 @@ export default function Robots() {
useEffect(() => { useEffect(() => {
initRequest2(); initRequest2();
document.addEventListener(wsConnectionCustomEventName, () => const handleInitRequest2 = () => initRequest2();
initRequest2()
); document.addEventListener(wsConnectionCustomEventName, handleInitRequest2);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleInitRequest2
);
}, [unauthorizedRobotsPaginationPage]); }, [unauthorizedRobotsPaginationPage]);
useEffect(() => { useEffect(() => {

View File

@ -462,9 +462,18 @@ export default function UserProfile({ userSession, setUserSession }) {
userProfileRequest(); userProfileRequest();
document.addEventListener(wsConnectionCustomEventName, () => const handleUserProfileRequest = () => userProfileRequest();
userProfileRequest()
document.addEventListener(
wsConnectionCustomEventName,
handleUserProfileRequest
); );
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleUserProfileRequest
);
}, []); }, []);
useEffect( useEffect(