@webex/plugin-meetings 3.0.0-beta.145 → 3.0.0-beta.147

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/dist/annotation/annotation.types.js.map +1 -1
  2. package/dist/annotation/constants.js +6 -5
  3. package/dist/annotation/constants.js.map +1 -1
  4. package/dist/breakouts/breakout.js +1 -1
  5. package/dist/breakouts/index.js +1 -1
  6. package/dist/common/errors/webex-errors.js +3 -2
  7. package/dist/common/errors/webex-errors.js.map +1 -1
  8. package/dist/config.js +1 -7
  9. package/dist/config.js.map +1 -1
  10. package/dist/constants.js +7 -15
  11. package/dist/constants.js.map +1 -1
  12. package/dist/index.js +6 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/media/index.js +5 -56
  15. package/dist/media/index.js.map +1 -1
  16. package/dist/media/properties.js +15 -93
  17. package/dist/media/properties.js.map +1 -1
  18. package/dist/meeting/index.js +1106 -1876
  19. package/dist/meeting/index.js.map +1 -1
  20. package/dist/meeting/muteState.js +88 -184
  21. package/dist/meeting/muteState.js.map +1 -1
  22. package/dist/meeting/request.js +2 -2
  23. package/dist/meeting/request.js.map +1 -1
  24. package/dist/meeting/util.js +1 -23
  25. package/dist/meeting/util.js.map +1 -1
  26. package/dist/meetings/index.js +1 -2
  27. package/dist/meetings/index.js.map +1 -1
  28. package/dist/reconnection-manager/index.js +153 -134
  29. package/dist/reconnection-manager/index.js.map +1 -1
  30. package/dist/roap/index.js +8 -7
  31. package/dist/roap/index.js.map +1 -1
  32. package/dist/types/annotation/annotation.types.d.ts +9 -1
  33. package/dist/types/annotation/constants.d.ts +5 -5
  34. package/dist/types/common/errors/webex-errors.d.ts +1 -1
  35. package/dist/types/config.d.ts +0 -6
  36. package/dist/types/constants.d.ts +1 -18
  37. package/dist/types/index.d.ts +1 -1
  38. package/dist/types/media/properties.d.ts +16 -38
  39. package/dist/types/meeting/index.d.ts +92 -352
  40. package/dist/types/meeting/muteState.d.ts +36 -38
  41. package/dist/types/meeting/request.d.ts +2 -1
  42. package/dist/types/meeting/util.d.ts +2 -4
  43. package/package.json +19 -19
  44. package/src/annotation/annotation.types.ts +10 -1
  45. package/src/annotation/constants.ts +5 -5
  46. package/src/common/errors/webex-errors.ts +6 -2
  47. package/src/config.ts +0 -6
  48. package/src/constants.ts +1 -14
  49. package/src/index.ts +1 -0
  50. package/src/media/index.ts +10 -53
  51. package/src/media/properties.ts +32 -92
  52. package/src/meeting/index.ts +532 -1564
  53. package/src/meeting/muteState.ts +87 -178
  54. package/src/meeting/request.ts +4 -3
  55. package/src/meeting/util.ts +3 -24
  56. package/src/meetings/index.ts +0 -1
  57. package/src/reconnection-manager/index.ts +4 -9
  58. package/src/roap/index.ts +13 -14
  59. package/test/integration/spec/converged-space-meetings.js +59 -3
  60. package/test/integration/spec/journey.js +330 -256
  61. package/test/integration/spec/space-meeting.js +75 -3
  62. package/test/unit/spec/meeting/index.js +776 -1344
  63. package/test/unit/spec/meeting/muteState.js +238 -394
  64. package/test/unit/spec/meeting/request.js +4 -4
  65. package/test/unit/spec/meeting/utils.js +2 -9
  66. package/test/unit/spec/multistream/receiveSlot.ts +1 -1
  67. package/test/unit/spec/roap/index.ts +2 -2
  68. package/test/utils/integrationTestUtils.js +5 -23
@@ -4,6 +4,7 @@ import { LocalTrack, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack,
4
4
  import { StatsAnalyzer } from '../statsAnalyzer';
5
5
  import NetworkQualityMonitor from '../networkQualityMonitor';
6
6
  import Roap from '../roap/index';
7
+ import { type BundlePolicy } from '../media';
7
8
  import MediaProperties from '../media/properties';
8
9
  import ReconnectionManager from '../reconnection-manager';
9
10
  import MeetingRequest from './request';
@@ -11,18 +12,34 @@ import Members from '../members/index';
11
12
  import Transcription from '../transcription';
12
13
  import { ReceiveSlotManager } from '../multistream/receiveSlotManager';
13
14
  import { MediaRequestManager } from '../multistream/mediaRequestManager';
14
- import { RemoteMediaManager } from '../multistream/remoteMediaManager';
15
+ import { Configuration as RemoteMediaManagerConfiguration, RemoteMediaManager } from '../multistream/remoteMediaManager';
15
16
  import { ReactionServerType, SkinToneType } from '../reactions/reactions.type';
16
17
  import InMeetingActions from './in-meeting-actions';
17
18
  import RecordingController from '../recording-controller';
18
19
  import ControlsOptionsManager from '../controls-options-manager';
19
20
  import { LocusMediaRequest } from './locusMediaRequest';
21
+ import { AnnotationInfo } from '../annotation/annotation.types';
22
+ export type LocalTracks = {
23
+ microphone?: LocalMicrophoneTrack;
24
+ camera?: LocalCameraTrack;
25
+ screenShare?: {
26
+ audio?: LocalTrack;
27
+ video?: LocalDisplayTrack;
28
+ };
29
+ annotationInfo?: AnnotationInfo;
30
+ };
31
+ export type AddMediaOptions = {
32
+ localTracks?: LocalTracks;
33
+ audioEnabled?: boolean;
34
+ videoEnabled?: boolean;
35
+ receiveShare?: boolean;
36
+ remoteMediaManagerConfig?: RemoteMediaManagerConfiguration;
37
+ bundlePolicy?: BundlePolicy;
38
+ };
20
39
  export declare const MEDIA_UPDATE_TYPE: {
21
- ALL: string;
22
- AUDIO: string;
23
- VIDEO: string;
24
- SHARE: string;
40
+ TRANSCODED_MEDIA_CONNECTION: string;
25
41
  LAMBDA: string;
42
+ UPDATE_MEDIA: string;
26
43
  };
27
44
  /**
28
45
  * MediaDirection
@@ -35,15 +52,6 @@ export declare const MEDIA_UPDATE_TYPE: {
35
52
  * @property {boolean} receiveShare
36
53
  * @property {boolean} isSharing
37
54
  */
38
- /**
39
- * AudioVideo
40
- * @typedef {Object} AudioVideo
41
- * @property {Object} audio
42
- * @property {String} audio.deviceId
43
- * @property {Object} video
44
- * @property {String} video.deviceId
45
- * @property {String} video.localVideoQuality // [240p, 360p, 480p, 720p, 1080p]
46
- */
47
55
  /**
48
56
  * SharePreferences
49
57
  * @typedef {Object} SharePreferences
@@ -57,19 +65,11 @@ export declare const MEDIA_UPDATE_TYPE: {
57
65
  * @property {String} [pin]
58
66
  * @property {Boolean} [moderator]
59
67
  * @property {String|Object} [meetingQuality]
60
- * @property {String} [meetingQuality.local]
61
68
  * @property {String} [meetingQuality.remote]
62
69
  * @property {Boolean} [rejoin]
63
70
  * @property {Boolean} [enableMultistream]
64
71
  * @property {String} [correlationId]
65
72
  */
66
- /**
67
- * SendOptions
68
- * @typedef {Object} SendOptions
69
- * @property {Boolean} sendAudio
70
- * @property {Boolean} sendVideo
71
- * @property {Boolean} sendShare
72
- */
73
73
  /**
74
74
  * Recording
75
75
  * @typedef {Object} Recording
@@ -379,9 +379,11 @@ export default class Meeting extends StatelessWebexPlugin {
379
379
  state: any;
380
380
  localAudioTrackMuteStateHandler: (event: TrackMuteEvent) => void;
381
381
  localVideoTrackMuteStateHandler: (event: TrackMuteEvent) => void;
382
+ underlyingLocalTrackChangeHandler: () => void;
382
383
  roles: any[];
383
384
  environment: string;
384
385
  namespace: string;
386
+ annotationInfo: AnnotationInfo;
385
387
  /**
386
388
  * @param {Object} attrs
387
389
  * @param {Object} options
@@ -728,48 +730,6 @@ export default class Meeting extends StatelessWebexPlugin {
728
730
  * @memberof Meeting
729
731
  */
730
732
  getMembers(): Members;
731
- /**
732
- * Truthy when a meeting has an audio connection established
733
- * @returns {Boolean} true if meeting audio is connected otherwise false
734
- * @public
735
- * @memberof Meeting
736
- */
737
- isAudioConnected(): boolean;
738
- /**
739
- * Convenience function to tell whether a meeting is muted
740
- * @returns {Boolean} if meeting audio muted or not
741
- * @public
742
- * @memberof Meeting
743
- */
744
- isAudioMuted(): any;
745
- /**
746
- * Convenience function to tell if the end user last changed the audio state
747
- * @returns {Boolean} if audio was manipulated by the end user
748
- * @public
749
- * @memberof Meeting
750
- */
751
- isAudioSelf(): any;
752
- /**
753
- * Truthy when a meeting has a video connection established
754
- * @returns {Boolean} true if meeting video connected otherwise false
755
- * @public
756
- * @memberof Meeting
757
- */
758
- isVideoConnected(): boolean;
759
- /**
760
- * Convenience function to tell whether video is muted
761
- * @returns {Boolean} if meeting video is muted or not
762
- * @public
763
- * @memberof Meeting
764
- */
765
- isVideoMuted(): any;
766
- /**
767
- * Convenience function to tell whether the end user changed the video state
768
- * @returns {Boolean} if meeting video is muted or not
769
- * @public
770
- * @memberof Meeting
771
- */
772
- isVideoSelf(): any;
773
733
  /**
774
734
  * Sets the meeting info on the class instance
775
735
  * @param {Object} meetingInfo
@@ -828,15 +788,6 @@ export default class Meeting extends StatelessWebexPlugin {
828
788
  * @memberof Meeting
829
789
  */
830
790
  uploadLogs(options?: object): void;
831
- /**
832
- * Removes remote audio and video stream on the class instance and triggers an event
833
- * to developers
834
- * @returns {undefined}
835
- * @public
836
- * @memberof Meeting
837
- * @deprecated after v1.89.3
838
- */
839
- unsetRemoteStream(): void;
840
791
  /**
841
792
  * Removes remote audio, video and share tracks from class instance's mediaProperties
842
793
  * @returns {undefined}
@@ -859,76 +810,30 @@ export default class Meeting extends StatelessWebexPlugin {
859
810
  */
860
811
  closeRemoteTracks(): Promise<[any, any, any]>;
861
812
  /**
862
- * Emits the 'media:ready' event with a local stream that consists of 1 local audio and 1 local video track
863
- * @returns {undefined}
864
- * @private
865
- * @memberof Meeting
866
- */
867
- private sendLocalMediaReadyEvent;
868
- /**
869
- * Sets the local audio track on the class and emits an event to the developer
870
- * @param {MediaStreamTrack} rawAudioTrack
871
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
872
- * @returns {undefined}
873
- * @private
874
- * @memberof Meeting
813
+ * Stores the reference to a new microphone track, sets up the required event listeners
814
+ * on it, cleans up previous track, etc.
815
+ *
816
+ * @param {LocalMicrophoneTrack | null} localTrack local microphone track
817
+ * @returns {Promise<void>}
875
818
  */
876
819
  private setLocalAudioTrack;
877
820
  /**
878
- * Sets the local video track on the class and emits an event to the developer
879
- * @param {MediaStreamTrack} rawVideoTrack
880
- * @param {Boolean} emitEvent if true, a media ready event is emitted to the developer
881
- * @returns {undefined}
882
- * @private
883
- * @memberof Meeting
821
+ * Stores the reference to a new camera track, sets up the required event listeners
822
+ * on it, cleans up previous track, etc.
823
+ *
824
+ * @param {LocalCameraTrack | null} localTrack local camera track
825
+ * @returns {Promise<void>}
884
826
  */
885
827
  private setLocalVideoTrack;
886
828
  /**
887
- * Sets the local media stream on the class and emits an event to the developer
888
- * @param {Stream} localStream the local media stream
889
- * @returns {undefined}
890
- * @public
891
- * @memberof Meeting
892
- */
893
- setLocalTracks(localStream: any): void;
894
- /**
895
- * Sets the local media stream on the class and emits an event to the developer
896
- * @param {MediaStreamTrack} rawLocalShareTrack the local share media track
897
- * @returns {undefined}
898
- * @public
899
- * @memberof Meeting
900
- */
901
- setLocalShareTrack(rawLocalShareTrack: MediaStreamTrack | null): void;
902
- /**
903
- * Closes the local stream from the class and emits an event to the developer
904
- * @returns {undefined}
905
- * @event media:stopped
906
- * @public
907
- * @memberof Meeting
908
- */
909
- closeLocalStream(): any;
910
- /**
911
- * Closes the local stream from the class and emits an event to the developer
912
- * @returns {undefined}
913
- * @event media:stopped
914
- * @public
915
- * @memberof Meeting
916
- */
917
- closeLocalShare(): any;
918
- /**
919
- * Removes the local stream from the class and emits an event to the developer
920
- * @returns {undefined}
921
- * @public
922
- * @memberof Meeting
923
- */
924
- unsetLocalVideoTrack(): void;
925
- /**
926
- * Removes the local share from the class and emits an event to the developer
927
- * @returns {undefined}
928
- * @public
929
- * @memberof Meeting
829
+ * Stores the reference to a new screen share track, sets up the required event listeners
830
+ * on it, cleans up previous track, etc.
831
+ * It also sends the floor grant/release request.
832
+ *
833
+ * @param {LocalDisplayTrack | undefined} localDisplayTrack local camera track
834
+ * @returns {Promise<void>}
930
835
  */
931
- unsetLocalShareTrack(): void;
836
+ private setLocalShareTrack;
932
837
  /**
933
838
  * sets up listner for mercury event
934
839
  * @returns {undefined}
@@ -961,63 +866,25 @@ export default class Meeting extends StatelessWebexPlugin {
961
866
  * @memberof Meeting
962
867
  */
963
868
  private setCorrelationId;
964
- /**
965
- * Mute the audio for a meeting
966
- * @returns {Promise} resolves the data from muting audio {mute, self} or rejects if there is no audio set
967
- * @public
968
- * @memberof Meeting
969
- */
970
- muteAudio(): any;
971
- /**
972
- * Unmute meeting audio
973
- * @returns {Promise} resolves data from muting audio {mute, self} or rejects if there is no audio set
974
- * @public
975
- * @memberof Meeting
976
- */
977
- unmuteAudio(): any;
978
- /**
979
- * Mute the video for a meeting
980
- * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
981
- * @public
982
- * @memberof Meeting
983
- */
984
- muteVideo(): any;
985
- /**
986
- * Unmute meeting video
987
- * @returns {Promise} resolves data from muting video {mute, self} or rejects if there is no video set
988
- * @public
989
- * @memberof Meeting
990
- */
991
- unmuteVideo(): any;
992
869
  /**
993
870
  * Shorthand function to join AND set up media
994
871
  * @param {Object} options - options to join with media
995
872
  * @param {JoinOptions} [options.joinOptions] - see #join()
996
- * @param {MediaDirection} options.mediaSettings - see #addMedia()
997
- * @param {AudioVideo} [options.audioVideoOptions] - see #getMediaStreams()
998
- * @returns {Promise} -- {join: see join(), media: see addMedia(), local: see getMediaStreams()}
873
+ * @param {MediaDirection} [options.mediaOptions] - see #addMedia()
874
+ * @returns {Promise} -- {join: see join(), media: see addMedia()}
999
875
  * @public
1000
876
  * @memberof Meeting
1001
877
  * @example
1002
878
  * joinWithMedia({
1003
879
  * joinOptions: {resourceId: 'resourceId' },
1004
- * mediaSettings: {
1005
- * sendAudio: true,
1006
- * sendVideo: true,
1007
- * sendShare: false,
1008
- * receiveVideo:true,
1009
- * receiveAudio: true,
1010
- * receiveShare: true
1011
- * }
1012
- * audioVideoOptions: {
1013
- * audio: 'audioDeviceId',
1014
- * video: 'videoDeviceId'
1015
- * }})
880
+ * mediaOptions: {
881
+ * localTracks: { microphone: microphoneTrack, camera: cameraTrack }
882
+ * }
883
+ * })
1016
884
  */
1017
885
  joinWithMedia(options?: {
1018
886
  joinOptions?: any;
1019
- mediaSettings: any;
1020
- audioVideoOptions?: any;
887
+ mediaOptions?: AddMediaOptions;
1021
888
  }): any;
1022
889
  /**
1023
890
  * Initiates the reconnection of the media in the meeting
@@ -1146,38 +1013,6 @@ export default class Meeting extends StatelessWebexPlugin {
1146
1013
  * @memberof Meeting
1147
1014
  */
1148
1015
  moveFrom(resourceId: string): any;
1149
- /**
1150
- * Get local media streams based on options passed
1151
- *
1152
- * NOTE: this method can only be used with transcoded meetings, not with multistream meetings
1153
- *
1154
- * @param {MediaDirection} mediaDirection A configurable options object for joining a meeting
1155
- * @param {AudioVideo} [audioVideo] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1156
- * @param {SharePreferences} [sharePreferences] audio/video object to set audioinput and videoinput devices, see #Media.getUserMedia
1157
- * @returns {Promise} see #Media.getUserMedia
1158
- * @public
1159
- * @todo should be static, or moved so can be called outside of a meeting
1160
- * @memberof Meeting
1161
- */
1162
- getMediaStreams: (mediaDirection: any, audioVideo?: any, sharePreferences?: any) => any;
1163
- /**
1164
- * Checks if the machine has at least one audio or video device
1165
- * @param {Object} options
1166
- * @param {Boolean} options.sendAudio
1167
- * @param {Boolean} options.sendVideo
1168
- * @returns {Object}
1169
- * @memberof Meetings
1170
- */
1171
- getSupportedDevices: ({ sendAudio, sendVideo, }: {
1172
- sendAudio: boolean;
1173
- sendVideo: boolean;
1174
- }) => any;
1175
- /**
1176
- * Get the devices from the Media module
1177
- * @returns {Promise} resolves to an array of DeviceInfo
1178
- * @memberof Meetings
1179
- */
1180
- getDevices: () => any;
1181
1016
  /**
1182
1017
  * Handles ROAP_FAILURE event from the webrtc media connection
1183
1018
  *
@@ -1195,13 +1030,13 @@ export default class Meeting extends StatelessWebexPlugin {
1195
1030
  setupStatsAnalyzerEventHandlers: () => void;
1196
1031
  getMediaConnectionDebugId(): string;
1197
1032
  /**
1198
- * Creates a webrtc media connection
1033
+ * Creates a webrtc media connection and publishes tracks to it
1199
1034
  *
1200
1035
  * @param {Object} turnServerInfo TURN server information
1201
1036
  * @param {BundlePolicy} [bundlePolicy] Bundle policy settings
1202
1037
  * @returns {RoapMediaConnection | MultistreamRoapMediaConnection}
1203
1038
  */
1204
- createMediaConnection(turnServerInfo: any, bundlePolicy: any): any;
1039
+ private createMediaConnection;
1205
1040
  /**
1206
1041
  * Listens for an event emitted by eventEmitter and emits it from the meeting object
1207
1042
  *
@@ -1213,19 +1048,14 @@ export default class Meeting extends StatelessWebexPlugin {
1213
1048
  */
1214
1049
  forwardEvent(eventEmitter: any, eventTypeToForward: any, meetingEventType: any): void;
1215
1050
  /**
1216
- * Specify joining via audio (option: pstn), video, screenshare
1217
- * @param {Object} options A configurable options object for joining a meeting
1218
- * @param {Object} options.resourceId pass the deviceId
1219
- * @param {MediaDirection} options.mediaSettings pass media options
1220
- * @param {MediaStream} options.localStream
1221
- * @param {MediaStream} options.localShare
1222
- * @param {BundlePolicy} options.bundlePolicy bundle policy for multistream meetings
1223
- * @param {RemoteMediaManagerConfig} options.remoteMediaManagerConfig only applies if multistream is enabled
1051
+ * Creates a media connection to the server. Media connection is required for sending or receiving any audio/video.
1052
+ *
1053
+ * @param {AddMediaOptions} options
1224
1054
  * @returns {Promise}
1225
1055
  * @public
1226
1056
  * @memberof Meeting
1227
1057
  */
1228
- addMedia(options?: any): Promise<any>;
1058
+ addMedia(options?: AddMediaOptions): Promise<any>;
1229
1059
  /**
1230
1060
  * Informs if the peer connection is in a state that can be updated with updateMedia (audio/video/share)
1231
1061
  * @returns {Boolean}
@@ -1256,94 +1086,25 @@ export default class Meeting extends StatelessWebexPlugin {
1256
1086
  */
1257
1087
  processNextQueuedMediaUpdate: () => void;
1258
1088
  /**
1259
- * A confluence of updateAudio, updateVideo, and updateShare
1260
- * this function re-establishes all of the media streams with new options
1261
- * @param {Object} options
1262
- * @param {MediaStream} options.localStream
1263
- * @param {MediaStream} options.localShare
1264
- * @param {MediaDirection} options.mediaSettings
1265
- * @returns {Promise}
1266
- * @public
1267
- * @memberof Meeting
1268
- */
1269
- updateMedia(options?: {
1270
- localStream?: MediaStream;
1271
- localShare?: MediaStream;
1272
- mediaSettings?: any;
1273
- }): any;
1274
- /**
1275
- * Update the main audio track with new parameters
1276
- *
1277
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1278
- *
1279
- * @param {Object} options
1280
- * @param {boolean} options.sendAudio
1281
- * @param {boolean} options.receiveAudio
1282
- * @param {MediaStream} options.stream Stream that contains the audio track to update
1283
- * @returns {Promise}
1284
- * @public
1285
- * @memberof Meeting
1286
- */
1287
- updateAudio(options: {
1288
- sendAudio: boolean;
1289
- receiveAudio: boolean;
1290
- stream: MediaStream;
1291
- }): Promise<unknown>;
1292
- /**
1293
- * Update the main video track with new parameters
1294
- *
1295
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1089
+ * Updates the media connection - it allows to enable/disable all audio/video/share in the meeting.
1090
+ * This does not affect the published tracks, so for example if a microphone track is published and
1091
+ * updateMedia({audioEnabled: false}) is called, the audio will not be sent or received anymore,
1092
+ * but the track's "published" state is not changed and when updateMedia({audioEnabled: true}) is called,
1093
+ * the sending of the audio from the same track will resume.
1296
1094
  *
1297
1095
  * @param {Object} options
1298
- * @param {boolean} options.sendVideo
1299
- * @param {boolean} options.receiveVideo
1300
- * @param {MediaStream} options.stream Stream that contains the video track to update
1096
+ * @param {boolean} options.audioEnabled [optional] enables/disables receiving and sending of main audio in the meeting
1097
+ * @param {boolean} options.videoEnabled [optional] enables/disables receiving and sending of main video in the meeting
1098
+ * @param {boolean} options.shareEnabled [optional] enables/disables receiving and sending of screen share in the meeting
1301
1099
  * @returns {Promise}
1302
1100
  * @public
1303
1101
  * @memberof Meeting
1304
1102
  */
1305
- updateVideo(options: {
1306
- sendVideo: boolean;
1307
- receiveVideo: boolean;
1308
- stream: MediaStream;
1309
- }): Promise<unknown>;
1310
- /**
1311
- * Internal function when stopping a share stream, cleanup
1312
- * @param {boolean} sendShare
1313
- * @param {boolean} previousShareStatus
1314
- * @returns {Promise}
1315
- * @private
1316
- * @memberof Meeting
1317
- */
1318
- private checkForStopShare;
1319
- /**
1320
- * Update the share streams, can be used to start sharing
1321
- *
1322
- * NOTE: this method can only be used with transcoded meetings, for multistream meetings use publishTrack()
1323
- *
1324
- * @param {Object} options
1325
- * @param {boolean} options.sendShare
1326
- * @param {boolean} options.receiveShare
1327
- * @returns {Promise}
1328
- * @public
1329
- * @memberof Meeting
1330
- */
1331
- updateShare(options: {
1332
- sendShare?: boolean;
1103
+ updateMedia(options: {
1104
+ audioEnabled?: boolean;
1105
+ videoEnabled?: boolean;
1333
1106
  receiveShare?: boolean;
1334
- stream?: any;
1335
- skipSignalingCheck?: boolean;
1336
- }): Promise<unknown>;
1337
- /**
1338
- * Do all the attach media pre set up before executing the actual attach
1339
- * @param {MediaStream} localStream
1340
- * @param {MediaStream} localShare
1341
- * @param {MediaDirection} mediaSettings
1342
- * @returns {undefined}
1343
- * @private
1344
- * @memberof Meeting
1345
- */
1346
- private preMedia;
1107
+ }): Promise<void>;
1347
1108
  /**
1348
1109
  * Acknowledge the meeting, outgoing or incoming
1349
1110
  * @param {String} type
@@ -1401,12 +1162,12 @@ export default class Meeting extends StatelessWebexPlugin {
1401
1162
  */
1402
1163
  private requestScreenShareFloor;
1403
1164
  /**
1404
- * Stops the screen share
1405
- * @returns {Promise} see #updateShare
1406
- * @public
1407
- * @memberof Meeting
1165
+ * Requests screen share floor if such request is pending.
1166
+ * It should be called whenever meeting state changes to JOINED
1167
+ *
1168
+ * @returns {void}
1408
1169
  */
1409
- stopShare(options?: {}): Promise<unknown>;
1170
+ private requestScreenShareFloorIfPending;
1410
1171
  /**
1411
1172
  * Sends a request to Locus to release the screen share floor.
1412
1173
  * @returns {Promise} see #meetingRequest.changeMeetingFloor
@@ -1522,45 +1283,12 @@ export default class Meeting extends StatelessWebexPlugin {
1522
1283
  height: number;
1523
1284
  };
1524
1285
  }): any;
1525
- /**
1526
- * Sets the quality of the local video stream
1527
- * @param {String} level {LOW|MEDIUM|HIGH}
1528
- * @returns {Promise<MediaStream>} localStream
1529
- */
1530
- setLocalVideoQuality(level: string): any;
1531
1286
  /**
1532
1287
  * Sets the quality level of the remote incoming media
1533
1288
  * @param {String} level {LOW|MEDIUM|HIGH}
1534
1289
  * @returns {Promise}
1535
1290
  */
1536
- setRemoteQualityLevel(level: string): any;
1537
- /**
1538
- * This is deprecated, please use setLocalVideoQuality for setting local and setRemoteQualityLevel for remote
1539
- * @param {String} level {LOW|MEDIUM|HIGH}
1540
- * @returns {Promise}
1541
- * @deprecated After FHD support
1542
- */
1543
- setMeetingQuality(level: string): any;
1544
- /**
1545
- *
1546
- * NOTE: this method can only be used with transcoded meetings, for multistream use publishTrack()
1547
- *
1548
- * @param {Object} options parameter
1549
- * @param {Boolean} options.sendAudio send audio from the display share
1550
- * @param {Boolean} options.sendShare send video from the display share
1551
- * @param {Object} options.sharePreferences
1552
- * @param {MediaTrackConstraints} options.sharePreferences.shareConstraints constraints to apply to video
1553
- * @see {@link https://developer.mozilla.org/en-US/docs/Web/API/MediaTrackConstraints}
1554
- * @param {Boolean} options.sharePreferences.highFrameRate if shareConstraints isn't provided, set default values based off of this boolean
1555
- * @returns {Promise}
1556
- */
1557
- shareScreen(options?: {
1558
- sendAudio: boolean;
1559
- sendShare: boolean;
1560
- sharePreferences: {
1561
- shareConstraints: MediaTrackConstraints;
1562
- };
1563
- }): any;
1291
+ setRemoteQualityLevel(level: string): Promise<void>;
1564
1292
  /**
1565
1293
  * Functionality for when a share is ended.
1566
1294
  * @private
@@ -1738,20 +1466,32 @@ export default class Meeting extends StatelessWebexPlugin {
1738
1466
  * @returns {Promise}
1739
1467
  */
1740
1468
  enableMusicMode(shouldEnableMusicMode: boolean): Promise<void>;
1469
+ /** Updates the tracks being sent on the transcoded media connection
1470
+ *
1471
+ * @returns {Promise<void>}
1472
+ */
1473
+ private updateTranscodedMediaConnection;
1474
+ /**
1475
+ * Publishes a track.
1476
+ *
1477
+ * @param {LocalTrack} track to publish
1478
+ * @returns {Promise}
1479
+ */
1480
+ private publishTrack;
1481
+ /**
1482
+ * Un-publishes a track.
1483
+ *
1484
+ * @param {LocalTrack} track to unpublish
1485
+ * @returns {Promise}
1486
+ */
1487
+ private unpublishTrack;
1741
1488
  /**
1742
1489
  * Publishes specified local tracks in the meeting
1743
1490
  *
1744
1491
  * @param {Object} tracks
1745
1492
  * @returns {Promise}
1746
1493
  */
1747
- publishTracks(tracks: {
1748
- microphone?: LocalMicrophoneTrack;
1749
- camera?: LocalCameraTrack;
1750
- screenShare: {
1751
- audio?: LocalTrack;
1752
- video?: LocalDisplayTrack;
1753
- };
1754
- }): Promise<void>;
1494
+ publishTracks(tracks: LocalTracks): Promise<void>;
1755
1495
  /**
1756
1496
  * Un-publishes specified local tracks in the meeting
1757
1497
  *