From 7cc51fa740bd41725bdafdb125a923baacfe2a7d Mon Sep 17 00:00:00 2001 From: Alyssa Krueger Date: Tue, 15 Jun 2021 18:14:00 -0700 Subject: [PATCH] feat: specify when publish fails due to media access denied Currently all publish failures will return a generic error, "FailedToCreateLocalPublisher". In the cases where publishing fails to media access permissions denied, return a different error to help clients distinguish why publishing failed. --- src/NetworkTest/errors/types.ts | 2 ++ src/NetworkTest/testConnectivity/errors/index.ts | 6 ++++++ src/NetworkTest/testConnectivity/index.ts | 2 ++ 3 files changed, 10 insertions(+) diff --git a/src/NetworkTest/errors/types.ts b/src/NetworkTest/errors/types.ts index 1b379049..27cbb526 100644 --- a/src/NetworkTest/errors/types.ts +++ b/src/NetworkTest/errors/types.ts @@ -26,6 +26,7 @@ export enum ErrorNames { NO_VIDEO_CAPTURE_DEVICES = 'NoVideoCaptureDevicesError', NO_AUDIO_CAPTURE_DEVICES = 'NoAudioCaptureDevicesError', PUBLISH_TO_SESSION_ERROR = 'PublishToSessionError', + MEDIA_PERMISSIONS_ERROR = 'MediaAccessDeniedError', INIT_PUBLISHER_ERROR = 'InitPublisherError', FAILED_MESSAGING_SERVER_TEST = 'FailedMessagingServerTestError', FAILED_TO_CREATE_LOCAL_PUBLISHER = 'FailedToCreateLocalPublisher', @@ -46,6 +47,7 @@ export enum OTErrorType { OT_INVALID_HTTP_STATUS = 'OT_INVALID_HTTP_STATUS', OT_CONNECT_FAILED = 'OT_CONNECT_FAILED', OT_INVALID_SESSION_ID = 'OT_INVALID_SESSION_ID', + OT_USER_MEDIA_ACCESS_DENIED = 'OT_USER_MEDIA_ACCESS_DENIED', CONNECT_FAILED = 'CONNECT_FAILED', CONNECT_REJECTED = 'CONNECT_REJECTED', CONNECTION_TIMEOUT = 'CONNECTION_TIMEOUT', diff --git a/src/NetworkTest/testConnectivity/errors/index.ts b/src/NetworkTest/testConnectivity/errors/index.ts index 49080927..a0f03d82 100644 --- a/src/NetworkTest/testConnectivity/errors/index.ts +++ b/src/NetworkTest/testConnectivity/errors/index.ts @@ -112,6 +112,12 @@ export class FailedToCreateLocalPublisher extends PublishToSessionError { } } +export class MediaPermissionsDeniedError extends PublishToSessionError { + constructor() { + super('Precall failed to publish because media permissions have been denied.', ErrorNames.MEDIA_PERMISSIONS_ERROR); + } +} + export class PublishToSessionNotConnectedError extends PublishToSessionError { constructor() { super('Precall failed to publish to the session because it was not connected.', diff --git a/src/NetworkTest/testConnectivity/index.ts b/src/NetworkTest/testConnectivity/index.ts index a192d8dd..f0e2b49d 100644 --- a/src/NetworkTest/testConnectivity/index.ts +++ b/src/NetworkTest/testConnectivity/index.ts @@ -184,6 +184,8 @@ function checkCreateLocalPublisher( const publisher = OT.initPublisher(publisherDiv, publisherOptions, (error?: OT.OTError) => { if (!error) { resolve({ publisher }); + } else if (errorHasName(error, OTErrorType.OT_USER_MEDIA_ACCESS_DENIED)) { + reject(new e.MediaPermissionsDeniedError()) } else { reject(new e.FailedToCreateLocalPublisher()); }