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);
if (firstConnection) {
firstConnection = false;
} else {
document.dispatchEvent(wsConnectionEvent); 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,8 +132,14 @@ export default function AdminAreaRoles() {
rolesRequest(); rolesRequest();
document.addEventListener(wsConnectionCustomEventName, () => const handleRolesRequest = () => rolesRequest();
rolesRequest()
document.addEventListener(wsConnectionCustomEventName, handleRolesRequest);
return () =>
document.removeEventListener(
wsConnectionCustomEventName,
handleRolesRequest
); );
}, []); }, []);

View File

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

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,6 +64,7 @@ export default function GroupTasksViewModal({ isOpen }) {
useEffect(() => { useEffect(() => {
if (!isOpen) return; if (!isOpen) return;
const stepsRequest = () =>
myFetch( myFetch(
`/grouptasks/${paramCategory}/steps/${paramGroupTaskId}`, `/grouptasks/${paramCategory}/steps/${paramGroupTaskId}`,
"GET" "GET"
@ -84,6 +86,21 @@ export default function GroupTasksViewModal({ isOpen }) {
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,8 +95,17 @@ 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]);

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,8 +538,14 @@ 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]);

View File

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