From ff21affa025f7b6993b41426a458ea31627ff38d Mon Sep 17 00:00:00 2001 From: Phiter Fernandes Date: Sat, 23 May 2020 22:16:50 -0300 Subject: [PATCH 1/4] fix(office): fixes user invitation to external meeting opening jitsi instead resolves #222 --- docs/CHANGELOG.md | 2 +- frontend/src/morpheus/App.js | 5 +- .../src/morpheus/containers/OfficePage.js | 55 ++++++++++--------- 3 files changed, 34 insertions(+), 28 deletions(-) diff --git a/docs/CHANGELOG.md b/docs/CHANGELOG.md index 8c003687..745957f4 100644 --- a/docs/CHANGELOG.md +++ b/docs/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Removed ### Changed - +- fixed behavior when inviting user to external meeting, now matrix will not open a new jitsi room ## [2.0.1] 2020-05-05 ### Added - New `ctrl+click` to open a embeded Jitsi Meet in a new Tab. diff --git a/frontend/src/morpheus/App.js b/frontend/src/morpheus/App.js index 2884a553..6b01adba 100644 --- a/frontend/src/morpheus/App.js +++ b/frontend/src/morpheus/App.js @@ -3,7 +3,7 @@ import { withRouter } from "react-router-dom"; import { connect } from "react-redux"; import { useSnackbar } from "notistack"; import PropTypes from "prop-types"; - +import { enterRoom } from "./containers/OfficePage"; import Loading from "../components/Loading"; import PageLayout from "../components/PageLayout"; import MenuUsers from "../components/MenuUsers"; @@ -153,7 +153,8 @@ const MorpheusApp = ({ }} onConfirm={() => { emitEnterInRoom(invitation.room.id); - history.push(`/morpheus/room/${invitation.room.id}`); + onSetCurrentRoom(invitation.room); + enterRoom(invitation.room); }} /> diff --git a/frontend/src/morpheus/containers/OfficePage.js b/frontend/src/morpheus/containers/OfficePage.js index 4a82e54d..6d5a426c 100644 --- a/frontend/src/morpheus/containers/OfficePage.js +++ b/frontend/src/morpheus/containers/OfficePage.js @@ -14,6 +14,35 @@ import { emitEnterInRoom, emitStartMeeting, emitLeftMeeting} from "../socket"; import { setCurrentRoom } from "../store/actions"; import { CurrentRoomPropType } from "../store/models"; +export const enterRoom = (room, event) => { + emitEnterInRoom(room.id); + + if(room.externalMeetUrl){ + emitStartMeeting(); + const externalMeetRoom = window.open(room.externalMeetUrl); + + const externalMeetRoomMonitoring = () => { + window.setTimeout(() => { + if (externalMeetRoom.closed) { + emitLeftMeeting(); + }else{ + externalMeetRoomMonitoring(); + } + }, 1000); + } + + externalMeetRoomMonitoring(); + + }else{ + const redirectUrl = `/morpheus/room/${room.id}`; + if (event.ctrlKey) { + window.open(redirectUrl, "_blank"); + } else { + history.push(redirectUrl); + } + } +} + const useStyles = makeStyles(theme => ({ root: { padding: theme.spacing(3) @@ -54,33 +83,9 @@ const OfficePage = ({ history.replace(`/morpheus/office/${room.id}`); }} onEnterMeeting={(event) => { - emitEnterInRoom(room.id); onSetCurrentRoom(room); - if(room.externalMeetUrl){ - emitStartMeeting(); - const externalMeetRoom = window.open(room.externalMeetUrl); - - const externalMeetRoomMonitoring = () => { - window.setTimeout(() => { - if (externalMeetRoom.closed) { - emitLeftMeeting(); - }else{ - externalMeetRoomMonitoring(); - } - }, 1000); - } - - externalMeetRoomMonitoring(); - - }else{ - const redirectUrl = `/morpheus/room/${room.id}`; - if (event.ctrlKey) { - window.open(redirectUrl, "_blank"); - } else { - history.push(redirectUrl); - } - } + enterRoom(room, event); }} /> ))} From e2be815252e45e466ea02296aaf4803968a73d9a Mon Sep 17 00:00:00 2001 From: Phiter Fernandes Date: Sat, 23 May 2020 22:57:35 -0300 Subject: [PATCH 2/4] refactor(office): split enterRoom function into smaller functions to reduce complexity --- .../src/morpheus/containers/OfficePage.js | 43 ++++++++++--------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/frontend/src/morpheus/containers/OfficePage.js b/frontend/src/morpheus/containers/OfficePage.js index 6d5a426c..d0f3ea82 100644 --- a/frontend/src/morpheus/containers/OfficePage.js +++ b/frontend/src/morpheus/containers/OfficePage.js @@ -14,34 +14,35 @@ import { emitEnterInRoom, emitStartMeeting, emitLeftMeeting} from "../socket"; import { setCurrentRoom } from "../store/actions"; import { CurrentRoomPropType } from "../store/models"; +const externalMeetRoomMonitoring = (externalMeetRoom) => { + const interval = window.setInterval(() => { + if (!externalMeetRoom.closed) return; + + emitLeftMeeting(); + window.clearInterval(interval); + }, 1000); +}; + +const startMeeting = (redirectUrl, openInNewTab = false) => { + if (openInNewTab) { + window.open(redirectUrl, "_blank"); + } else { + window.history.push(redirectUrl); + } +}; + export const enterRoom = (room, event) => { emitEnterInRoom(room.id); - if(room.externalMeetUrl){ + if(room.externalMeetUrl) { emitStartMeeting(); const externalMeetRoom = window.open(room.externalMeetUrl); - const externalMeetRoomMonitoring = () => { - window.setTimeout(() => { - if (externalMeetRoom.closed) { - emitLeftMeeting(); - }else{ - externalMeetRoomMonitoring(); - } - }, 1000); - } - - externalMeetRoomMonitoring(); - - }else{ - const redirectUrl = `/morpheus/room/${room.id}`; - if (event.ctrlKey) { - window.open(redirectUrl, "_blank"); - } else { - history.push(redirectUrl); - } + externalMeetRoomMonitoring(externalMeetRoom); + } else { + startMeeting(`/morpheus/room/${room.id}`, event.ctrlKey); } -} +}; const useStyles = makeStyles(theme => ({ root: { From 49c2dc157714a971b55ad26a85ae534afdf87467 Mon Sep 17 00:00:00 2001 From: Phiter Fernandes Date: Sat, 23 May 2020 23:05:11 -0300 Subject: [PATCH 3/4] fix(invitation): fixes office invitation history and event references --- frontend/src/morpheus/App.js | 2 +- frontend/src/morpheus/containers/OfficePage.js | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/frontend/src/morpheus/App.js b/frontend/src/morpheus/App.js index 6b01adba..3bd70c3c 100644 --- a/frontend/src/morpheus/App.js +++ b/frontend/src/morpheus/App.js @@ -154,7 +154,7 @@ const MorpheusApp = ({ onConfirm={() => { emitEnterInRoom(invitation.room.id); onSetCurrentRoom(invitation.room); - enterRoom(invitation.room); + enterRoom(invitation.room, history); }} /> diff --git a/frontend/src/morpheus/containers/OfficePage.js b/frontend/src/morpheus/containers/OfficePage.js index d0f3ea82..53c13ba3 100644 --- a/frontend/src/morpheus/containers/OfficePage.js +++ b/frontend/src/morpheus/containers/OfficePage.js @@ -23,15 +23,15 @@ const externalMeetRoomMonitoring = (externalMeetRoom) => { }, 1000); }; -const startMeeting = (redirectUrl, openInNewTab = false) => { +const startMeeting = (redirectUrl, history, openInNewTab = false) => { if (openInNewTab) { window.open(redirectUrl, "_blank"); } else { - window.history.push(redirectUrl); + history.push(redirectUrl); } }; -export const enterRoom = (room, event) => { +export const enterRoom = (room, history, openInNewTab = false) => { emitEnterInRoom(room.id); if(room.externalMeetUrl) { @@ -40,7 +40,7 @@ export const enterRoom = (room, event) => { externalMeetRoomMonitoring(externalMeetRoom); } else { - startMeeting(`/morpheus/room/${room.id}`, event.ctrlKey); + startMeeting(`/morpheus/room/${room.id}`, history, openInNewTab); } }; @@ -86,7 +86,7 @@ const OfficePage = ({ onEnterMeeting={(event) => { onSetCurrentRoom(room); - enterRoom(room, event); + enterRoom(room, event, event.ctrlKey); }} /> ))} From fa3dac9eab21d3d7449c960a0729a71e6114676b Mon Sep 17 00:00:00 2001 From: Phiter Fernandes Date: Mon, 25 May 2020 12:45:14 -0300 Subject: [PATCH 4/4] fix: pass down correct parameter to enterRoom function --- frontend/src/morpheus/containers/OfficePage.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/frontend/src/morpheus/containers/OfficePage.js b/frontend/src/morpheus/containers/OfficePage.js index 53c13ba3..94bb3010 100644 --- a/frontend/src/morpheus/containers/OfficePage.js +++ b/frontend/src/morpheus/containers/OfficePage.js @@ -85,8 +85,8 @@ const OfficePage = ({ }} onEnterMeeting={(event) => { onSetCurrentRoom(room); - - enterRoom(room, event, event.ctrlKey); + const openInNewTab = event.ctrlKey + enterRoom(room, history, openInNewTab); }} /> ))}