[IMPROVE] Open Jitsi call even if server isn't found (#3442)
This commit is contained in:
parent
c216544cc4
commit
251b42ca54
|
@ -63,10 +63,12 @@ const parseDeepLinking = (url: string) => {
|
|||
}
|
||||
}
|
||||
const call = /^(https:\/\/)?jitsi.rocket.chat\//;
|
||||
const fullURL = url;
|
||||
|
||||
if (url.match(call)) {
|
||||
url = url.replace(call, '').trim();
|
||||
if (url) {
|
||||
return { path: url, isCall: true };
|
||||
return { path: url, isCall: true, fullURL };
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -36,6 +36,14 @@ async function jitsiURL({ room }) {
|
|||
return `${protocol}${domain}${prefix}${rname}${queryString}`;
|
||||
}
|
||||
|
||||
export function callJitsiWithoutServer(path) {
|
||||
logEvent(events.RA_JITSI_VIDEO);
|
||||
const { Jitsi_SSL } = reduxStore.getState().settings;
|
||||
const protocol = Jitsi_SSL ? 'https://' : 'http://';
|
||||
const url = `${protocol}${path}`;
|
||||
Navigation.navigate('JitsiMeetView', { url, onlyAudio: false });
|
||||
}
|
||||
|
||||
async function callJitsi(room, onlyAudio = false) {
|
||||
logEvent(onlyAudio ? events.RA_JITSI_AUDIO : events.RA_JITSI_VIDEO);
|
||||
const url = await jitsiURL.call(this, { room });
|
||||
|
|
|
@ -54,7 +54,7 @@ import loadMissedMessages from './methods/loadMissedMessages';
|
|||
import loadThreadMessages from './methods/loadThreadMessages';
|
||||
import sendMessage, { resendMessage } from './methods/sendMessage';
|
||||
import { cancelUpload, isUploadActive, sendFileMessage } from './methods/sendFileMessage';
|
||||
import callJitsi from './methods/callJitsi';
|
||||
import callJitsi, { callJitsiWithoutServer } from './methods/callJitsi';
|
||||
import logout, { removeServer } from './methods/logout';
|
||||
import UserPreferences from './userPreferences';
|
||||
import { Encryption } from './encryption';
|
||||
|
@ -76,6 +76,7 @@ const RocketChat = {
|
|||
CURRENT_SERVER,
|
||||
CERTIFICATE_KEY,
|
||||
callJitsi,
|
||||
callJitsiWithoutServer,
|
||||
async subscribeRooms() {
|
||||
if (!this.roomsSub) {
|
||||
try {
|
||||
|
|
|
@ -122,6 +122,11 @@ const handleOpen = function* handleOpen({ params }) {
|
|||
host = id;
|
||||
}
|
||||
});
|
||||
|
||||
if (!host && params.fullURL) {
|
||||
RocketChat.callJitsiWithoutServer(params.fullURL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
if (params.type === 'oauth') {
|
||||
|
|
|
@ -81,15 +81,17 @@ class JitsiMeetView extends React.Component {
|
|||
// call is not ended and is available to web users.
|
||||
onConferenceJoined = () => {
|
||||
logEvent(events.JM_CONFERENCE_JOIN);
|
||||
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
||||
if (this.jitsiTimeout) {
|
||||
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
||||
BackgroundTimer.stopBackgroundTimer();
|
||||
this.jitsiTimeout = null;
|
||||
}
|
||||
this.jitsiTimeout = BackgroundTimer.setInterval(() => {
|
||||
if (this.rid) {
|
||||
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
||||
}, 10000);
|
||||
if (this.jitsiTimeout) {
|
||||
BackgroundTimer.clearInterval(this.jitsiTimeout);
|
||||
BackgroundTimer.stopBackgroundTimer();
|
||||
this.jitsiTimeout = null;
|
||||
}
|
||||
this.jitsiTimeout = BackgroundTimer.setInterval(() => {
|
||||
RocketChat.updateJitsiTimeout(this.rid).catch(e => console.log(e));
|
||||
}, 10000);
|
||||
}
|
||||
};
|
||||
|
||||
onConferenceTerminated = () => {
|
||||
|
|
Loading…
Reference in New Issue