diff --git a/react/features/base/config/functions.js b/react/features/base/config/functions.js index f6baf26d8..abbfabe38 100644 --- a/react/features/base/config/functions.js +++ b/react/features/base/config/functions.js @@ -43,6 +43,21 @@ const WHITELISTED_KEYS = [ */ 'callDisplayName', + /** + * The call handle of the CallKit call representing the conference/meeting + * associated with this config.js. The property is meant for use cases in + * which Jitsi Meet is to work with a CallKit call created outside of Jitsi + * Meet and to be adopted by Jitsi Meet such as, for example, an incoming + * and/or outgoing CallKit call created by Jitsi Meet SDK for iOS + * clients/consumers prior to giving control to Jitsi Meet. As the value is + * associated with a conference/meeting, the value makes sense not as a + * deployment-wide configuration, only as a runtime configuration + * override/overwrite provided by, for example, Jitsi Meet SDK for iOS. + * + * @type string + */ + 'callHandle', + /** * The UUID of the CallKit call representing the conference/meeting * associated with this config.js. The property is meant for use cases in diff --git a/react/features/mobile/callkit/middleware.js b/react/features/mobile/callkit/middleware.js index 2fa957c24..d47663c6d 100644 --- a/react/features/mobile/callkit/middleware.js +++ b/react/features/mobile/callkit/middleware.js @@ -227,7 +227,7 @@ function _conferenceWillJoin({ getState }, next, action) { const { conference } = action; const state = getState(); - const { callUUID } = state['features/base/config']; + const { callUUID, callHandle } = state['features/base/config']; const url = getInviteURL(state); const hasVideo = !isVideoMutedByAudioOnly(state); @@ -235,7 +235,9 @@ function _conferenceWillJoin({ getState }, next, action) { // it upper cased. conference.callUUID = (callUUID || uuid.v4()).toUpperCase(); - CallKit.startCall(conference.callUUID, url.toString(), hasVideo) + const handleURL = callHandle || url.toString(); + + CallKit.startCall(conference.callUUID, handleURL, hasVideo) .then(() => { const { callee } = state['features/base/jwt']; const displayName