mirror of
https://github.com/simplex-chat/simplex-chat.git
synced 2024-12-17 17:20:21 +01:00
mobile: call settings, request camera on iOS on call start (#701)
* mobile: call settings, request camera on iOS on call start * refactor preferences * fix typo
This commit is contained in:
committed by
GitHub
parent
79d9e90ab7
commit
da13e6614b
@@ -53,6 +53,7 @@ interface IWCallResponse {
|
||||
|
||||
interface WCCapabilities extends IWCallCommand {
|
||||
type: "capabilities"
|
||||
media?: CallMediaType
|
||||
useWorker?: boolean
|
||||
}
|
||||
|
||||
@@ -289,8 +290,7 @@ const processCommand = (function () {
|
||||
const pc = new RTCPeerConnection(config.peerConnectionConfig)
|
||||
const remoteStream = new MediaStream()
|
||||
const localCamera = VideoCamera.User
|
||||
const constraints = callMediaConstraints(mediaType, localCamera)
|
||||
const localStream = await navigator.mediaDevices.getUserMedia(constraints)
|
||||
const localStream = await getLocalMediaStream(mediaType, localCamera)
|
||||
const iceCandidates = getIceCandidates(pc, config)
|
||||
const call = {connection: pc, iceCandidates, localMedia: mediaType, localCamera, localStream, remoteStream, aesKey, useWorker}
|
||||
await setupMediaStreams(call)
|
||||
@@ -352,11 +352,15 @@ const processCommand = (function () {
|
||||
try {
|
||||
switch (command.type) {
|
||||
case "capabilities":
|
||||
console.log("starting outgoing call - capabilities")
|
||||
if (activeCall) endCall()
|
||||
// This request for local media stream is made to prompt for camera/mic permissions on call start
|
||||
if (command.media) await getLocalMediaStream(command.media, VideoCamera.User)
|
||||
const encryption = supportsInsertableStreams(command.useWorker)
|
||||
resp = {type: "capabilities", capabilities: {encryption}}
|
||||
break
|
||||
case "start": {
|
||||
console.log("starting call")
|
||||
console.log("starting incoming call - create webrtc session")
|
||||
if (activeCall) endCall()
|
||||
const {media, useWorker, iceServers, relay} = command
|
||||
const encryption = supportsInsertableStreams(useWorker)
|
||||
@@ -582,8 +586,7 @@ const processCommand = (function () {
|
||||
const pc = call.connection
|
||||
for (const t of call.localStream.getTracks()) t.stop()
|
||||
call.localCamera = camera
|
||||
const constraints = callMediaConstraints(call.localMedia, camera)
|
||||
const localStream = await navigator.mediaDevices.getUserMedia(constraints)
|
||||
const localStream = await getLocalMediaStream(call.localMedia, camera)
|
||||
replaceTracks(pc, localStream.getVideoTracks())
|
||||
replaceTracks(pc, localStream.getAudioTracks())
|
||||
call.localStream = localStream
|
||||
@@ -621,6 +624,11 @@ const processCommand = (function () {
|
||||
}
|
||||
}
|
||||
|
||||
function getLocalMediaStream(mediaType: CallMediaType, facingMode: VideoCamera): Promise<MediaStream> {
|
||||
const constraints = callMediaConstraints(mediaType, facingMode)
|
||||
return navigator.mediaDevices.getUserMedia(constraints)
|
||||
}
|
||||
|
||||
function callMediaConstraints(mediaType: CallMediaType, facingMode: VideoCamera): MediaStreamConstraints {
|
||||
switch (mediaType) {
|
||||
case CallMediaType.Audio:
|
||||
|
||||
Reference in New Issue
Block a user