diff --git a/ui-common/package.json b/ui-common/package.json index dd174e752..06a9de731 100644 --- a/ui-common/package.json +++ b/ui-common/package.json @@ -1,6 +1,6 @@ { "name": "@up9/mizu-common", - "version": "1.0.128", + "version": "1.0.129", "description": "Made with create-react-library", "author": "", "license": "MIT", diff --git a/ui-common/src/components/TrafficViewer/TrafficViewer.tsx b/ui-common/src/components/TrafficViewer/TrafficViewer.tsx index 2d9326980..7ca097e36 100644 --- a/ui-common/src/components/TrafficViewer/TrafficViewer.tsx +++ b/ui-common/src/components/TrafficViewer/TrafficViewer.tsx @@ -48,10 +48,13 @@ interface TrafficViewerProps { trafficViewerApiProp: TrafficViewerApi, actionButtons?: JSX.Element, isShowStatusBar?: boolean, - webSocketUrl : string + webSocketUrl : string, + isCloseWebSocket : boolean } -export const TrafficViewer : React.FC = ({setAnalyzeStatus, trafficViewerApiProp, actionButtons,isShowStatusBar,webSocketUrl}) => { +export const TrafficViewer : React.FC = ({setAnalyzeStatus, trafficViewerApiProp, + actionButtons,isShowStatusBar,webSocketUrl, + isCloseWebSocket}) => { const classes = useLayoutStyles(); @@ -103,6 +106,10 @@ export const TrafficViewer : React.FC = ({setAnalyzeStatus, handleQueryChange(query); }, [query, handleQueryChange]); + useEffect(()=>{ + isCloseWebSocket && closeWebSocket() + },[isCloseWebSocket]) + const ws = useRef(null); const listEntry = useRef(null); @@ -142,6 +149,10 @@ export const TrafficViewer : React.FC = ({setAnalyzeStatus, }, 500) } + const closeWebSocket = () => { + ws.current && ws.current.close() + } + if (ws.current) { ws.current.onmessage = (e) => { if (!e?.data) return; @@ -200,7 +211,7 @@ export const TrafficViewer : React.FC = ({setAnalyzeStatus, } useEffect(() => { - setTrafficViewerApiState({...trafficViewerApiProp, webSocket : {close : () => ws.current.close()}}); + setTrafficViewerApiState({...trafficViewerApiProp, webSocket : {close : closeWebSocket}}); (async () => { openWebSocket("leftOff(-1)", true); try{ @@ -330,10 +341,13 @@ export const TrafficViewer : React.FC = ({setAnalyzeStatus, }; const MemoiedTrafficViewer = React.memo(TrafficViewer) -const TrafficViewerContainer: React.FC = ({ setAnalyzeStatus, trafficViewerApiProp, actionButtons, isShowStatusBar = true ,webSocketUrl}) => { +const TrafficViewerContainer: React.FC = ({ setAnalyzeStatus, trafficViewerApiProp, + actionButtons, isShowStatusBar = true , + webSocketUrl, isCloseWebSocket}) => { return + isCloseWebSocket={isCloseWebSocket} trafficViewerApiProp={trafficViewerApiProp} + setAnalyzeStatus={setAnalyzeStatus} /> } diff --git a/ui-common/src/components/TrafficViewer/TrafficViewerApi.ts b/ui-common/src/components/TrafficViewer/TrafficViewerApi.ts index e05744e7a..5ee7c0029 100644 --- a/ui-common/src/components/TrafficViewer/TrafficViewerApi.ts +++ b/ui-common/src/components/TrafficViewer/TrafficViewerApi.ts @@ -1,13 +1,13 @@ type TrafficViewerApi = { - validateQuery : (query: any) => any - tapStatus : () => any - analyzeStatus : () => any - fetchEntries : (leftOff: any, direction: number, query: any, limit: number, timeoutMs: number) => any - getEntry : (entryId : any, query:string) => any - getRecentTLSLinks : () => any, - webSocket : { - close : () => {} - } + validateQuery: (query: any) => any + tapStatus: () => any + analyzeStatus: () => any + fetchEntries: (leftOff: any, direction: number, query: any, limit: number, timeoutMs: number) => any + getEntry: (entryId: any, query: string) => any + getRecentTLSLinks: () => any, + webSocket: { + close: () => void } +} - export default TrafficViewerApi +export default TrafficViewerApi diff --git a/ui/package.json b/ui/package.json index 80cf4f7b8..ba4a25c36 100644 --- a/ui/package.json +++ b/ui/package.json @@ -13,7 +13,7 @@ "@types/jest": "^26.0.22", "@types/node": "^12.20.10", "@uiw/react-textarea-code-editor": "^1.4.12", - "@up9/mizu-common": "^1.0.128", + "@up9/mizu-common": "^1.0.129", "axios": "^0.25.0", "core-js": "^3.20.2", "craco-babel-loader": "^1.0.3", diff --git a/ui/src/components/Pages/TrafficPage/TrafficPage.tsx b/ui/src/components/Pages/TrafficPage/TrafficPage.tsx index 60b307aba..08cf05a0c 100644 --- a/ui/src/components/Pages/TrafficPage/TrafficPage.tsx +++ b/ui/src/components/Pages/TrafficPage/TrafficPage.tsx @@ -1,4 +1,4 @@ -import React, {useEffect} from "react"; +import React, {useEffect, useState} from "react"; import { Button } from "@material-ui/core"; import Api,{getWebsocketUrl} from "../../../helpers/api"; import debounce from 'lodash/debounce'; @@ -8,8 +8,8 @@ import serviceMapModalOpenAtom from "../../../recoil/serviceMapModalOpen"; import TrafficViewer from "@up9/mizu-common" import "@up9/mizu-common/dist/index.css" import oasModalOpenAtom from "../../../recoil/oasModalOpen/atom"; -import serviceMap from "../../assets/serviceMap.svg"; -import services from "../../assets/services.svg"; +import serviceMap from "../../assets/serviceMap.svg"; +import services from "../../assets/services.svg"; interface TrafficPageProps { setAnalyzeStatus?: (status: any) => void; @@ -21,38 +21,40 @@ export const TrafficPage: React.FC = ({setAnalyzeStatus}) => { const commonClasses = useCommonStyles(); const setServiceMapModalOpen = useSetRecoilState(serviceMapModalOpenAtom); const [openOasModal, setOpenOasModal] = useRecoilState(oasModalOpenAtom); + const [openWebSocket, setOpenWebSocket] = useState(true); const trafficViewerApi = {...api} - const handleOpenOasModal = () => { - //closeSocket() -- Todo: Add Close webSocket - setOpenOasModal(true); + const handleOpenOasModal = () => { + setOpenWebSocket(false) + setOpenOasModal(true); } const openServiceMapModalDebounce = debounce(() => { + setOpenWebSocket(false) setServiceMapModalOpen(true) }, 500); - const actionButtons = (window["isOasEnabled"] || window["isServiceMapEnabled"]) && -
- {window["isOasEnabled"] && } - {window["isServiceMapEnabled"] && } + const actionButtons = (window["isOasEnabled"] || window["isServiceMapEnabled"]) && +
+ {window["isOasEnabled"] && } + {window["isServiceMapEnabled"] && }
useEffect(() => { @@ -61,9 +63,9 @@ const trafficViewerApi = {...api} } },[]) - return ( + return ( <> - );