@azure/communication-react 1.16.0-alpha-202404190012 → 1.16.0-alpha-202404200012

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 (180) hide show
  1. package/dist/communication-react.d.ts +145 -82
  2. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-WGqg2woK.js → ChatMessageComponentAsRichTextEditBox-DpYUiI1l.js} +3 -3
  3. package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-WGqg2woK.js.map → ChatMessageComponentAsRichTextEditBox-DpYUiI1l.js.map} +1 -1
  4. package/dist/dist-cjs/communication-react/{index-oaEwmItW.js → index-C2GfkUGz.js} +255 -365
  5. package/dist/dist-cjs/communication-react/index-C2GfkUGz.js.map +1 -0
  6. package/dist/dist-cjs/communication-react/index.js +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +0 -7
  10. package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
  11. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js +5 -32
  12. package/dist/dist-esm/calling-component-bindings/src/captionsSelector.js.map +1 -1
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +0 -8
  14. package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/index.js +0 -1
  16. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  17. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  18. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +22 -24
  19. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js +0 -2
  21. package/dist/dist-esm/calling-stateful-client/src/CallDeclarativeCommon.js.map +1 -1
  22. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js +0 -4
  23. package/dist/dist-esm/calling-stateful-client/src/CallSubscriber.js.map +1 -1
  24. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.d.ts +0 -1
  25. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.js +0 -1
  26. package/dist/dist-esm/calling-stateful-client/src/CaptionsSubscriber.js.map +1 -1
  27. package/dist/dist-esm/calling-stateful-client/src/Converter.js +0 -2
  28. package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
  29. package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
  30. package/dist/dist-esm/chat-stateful-client/src/ChatClientState.d.ts +1 -1
  31. package/dist/dist-esm/chat-stateful-client/src/ChatClientState.js.map +1 -1
  32. package/dist/dist-esm/communication-react/src/index.d.ts +2 -2
  33. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/AttachmentCard.d.ts +2 -2
  35. package/dist/dist-esm/react-components/src/components/AttachmentCard.js +2 -2
  36. package/dist/dist-esm/react-components/src/components/AttachmentCard.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.d.ts +3 -4
  38. package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js +2 -2
  39. package/dist/dist-esm/react-components/src/components/AttachmentUploadCards.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js +4 -4
  41. package/dist/dist-esm/react-components/src/components/ChatMessage/MessageComponents/ChatMessageComponentAsMessageBubble.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js +1 -1
  43. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBox.js.map +1 -1
  44. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +1 -1
  45. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
  46. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js +1 -1
  47. package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponentAsMessageBubble.js.map +1 -1
  48. package/dist/dist-esm/react-components/src/components/LocalVideoTile.d.ts +1 -0
  49. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js +2 -2
  50. package/dist/dist-esm/react-components/src/components/LocalVideoTile.js.map +1 -1
  51. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.d.ts +1 -0
  52. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js +1 -1
  53. package/dist/dist-esm/react-components/src/components/RemoteVideoTile.js.map +1 -1
  54. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +11 -4
  55. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +4 -4
  57. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +20 -13
  58. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
  59. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.d.ts +1 -1
  60. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js +4 -4
  61. package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBoxErrors.js.map +1 -1
  62. package/dist/dist-esm/react-components/src/components/SendBox.d.ts +4 -4
  63. package/dist/dist-esm/react-components/src/components/SendBox.js +20 -14
  64. package/dist/dist-esm/react-components/src/components/SendBox.js.map +1 -1
  65. package/dist/dist-esm/react-components/src/components/SendBoxErrors.d.ts +1 -1
  66. package/dist/dist-esm/react-components/src/components/SendBoxErrors.js +6 -6
  67. package/dist/dist-esm/react-components/src/components/SendBoxErrors.js.map +1 -1
  68. package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js +0 -4
  69. package/dist/dist-esm/react-components/src/components/StartCaptionsButton.js.map +1 -1
  70. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +15 -0
  71. package/dist/dist-esm/react-components/src/components/VideoGallery.js +7 -5
  72. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  73. package/dist/dist-esm/react-components/src/components/VideoTile.d.ts +5 -0
  74. package/dist/dist-esm/react-components/src/components/VideoTile.js +7 -5
  75. package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
  76. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -2
  77. package/dist/dist-esm/react-components/src/components/index.js +0 -4
  78. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  79. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +1 -1
  80. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +4 -1
  81. package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
  82. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.d.ts +0 -4
  83. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js +0 -7
  84. package/dist/dist-esm/react-components/src/components/styles/VideoTile.styles.js.map +1 -1
  85. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +3 -3
  86. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +6 -6
  87. package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
  88. package/dist/dist-esm/react-components/src/index.js +0 -1
  89. package/dist/dist-esm/react-components/src/index.js.map +1 -1
  90. package/dist/dist-esm/react-components/src/theming/icons.js +0 -6
  91. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  92. package/dist/dist-esm/react-components/src/theming/themes.d.ts +1 -0
  93. package/dist/dist-esm/react-components/src/theming/themes.js +4 -2
  94. package/dist/dist-esm/react-components/src/theming/themes.js.map +1 -1
  95. package/dist/dist-esm/react-components/src/types/Attachment.d.ts +48 -24
  96. package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
  97. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +5 -0
  98. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  99. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  100. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +4 -19
  101. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  102. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  103. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/OnFetchProfileCallback.d.ts +4 -4
  104. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/OnFetchProfileCallback.js.map +1 -1
  105. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/index.js.map +1 -1
  106. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +5 -23
  107. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  108. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +2 -0
  109. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +4 -3
  110. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  111. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +0 -4
  112. package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
  113. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +2 -1
  114. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  115. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +1 -1
  116. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
  117. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +0 -7
  118. package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
  119. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/Strings.js.map +1 -1
  120. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +5 -3
  121. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +20 -18
  122. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  123. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +17 -11
  124. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  125. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +0 -4
  126. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  127. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +4 -3
  128. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +5 -1
  129. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
  130. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.d.ts +4 -4
  131. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js +2 -2
  132. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/state/CallWithChatAdapterState.js.map +1 -1
  133. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +11 -7
  134. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  135. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationAttachmentUploadAdapter.d.ts +14 -13
  136. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationAttachmentUploadAdapter.js +30 -21
  137. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationAttachmentUploadAdapter.js.map +1 -1
  138. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +5 -3
  139. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +26 -2
  140. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
  141. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +10 -5
  142. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
  143. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.d.ts +2 -2
  144. package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapterProvider.js.map +1 -1
  145. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.d.ts +10 -10
  146. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js +7 -7
  147. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +1 -1
  148. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js +1 -1
  149. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUploadButton.js.map +1 -1
  150. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.d.ts +1 -1
  151. package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/index.js.map +1 -1
  152. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.d.ts +2 -2
  153. package/dist/dist-esm/react-composites/src/composites/ChatComposite/index.js.map +1 -1
  154. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/attachmentUploadsSelector.d.ts +5 -5
  155. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.d.ts +2 -2
  156. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js +1 -1
  157. package/dist/dist-esm/react-composites/src/composites/ChatComposite/selectors/baseSelectors.js.map +1 -1
  158. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js +2 -27
  159. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBanner.js.map +1 -1
  160. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js +0 -20
  161. package/dist/dist-esm/react-composites/src/composites/common/CaptionsBannerMoreButton.js.map +1 -1
  162. package/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.js +0 -13
  163. package/dist/dist-esm/react-composites/src/composites/common/CaptionsSettingsModal.js.map +1 -1
  164. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +4 -15
  165. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
  166. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +1 -17
  167. package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
  168. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionLanguageSettingsDrawer.js +0 -9
  169. package/dist/dist-esm/react-composites/src/composites/common/Drawer/CaptionLanguageSettingsDrawer.js.map +1 -1
  170. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +0 -23
  171. package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
  172. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js +0 -3
  173. package/dist/dist-esm/react-composites/src/composites/common/Drawer/PreparedMoreDrawer.js.map +1 -1
  174. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageSettingsDrawer.js +0 -9
  175. package/dist/dist-esm/react-composites/src/composites/common/Drawer/SpokenLanguageSettingsDrawer.js.map +1 -1
  176. package/package.json +3 -3
  177. package/dist/dist-cjs/communication-react/index-oaEwmItW.js.map +0 -1
  178. package/dist/dist-esm/react-components/src/components/utils/videoTileStylesUtils.d.ts +0 -6
  179. package/dist/dist-esm/react-components/src/components/utils/videoTileStylesUtils.js +0 -11
  180. package/dist/dist-esm/react-components/src/components/utils/videoTileStylesUtils.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"CallContext.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/CallContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommunicationIdentifierKind } from '@azure/communication-common';\nimport {\n AudioDeviceInfo,\n DeviceAccess,\n DominantSpeakersInfo,\n ParticipantRole,\n ScalingMode,\n VideoDeviceInfo\n} from '@azure/communication-calling';\nimport { RaisedHand } from '@azure/communication-calling';\n\nimport { CapabilitiesChangeInfo, ParticipantCapabilities } from '@azure/communication-calling';\n/* @conditional-compile-remove(close-captions) */\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { CaptionsKind, CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { EnvironmentInfo } from '@azure/communication-calling';\nimport { AzureLogger, createClientLogger, getLogLevel } from '@azure/logger';\nimport EventEmitter from 'events';\nimport { enableMapSet, enablePatches, Patch, produce } from 'immer';\nimport {\n CallEndReason,\n CallState as CallStatus,\n RemoteParticipantState as RemoteParticipantStatus\n} from '@azure/communication-calling';\nimport { _safeJSONStringify, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n CallState,\n CallClientState,\n LocalVideoStreamState,\n RemoteParticipantState,\n RemoteVideoStreamState,\n IncomingCallState,\n VideoStreamRendererViewState,\n CallAgentState,\n CallErrors,\n CallErrorTarget,\n CallError\n} from './CallClientState';\n/* @conditional-compile-remove(close-captions) */\nimport { CaptionsInfo } from './CallClientState';\nimport { ReactionState } from './CallClientState';\nimport { AcceptedTransfer } from './CallClientState';\nimport { callingStatefulLogger } from './Logger';\nimport { CallIdHistory } from './CallIdHistory';\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\n/* @conditional-compile-remove(close-captions) */\nimport { convertFromTeamsSDKToCaptionInfoState } from './Converter';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { convertFromSDKToCaptionInfoState } from './Converter';\nimport { convertFromSDKToRaisedHandState } from './Converter';\nimport { ReactionMessage } from '@azure/communication-calling';\n/* @conditional-compile-remove(spotlight) */\nimport { SpotlightedParticipant } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { LocalRecordingInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { RecordingInfo } from '@azure/communication-calling';\n\nenableMapSet();\n// Needed to generate state diff for verbose logging.\nenablePatches();\n\n// TODO: How can we make this configurable?\n/**\n * @private\n */\nexport const MAX_CALL_HISTORY_LENGTH = 10;\n/**\n * @private\n */\nexport const REACTION_ANIMATION_TIME_MS = 4133;\n\n/**\n * @private\n */\nexport class CallContext {\n private _logger: AzureLogger;\n private _state: CallClientState;\n private _emitter: EventEmitter;\n private _atomicId: number;\n private _callIdHistory: CallIdHistory = new CallIdHistory();\n private _timeOutId: { [key: string]: NodeJS.Timeout } = {};\n\n constructor(\n userId: CommunicationIdentifierKind,\n maxListeners = 50,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId?: string\n ) {\n this._logger = createClientLogger('communication-react:calling-context');\n this._state = {\n calls: {},\n callsEnded: {},\n incomingCalls: {},\n incomingCallsEnded: {},\n deviceManager: {\n isSpeakerSelectionAvailable: false,\n cameras: [],\n microphones: [],\n speakers: [],\n unparentedViews: []\n },\n callAgent: undefined,\n userId: userId,\n /* @conditional-compile-remove(unsupported-browser) */ environmentInfo: undefined,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId: alternateCallerId,\n latestErrors: {} as CallErrors\n };\n this._emitter = new EventEmitter();\n this._emitter.setMaxListeners(maxListeners);\n this._atomicId = 0;\n }\n\n public getState(): CallClientState {\n return this._state;\n }\n\n public modifyState(modifier: (draft: CallClientState) => void): void {\n const priorState = this._state;\n this._state = produce(this._state, modifier, (patches: Patch[]) => {\n if (getLogLevel() === 'verbose') {\n // Log to `info` because AzureLogger.verbose() doesn't show up in console.\n this._logger.info(`State change: ${_safeJSONStringify(patches)}`);\n }\n });\n if (this._state !== priorState) {\n this._emitter.emit('stateChanged', this._state);\n }\n }\n\n public onStateChange(handler: (state: CallClientState) => void): void {\n this._emitter.on('stateChanged', handler);\n }\n\n public offStateChange(handler: (state: CallClientState) => void): void {\n this._emitter.off('stateChanged', handler);\n }\n\n // Disposing of the CallAgentDeclarative will not clear the state. If we create a new CallAgentDeclarative, we should\n // make sure the state is clean because any left over state (if previous CallAgentDeclarative was disposed) may be\n // invalid.\n public clearCallRelatedState(): void {\n this.modifyState((draft: CallClientState) => {\n draft.calls = {};\n draft.incomingCalls = {};\n draft.callsEnded = {};\n draft.incomingCallsEnded = {};\n });\n }\n\n public setCallAgent(callAgent: CallAgentState): void {\n this.modifyState((draft: CallClientState) => {\n draft.callAgent = callAgent;\n });\n }\n\n public setCall(call: CallState): void {\n this.modifyState((draft: CallClientState) => {\n const latestCallId = this._callIdHistory.latestCallId(call.id);\n const existingCall = draft.calls[latestCallId];\n if (existingCall) {\n existingCall.callerInfo = call.callerInfo;\n existingCall.state = call.state;\n existingCall.callEndReason = call.callEndReason;\n existingCall.direction = call.direction;\n existingCall.isMuted = call.isMuted;\n existingCall.isScreenSharingOn = call.isScreenSharingOn;\n existingCall.localVideoStreams = call.localVideoStreams;\n existingCall.remoteParticipants = call.remoteParticipants;\n existingCall.transcription.isTranscriptionActive = call.transcription.isTranscriptionActive;\n existingCall.optimalVideoCount.maxRemoteVideoStreams = call.optimalVideoCount.maxRemoteVideoStreams;\n existingCall.recording.isRecordingActive = call.recording.isRecordingActive;\n existingCall.raiseHand.raisedHands = call.raiseHand.raisedHands;\n /* @conditional-compile-remove(ppt-live) */\n existingCall.pptLive.isActive = call.pptLive.isActive;\n existingCall.raiseHand.localParticipantRaisedHand = call.raiseHand.localParticipantRaisedHand;\n existingCall.role = call.role;\n /* @conditional-compile-remove(total-participant-count) */\n existingCall.totalParticipantCount = call.totalParticipantCount;\n // We don't update the startTime and endTime if we are updating an existing active call\n /* @conditional-compile-remove(close-captions) */\n existingCall.captionsFeature.currentSpokenLanguage = call.captionsFeature.currentSpokenLanguage;\n /* @conditional-compile-remove(close-captions) */\n existingCall.captionsFeature.currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n /* @conditional-compile-remove(meeting-id) */\n existingCall.info = call.info;\n } else {\n draft.calls[latestCallId] = call;\n }\n });\n }\n\n public removeCall(callId: string): void {\n this.modifyState((draft: CallClientState) => {\n delete draft.calls[this._callIdHistory.latestCallId(callId)];\n });\n }\n\n public setCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n const latestCallId = this._callIdHistory.latestCallId(callId);\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[latestCallId];\n if (call) {\n call.endTime = new Date();\n call.callEndReason = callEndReason;\n delete draft.calls[latestCallId];\n // Performance note: This loop should run only once because the number of entries\n // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n while (Object.keys(draft.callsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n delete draft.callsEnded[findOldestCallEnded(draft.callsEnded)];\n }\n draft.callsEnded[latestCallId] = call;\n }\n });\n }\n\n public setCallState(callId: string, state: CallStatus): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.state = state;\n }\n });\n }\n\n public setCallId(newCallId: string, oldCallId: string): void {\n this._callIdHistory.updateCallIdHistory(newCallId, oldCallId);\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[oldCallId];\n if (call) {\n call.id = newCallId;\n delete draft.calls[oldCallId];\n draft.calls[newCallId] = call;\n }\n });\n }\n\n /* @conditional-compile-remove(unsupported-browser) */\n public setEnvironmentInfo(envInfo: EnvironmentInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.environmentInfo = envInfo;\n });\n }\n\n public setCallIsScreenSharingOn(callId: string, isScreenSharingOn: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.isScreenSharingOn = isScreenSharingOn;\n }\n });\n }\n\n public setCallRemoteParticipants(\n callId: string,\n addRemoteParticipant: RemoteParticipantState[],\n removeRemoteParticipant: string[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n removeRemoteParticipant.forEach((id: string) => {\n delete call.remoteParticipants[id];\n });\n addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n call.remoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n });\n // TODO: need to remove after contentSharingRole avaible in WebCalling SDK.\n /* @conditional-compile-remove(ppt-live) */\n if (!call.contentSharingRemoteParticipant) {\n call.contentSharingRemoteParticipant = toFlatCommunicationIdentifier(addRemoteParticipant[0].identifier);\n }\n }\n });\n }\n\n public setCallRemoteParticipantsEnded(\n callId: string,\n addRemoteParticipant: RemoteParticipantState[],\n removeRemoteParticipant: string[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n removeRemoteParticipant.forEach((id: string) => {\n delete call.remoteParticipantsEnded[id];\n });\n addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n call.remoteParticipantsEnded[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n });\n }\n });\n }\n\n public setCallLocalVideoStream(\n callId: string,\n streamsAdded: LocalVideoStreamState[],\n streamsRemoved: LocalVideoStreamState[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n for (const removedStream of streamsRemoved) {\n const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === removedStream.mediaStreamType);\n if (index > -1) {\n call.localVideoStreams.splice(index, 1);\n }\n }\n\n for (const addedStream of streamsAdded) {\n const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === addedStream.mediaStreamType);\n if (index > -1) {\n call.localVideoStreams[index] = addedStream;\n } else {\n call.localVideoStreams.push(addedStream);\n }\n }\n }\n });\n }\n\n public setCallLocalVideoStreamVideoEffects(callId: string, videoEffects: LocalVideoStreamVideoEffectsState): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const stream = call.localVideoStreams?.find((i) => i.mediaStreamType === 'Video');\n if (stream) {\n stream.videoEffects = videoEffects;\n }\n }\n });\n }\n\n public setCallIsMicrophoneMuted(callId: string, isMicrophoneMuted: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.isMuted = isMicrophoneMuted;\n }\n });\n }\n\n public setRole(callId: string, role: ParticipantRole): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.role = role;\n }\n });\n }\n\n /* @conditional-compile-remove(total-participant-count) */\n public setTotalParticipantCount(callId: string, totalParticipantCount: number): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.totalParticipantCount = totalParticipantCount;\n }\n });\n }\n\n public setCallDominantSpeakers(callId: string, dominantSpeakers: DominantSpeakersInfo): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.dominantSpeakers = dominantSpeakers;\n }\n });\n }\n\n public setCallRecordingActive(callId: string, isRecordingActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.recording.isRecordingActive = isRecordingActive;\n }\n });\n }\n\n /* @conditional-compile-remove(local-recording-notification) */\n public setCallRecordingInfos(\n callId: string,\n recordingInfosAdded: RecordingInfo[],\n lastStoppedRecording: RecordingInfo[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.recording.activeRecordings = recordingInfosAdded;\n call.recording.lastStoppedRecording = lastStoppedRecording;\n }\n });\n }\n\n /* @conditional-compile-remove(local-recording-notification) */\n public setCallLocalRecordingActive(callId: string, isRecordingActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.localRecording.isLocalRecordingActive = isRecordingActive;\n }\n });\n }\n\n /* @conditional-compile-remove(local-recording-notification) */\n public setCallLocalRecordingInfos(\n callId: string,\n localRecordingInfosAdded: LocalRecordingInfo[],\n lastStoppedRecording: LocalRecordingInfo[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.localRecording.activeLocalRecordings = localRecordingInfosAdded;\n call.localRecording.lastStoppedLocalRecording = lastStoppedRecording;\n }\n });\n }\n\n /* @conditional-compile-remove(ppt-live) */\n public setCallPPTLiveActive(callId: string, isActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.pptLive.isActive = isActive;\n }\n });\n }\n\n /* @conditional-compile-remove(ppt-live) */\n public setCallParticipantPPTLive(callId: string, target: HTMLElement | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n const participantKey = call.contentSharingRemoteParticipant;\n if (call && participantKey) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.contentSharingStream = target;\n }\n }\n });\n }\n\n public setCallRaisedHands(callId: string, raisedHands: RaisedHand[]): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.raiseHand.raisedHands = raisedHands.map((raisedHand) => {\n return convertFromSDKToRaisedHandState(raisedHand);\n });\n const raisedHand = raisedHands.find(\n (raisedHand) =>\n toFlatCommunicationIdentifier(raisedHand.identifier) === toFlatCommunicationIdentifier(this._state.userId)\n );\n if (raisedHand) {\n call.raiseHand.localParticipantRaisedHand = convertFromSDKToRaisedHandState(raisedHand);\n } else {\n call.raiseHand.localParticipantRaisedHand = undefined;\n }\n }\n });\n }\n\n public setParticipantIsRaisedHand(callId: string, participantKey: string, raisedHand: RaisedHand | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.raisedHand = raisedHand ? convertFromSDKToRaisedHandState(raisedHand) : raisedHand;\n }\n }\n });\n }\n\n public setReceivedReactionFromParticipant(\n callId: string,\n participantKey: string,\n reactionMessage: ReactionMessage | null\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n\n if (!call) {\n return;\n }\n\n clearTimeout(this._timeOutId[participantKey]);\n\n const participant = call.remoteParticipants[participantKey];\n const newReactionState: ReactionState | undefined = reactionMessage\n ? { reactionMessage: reactionMessage, receivedOn: new Date() }\n : undefined;\n\n if (participantKey === toFlatCommunicationIdentifier(this._state.userId)) {\n call.localParticipantReaction = newReactionState;\n } else {\n participant.reactionState = newReactionState;\n }\n\n if (reactionMessage) {\n this._timeOutId[participantKey] = setTimeout(() => {\n clearParticipantReactionState(this, callId, participantKey);\n }, REACTION_ANIMATION_TIME_MS);\n }\n });\n }\n\n public setCallTranscriptionActive(callId: string, isTranscriptionActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.transcription.isTranscriptionActive = isTranscriptionActive;\n }\n });\n }\n\n public setCapabilities(\n callId: string,\n capabilities: ParticipantCapabilities,\n capabilitiesChangeInfo: CapabilitiesChangeInfo\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.capabilitiesFeature = { capabilities, latestCapabilitiesChangeInfo: capabilitiesChangeInfo };\n }\n });\n }\n\n /* @conditional-compile-remove(spotlight) */\n public setSpotlight(\n callId: string,\n spotlightedParticipants: SpotlightedParticipant[],\n maxParticipantsToSpotlight: number\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.spotlight = { ...call.spotlight, spotlightedParticipants, maxParticipantsToSpotlight };\n }\n });\n }\n\n /* @conditional-compile-remove(spotlight) */\n public setParticipantSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n if (participant) {\n participant.spotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n } else if (\n call.spotlight &&\n toFlatCommunicationIdentifier(draft.userId) ===\n toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n ) {\n call.spotlight.localParticipantSpotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n }\n }\n });\n }\n\n /* @conditional-compile-remove(spotlight) */\n public setParticipantNotSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n if (participant) {\n participant.spotlight = undefined;\n } else if (\n call.spotlight &&\n toFlatCommunicationIdentifier(draft.userId) ===\n toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n ) {\n call.spotlight.localParticipantSpotlight = undefined;\n }\n }\n });\n }\n\n public setCallScreenShareParticipant(callId: string, participantKey: string | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.screenShareRemoteParticipant = participantKey;\n }\n });\n }\n\n public setLocalVideoStreamRendererView(\n callId: string,\n localVideoMediaStreamType: string,\n view: VideoStreamRendererViewState | undefined\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const localVideoStream = call.localVideoStreams.find(\n (localVideoStream) => localVideoStream.mediaStreamType === localVideoMediaStreamType\n );\n if (localVideoStream) {\n localVideoStream.view = view;\n }\n }\n });\n }\n\n public setParticipantState(callId: string, participantKey: string, state: RemoteParticipantStatus): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.state = state;\n }\n }\n });\n }\n\n public setParticipantIsMuted(callId: string, participantKey: string, muted: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.isMuted = muted;\n }\n }\n });\n }\n\n public setOptimalVideoCount(callId: string, optimalVideoCount: number): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.optimalVideoCount.maxRemoteVideoStreams = optimalVideoCount;\n }\n });\n }\n\n public setParticipantRole(callId: string, participantKey: string, role: ParticipantRole): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.role = role;\n }\n }\n });\n }\n\n public setParticipantDisplayName(callId: string, participantKey: string, displayName: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.displayName = displayName;\n }\n }\n });\n }\n\n public setParticipantIsSpeaking(callId: string, participantKey: string, isSpeaking: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.isSpeaking = isSpeaking;\n }\n }\n });\n }\n\n public setParticipantVideoStream(callId: string, participantKey: string, stream: RemoteVideoStreamState): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n // Set is called by subscriber will not modify any rendered stream so if there is existing stream only\n // modify the values that subscriber has access to.\n const existingStream = participant.videoStreams[stream.id];\n if (existingStream) {\n existingStream.isAvailable = stream.isAvailable;\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n existingStream.isReceiving = stream.isReceiving;\n existingStream.mediaStreamType = stream.mediaStreamType;\n } else {\n participant.videoStreams[stream.id] = stream;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamIsAvailable(\n callId: string,\n participantKey: string,\n streamId: number,\n isAvailable: boolean\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.isAvailable = isAvailable;\n }\n }\n }\n });\n }\n\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n public setRemoteVideoStreamIsReceiving(\n callId: string,\n participantKey: string,\n streamId: number,\n isReceiving: boolean\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.isReceiving = isReceiving;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamSize(\n callId: string,\n participantKey: string,\n streamId: number,\n size: { width: number; height: number }\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.streamSize = size;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreams(\n callId: string,\n participantKey: string,\n addRemoteVideoStream: RemoteVideoStreamState[],\n removeRemoteVideoStream: number[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n for (const id of removeRemoteVideoStream) {\n delete participant.videoStreams[id];\n }\n\n for (const newStream of addRemoteVideoStream) {\n // This should only be called by the subscriber and some properties are add by other components so if the\n // stream already exists, only update the values that subscriber knows about.\n const stream = participant.videoStreams[newStream.id];\n if (stream) {\n stream.mediaStreamType = newStream.mediaStreamType;\n stream.isAvailable = newStream.isAvailable;\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n stream.isReceiving = newStream.isReceiving;\n } else {\n participant.videoStreams[newStream.id] = newStream;\n }\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamRendererView(\n callId: string,\n participantKey: string,\n streamId: number,\n view: VideoStreamRendererViewState | undefined\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.view = view;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamViewScalingMode(\n callId: string,\n participantKey: string,\n streamId: number,\n scalingMode: ScalingMode\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream && stream.view) {\n stream.view.scalingMode = scalingMode;\n }\n }\n }\n });\n }\n\n public setIncomingCall(call: IncomingCallState): void {\n this.modifyState((draft: CallClientState) => {\n const existingCall = draft.incomingCalls[call.id];\n if (existingCall) {\n existingCall.callerInfo = call.callerInfo;\n } else {\n draft.incomingCalls[call.id] = call;\n }\n });\n }\n\n public removeIncomingCall(callId: string): void {\n this.modifyState((draft: CallClientState) => {\n delete draft.incomingCalls[callId];\n });\n }\n\n public setIncomingCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.incomingCalls[callId];\n if (call) {\n call.endTime = new Date();\n call.callEndReason = callEndReason;\n delete draft.incomingCalls[callId];\n // Performance note: This loop should run only once because the number of entries\n // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n while (Object.keys(draft.incomingCallsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n delete draft.incomingCallsEnded[findOldestCallEnded(draft.incomingCallsEnded)];\n }\n draft.incomingCallsEnded[callId] = call;\n }\n });\n }\n\n public setDeviceManagerIsSpeakerSelectionAvailable(isSpeakerSelectionAvailable: boolean): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.isSpeakerSelectionAvailable = isSpeakerSelectionAvailable;\n });\n }\n\n public setDeviceManagerSelectedMicrophone(selectedMicrophone?: AudioDeviceInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.selectedMicrophone = selectedMicrophone;\n });\n }\n\n public setDeviceManagerSelectedSpeaker(selectedSpeaker?: AudioDeviceInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.selectedSpeaker = selectedSpeaker;\n });\n }\n\n public setDeviceManagerSelectedCamera(selectedCamera?: VideoDeviceInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.selectedCamera = selectedCamera;\n });\n }\n\n public setDeviceManagerCameras(cameras: VideoDeviceInfo[]): void {\n this.modifyState((draft: CallClientState) => {\n /**\n * SDK initializes cameras with one dummy camera with value { id: 'camera:id', name: '', deviceType: 'USBCamera' } immediately after\n * camera permissions are granted. So selectedCamera will have this value before the actual cameras are obtained. Therefore we should reset\n * selectedCamera to the first camera when there are cameras AND when current selectedCamera does not exist in the new array of cameras *\n */\n if (cameras.length > 0 && !cameras.some((camera) => camera.id === draft.deviceManager.selectedCamera?.id)) {\n draft.deviceManager.selectedCamera = cameras[0];\n }\n draft.deviceManager.cameras = cameras;\n });\n }\n\n public setDeviceManagerMicrophones(microphones: AudioDeviceInfo[]): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.microphones = microphones;\n });\n }\n\n public setDeviceManagerSpeakers(speakers: AudioDeviceInfo[]): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.speakers = speakers;\n });\n }\n\n public setDeviceManagerDeviceAccess(deviceAccess: DeviceAccess): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.deviceAccess = deviceAccess;\n });\n }\n\n public setDeviceManagerUnparentedView(\n localVideoStream: LocalVideoStreamState,\n view: VideoStreamRendererViewState | undefined\n ): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.unparentedViews.push({\n source: localVideoStream.source,\n mediaStreamType: localVideoStream.mediaStreamType,\n view: view\n });\n });\n }\n\n public deleteDeviceManagerUnparentedView(localVideoStream: LocalVideoStreamState): void {\n this.modifyState((draft: CallClientState) => {\n const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n );\n if (foundIndex !== -1) {\n draft.deviceManager.unparentedViews.splice(foundIndex, 1);\n }\n });\n }\n\n public setDeviceManagerUnparentedViewVideoEffects(\n localVideoStream: LocalVideoStreamState,\n videoEffects: LocalVideoStreamVideoEffectsState\n ): void {\n this.modifyState((draft: CallClientState) => {\n const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n );\n if (foundIndex !== -1) {\n draft.deviceManager.unparentedViews[foundIndex].videoEffects = videoEffects;\n }\n });\n }\n\n public getAndIncrementAtomicId(): number {\n const id = this._atomicId;\n this._atomicId++;\n return id;\n }\n /* @conditional-compile-remove(close-captions) */\n private processNewCaption(captions: CaptionsInfo[], newCaption: CaptionsInfo): void {\n // going through current captions to find the last caption said by the same speaker, remove that caption if it's partial and replace with the new caption\n for (let index = captions.length - 1; index >= 0; index--) {\n const currentCaption = captions[index];\n if (\n currentCaption &&\n currentCaption.resultType !== 'Final' &&\n currentCaption.speaker.identifier &&\n newCaption.speaker.identifier &&\n toFlatCommunicationIdentifier(currentCaption.speaker.identifier) ===\n toFlatCommunicationIdentifier(newCaption.speaker.identifier)\n ) {\n captions.splice(index, 1);\n break;\n }\n }\n\n captions.push(newCaption);\n\n // If the array length exceeds 50, remove the oldest caption\n if (captions.length > 50) {\n captions.shift();\n }\n }\n /* @conditional-compile-remove(close-captions) */\n public addTeamsCaption(callId: string, caption: TeamsCaptionsInfo): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n if (\n caption.captionLanguage.toUpperCase() === currentCaptionLanguage.toUpperCase() ||\n currentCaptionLanguage === '' ||\n currentCaptionLanguage === undefined\n ) {\n this.processNewCaption(call.captionsFeature.captions, convertFromTeamsSDKToCaptionInfoState(caption));\n }\n }\n });\n }\n\n /* @conditional-compile-remove(acs-close-captions) */\n public addCaption(callId: string, caption: AcsCaptionsInfo): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n this.processNewCaption(call.captionsFeature.captions, convertFromSDKToCaptionInfoState(caption));\n }\n });\n }\n\n /* @conditional-compile-remove(acs-close-captions) */\n public setCaptionsKind(callId: string, kind: CaptionsKind): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.captionsKind = kind;\n }\n });\n }\n\n /* @conditional-compile-remove(close-captions) */\n public clearCaptions(callId: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.captions = [];\n }\n });\n }\n\n /* @conditional-compile-remove(close-captions) */\n setIsCaptionActive(callId: string, isCaptionsActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.isCaptionsFeatureActive = isCaptionsActive;\n }\n });\n }\n\n /* @conditional-compile-remove(close-captions) */\n setStartCaptionsInProgress(callId: string, startCaptionsInProgress: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.startCaptionsInProgress = startCaptionsInProgress;\n }\n });\n }\n /* @conditional-compile-remove(close-captions) */\n setSelectedSpokenLanguage(callId: string, spokenLanguage: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.currentSpokenLanguage = spokenLanguage;\n }\n });\n }\n /* @conditional-compile-remove(close-captions) */\n setSelectedCaptionLanguage(callId: string, captionLanguage: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.currentCaptionLanguage = captionLanguage;\n }\n });\n }\n /* @conditional-compile-remove(close-captions) */\n setAvailableCaptionLanguages(callId: string, captionLanguages: string[]): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.supportedCaptionLanguages = captionLanguages;\n }\n });\n }\n /* @conditional-compile-remove(close-captions) */\n setAvailableSpokenLanguages(callId: string, spokenLanguages: string[]): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.supportedSpokenLanguages = spokenLanguages;\n }\n });\n }\n\n setAcceptedTransfer(callId: string, acceptedTransfer: AcceptedTransfer): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.transfer.acceptedTransfers[acceptedTransfer.callId] = acceptedTransfer;\n }\n });\n }\n\n /**\n * Tees any errors encountered in an async function to the state.\n *\n * @param action Async function to execute.\n * @param target The error target to tee error to.\n * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n */\n public withAsyncErrorTeedToState<Args extends unknown[], R>(\n action: (...args: Args) => Promise<R>,\n target: CallErrorTarget\n ): (...args: Args) => Promise<R> {\n return async (...args: Args): Promise<R> => {\n try {\n return await action(...args);\n } catch (error) {\n const callError = toCallError(target, error);\n this.setLatestError(target, callError);\n throw callError;\n }\n };\n }\n\n /**\n * Tees any errors encountered in an function to the state.\n *\n * @param action Function to execute.\n * @param target The error target to tee error to.\n * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n */\n public withErrorTeedToState<Args extends unknown[], R>(\n action: (...args: Args) => R,\n target: CallErrorTarget\n ): (...args: Args) => R {\n return (...args: Args): R => {\n try {\n callingStatefulLogger.info(`Calling stateful client target function called: ${target}`);\n return action(...args);\n } catch (error) {\n const callError = toCallError(target, error);\n this.setLatestError(target, callError);\n throw callError;\n }\n };\n }\n\n /**\n * Tees direct errors to state.\n * @remarks\n * This is typically used for errors that are caught and intended to be shown to the user.\n *\n * @param error The raw error to report.\n * @param target The error target to tee error to.\n *\n * @private\n */\n public teeErrorToState = (error: Error, target: CallErrorTarget): void => {\n const callError = toCallError(target, error);\n this.setLatestError(target, callError);\n };\n\n private setLatestError(target: CallErrorTarget, error: CallError): void {\n this.modifyState((draft: CallClientState) => {\n draft.latestErrors[target] = error;\n });\n }\n}\n\nconst toCallError = (target: CallErrorTarget, error: unknown): CallError => {\n if (error instanceof Error) {\n return new CallError(target, error);\n }\n return new CallError(target, new Error(error as string));\n};\n\nconst findOldestCallEnded = (calls: { [key: string]: { endTime?: Date } }): string => {\n const callEntries = Object.entries(calls);\n let [oldestCallId, oldestCall] = callEntries[0];\n if (oldestCall.endTime === undefined) {\n return oldestCallId;\n }\n for (const [callId, call] of callEntries.slice(1)) {\n if (call.endTime === undefined) {\n return callId;\n }\n if ((call.endTime?.getTime() ?? 0) < (oldestCall.endTime?.getTime() ?? 0)) {\n [oldestCallId, oldestCall] = [callId, call];\n }\n }\n return oldestCallId;\n};\n\nfunction clearParticipantReactionState(callContext: CallContext, callId: string, participantKey: string): void {\n callContext.setReceivedReactionFromParticipant(callId, participantKey, null);\n}\n"]}
1
+ {"version":3,"file":"CallContext.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/CallContext.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommunicationIdentifierKind } from '@azure/communication-common';\nimport {\n AudioDeviceInfo,\n DeviceAccess,\n DominantSpeakersInfo,\n ParticipantRole,\n ScalingMode,\n VideoDeviceInfo\n} from '@azure/communication-calling';\nimport { RaisedHand } from '@azure/communication-calling';\n\nimport { CapabilitiesChangeInfo, ParticipantCapabilities } from '@azure/communication-calling';\nimport { TeamsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { CaptionsKind, CaptionsInfo as AcsCaptionsInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(unsupported-browser) */\nimport { EnvironmentInfo } from '@azure/communication-calling';\nimport { AzureLogger, createClientLogger, getLogLevel } from '@azure/logger';\nimport EventEmitter from 'events';\nimport { enableMapSet, enablePatches, Patch, produce } from 'immer';\nimport {\n CallEndReason,\n CallState as CallStatus,\n RemoteParticipantState as RemoteParticipantStatus\n} from '@azure/communication-calling';\nimport { _safeJSONStringify, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport {\n CallState,\n CallClientState,\n LocalVideoStreamState,\n RemoteParticipantState,\n RemoteVideoStreamState,\n IncomingCallState,\n VideoStreamRendererViewState,\n CallAgentState,\n CallErrors,\n CallErrorTarget,\n CallError\n} from './CallClientState';\nimport { CaptionsInfo } from './CallClientState';\nimport { ReactionState } from './CallClientState';\nimport { AcceptedTransfer } from './CallClientState';\nimport { callingStatefulLogger } from './Logger';\nimport { CallIdHistory } from './CallIdHistory';\nimport { LocalVideoStreamVideoEffectsState } from './CallClientState';\nimport { convertFromTeamsSDKToCaptionInfoState } from './Converter';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { convertFromSDKToCaptionInfoState } from './Converter';\nimport { convertFromSDKToRaisedHandState } from './Converter';\nimport { ReactionMessage } from '@azure/communication-calling';\n/* @conditional-compile-remove(spotlight) */\nimport { SpotlightedParticipant } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { LocalRecordingInfo } from '@azure/communication-calling';\n/* @conditional-compile-remove(local-recording-notification) */\nimport { RecordingInfo } from '@azure/communication-calling';\n\nenableMapSet();\n// Needed to generate state diff for verbose logging.\nenablePatches();\n\n// TODO: How can we make this configurable?\n/**\n * @private\n */\nexport const MAX_CALL_HISTORY_LENGTH = 10;\n/**\n * @private\n */\nexport const REACTION_ANIMATION_TIME_MS = 4133;\n\n/**\n * @private\n */\nexport class CallContext {\n private _logger: AzureLogger;\n private _state: CallClientState;\n private _emitter: EventEmitter;\n private _atomicId: number;\n private _callIdHistory: CallIdHistory = new CallIdHistory();\n private _timeOutId: { [key: string]: NodeJS.Timeout } = {};\n\n constructor(\n userId: CommunicationIdentifierKind,\n maxListeners = 50,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId?: string\n ) {\n this._logger = createClientLogger('communication-react:calling-context');\n this._state = {\n calls: {},\n callsEnded: {},\n incomingCalls: {},\n incomingCallsEnded: {},\n deviceManager: {\n isSpeakerSelectionAvailable: false,\n cameras: [],\n microphones: [],\n speakers: [],\n unparentedViews: []\n },\n callAgent: undefined,\n userId: userId,\n /* @conditional-compile-remove(unsupported-browser) */ environmentInfo: undefined,\n /* @conditional-compile-remove(PSTN-calls) */ alternateCallerId: alternateCallerId,\n latestErrors: {} as CallErrors\n };\n this._emitter = new EventEmitter();\n this._emitter.setMaxListeners(maxListeners);\n this._atomicId = 0;\n }\n\n public getState(): CallClientState {\n return this._state;\n }\n\n public modifyState(modifier: (draft: CallClientState) => void): void {\n const priorState = this._state;\n this._state = produce(this._state, modifier, (patches: Patch[]) => {\n if (getLogLevel() === 'verbose') {\n // Log to `info` because AzureLogger.verbose() doesn't show up in console.\n this._logger.info(`State change: ${_safeJSONStringify(patches)}`);\n }\n });\n if (this._state !== priorState) {\n this._emitter.emit('stateChanged', this._state);\n }\n }\n\n public onStateChange(handler: (state: CallClientState) => void): void {\n this._emitter.on('stateChanged', handler);\n }\n\n public offStateChange(handler: (state: CallClientState) => void): void {\n this._emitter.off('stateChanged', handler);\n }\n\n // Disposing of the CallAgentDeclarative will not clear the state. If we create a new CallAgentDeclarative, we should\n // make sure the state is clean because any left over state (if previous CallAgentDeclarative was disposed) may be\n // invalid.\n public clearCallRelatedState(): void {\n this.modifyState((draft: CallClientState) => {\n draft.calls = {};\n draft.incomingCalls = {};\n draft.callsEnded = {};\n draft.incomingCallsEnded = {};\n });\n }\n\n public setCallAgent(callAgent: CallAgentState): void {\n this.modifyState((draft: CallClientState) => {\n draft.callAgent = callAgent;\n });\n }\n\n public setCall(call: CallState): void {\n this.modifyState((draft: CallClientState) => {\n const latestCallId = this._callIdHistory.latestCallId(call.id);\n const existingCall = draft.calls[latestCallId];\n if (existingCall) {\n existingCall.callerInfo = call.callerInfo;\n existingCall.state = call.state;\n existingCall.callEndReason = call.callEndReason;\n existingCall.direction = call.direction;\n existingCall.isMuted = call.isMuted;\n existingCall.isScreenSharingOn = call.isScreenSharingOn;\n existingCall.localVideoStreams = call.localVideoStreams;\n existingCall.remoteParticipants = call.remoteParticipants;\n existingCall.transcription.isTranscriptionActive = call.transcription.isTranscriptionActive;\n existingCall.optimalVideoCount.maxRemoteVideoStreams = call.optimalVideoCount.maxRemoteVideoStreams;\n existingCall.recording.isRecordingActive = call.recording.isRecordingActive;\n existingCall.raiseHand.raisedHands = call.raiseHand.raisedHands;\n /* @conditional-compile-remove(ppt-live) */\n existingCall.pptLive.isActive = call.pptLive.isActive;\n existingCall.raiseHand.localParticipantRaisedHand = call.raiseHand.localParticipantRaisedHand;\n existingCall.role = call.role;\n /* @conditional-compile-remove(total-participant-count) */\n existingCall.totalParticipantCount = call.totalParticipantCount;\n // We don't update the startTime and endTime if we are updating an existing active call\n existingCall.captionsFeature.currentSpokenLanguage = call.captionsFeature.currentSpokenLanguage;\n existingCall.captionsFeature.currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n /* @conditional-compile-remove(meeting-id) */\n existingCall.info = call.info;\n } else {\n draft.calls[latestCallId] = call;\n }\n });\n }\n\n public removeCall(callId: string): void {\n this.modifyState((draft: CallClientState) => {\n delete draft.calls[this._callIdHistory.latestCallId(callId)];\n });\n }\n\n public setCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n const latestCallId = this._callIdHistory.latestCallId(callId);\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[latestCallId];\n if (call) {\n call.endTime = new Date();\n call.callEndReason = callEndReason;\n delete draft.calls[latestCallId];\n // Performance note: This loop should run only once because the number of entries\n // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n while (Object.keys(draft.callsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n delete draft.callsEnded[findOldestCallEnded(draft.callsEnded)];\n }\n draft.callsEnded[latestCallId] = call;\n }\n });\n }\n\n public setCallState(callId: string, state: CallStatus): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.state = state;\n }\n });\n }\n\n public setCallId(newCallId: string, oldCallId: string): void {\n this._callIdHistory.updateCallIdHistory(newCallId, oldCallId);\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[oldCallId];\n if (call) {\n call.id = newCallId;\n delete draft.calls[oldCallId];\n draft.calls[newCallId] = call;\n }\n });\n }\n\n /* @conditional-compile-remove(unsupported-browser) */\n public setEnvironmentInfo(envInfo: EnvironmentInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.environmentInfo = envInfo;\n });\n }\n\n public setCallIsScreenSharingOn(callId: string, isScreenSharingOn: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.isScreenSharingOn = isScreenSharingOn;\n }\n });\n }\n\n public setCallRemoteParticipants(\n callId: string,\n addRemoteParticipant: RemoteParticipantState[],\n removeRemoteParticipant: string[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n removeRemoteParticipant.forEach((id: string) => {\n delete call.remoteParticipants[id];\n });\n addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n call.remoteParticipants[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n });\n // TODO: need to remove after contentSharingRole avaible in WebCalling SDK.\n /* @conditional-compile-remove(ppt-live) */\n if (!call.contentSharingRemoteParticipant) {\n call.contentSharingRemoteParticipant = toFlatCommunicationIdentifier(addRemoteParticipant[0].identifier);\n }\n }\n });\n }\n\n public setCallRemoteParticipantsEnded(\n callId: string,\n addRemoteParticipant: RemoteParticipantState[],\n removeRemoteParticipant: string[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n removeRemoteParticipant.forEach((id: string) => {\n delete call.remoteParticipantsEnded[id];\n });\n addRemoteParticipant.forEach((participant: RemoteParticipantState) => {\n call.remoteParticipantsEnded[toFlatCommunicationIdentifier(participant.identifier)] = participant;\n });\n }\n });\n }\n\n public setCallLocalVideoStream(\n callId: string,\n streamsAdded: LocalVideoStreamState[],\n streamsRemoved: LocalVideoStreamState[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n for (const removedStream of streamsRemoved) {\n const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === removedStream.mediaStreamType);\n if (index > -1) {\n call.localVideoStreams.splice(index, 1);\n }\n }\n\n for (const addedStream of streamsAdded) {\n const index = call.localVideoStreams.findIndex((i) => i.mediaStreamType === addedStream.mediaStreamType);\n if (index > -1) {\n call.localVideoStreams[index] = addedStream;\n } else {\n call.localVideoStreams.push(addedStream);\n }\n }\n }\n });\n }\n\n public setCallLocalVideoStreamVideoEffects(callId: string, videoEffects: LocalVideoStreamVideoEffectsState): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const stream = call.localVideoStreams?.find((i) => i.mediaStreamType === 'Video');\n if (stream) {\n stream.videoEffects = videoEffects;\n }\n }\n });\n }\n\n public setCallIsMicrophoneMuted(callId: string, isMicrophoneMuted: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.isMuted = isMicrophoneMuted;\n }\n });\n }\n\n public setRole(callId: string, role: ParticipantRole): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.role = role;\n }\n });\n }\n\n /* @conditional-compile-remove(total-participant-count) */\n public setTotalParticipantCount(callId: string, totalParticipantCount: number): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.totalParticipantCount = totalParticipantCount;\n }\n });\n }\n\n public setCallDominantSpeakers(callId: string, dominantSpeakers: DominantSpeakersInfo): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.dominantSpeakers = dominantSpeakers;\n }\n });\n }\n\n public setCallRecordingActive(callId: string, isRecordingActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.recording.isRecordingActive = isRecordingActive;\n }\n });\n }\n\n /* @conditional-compile-remove(local-recording-notification) */\n public setCallRecordingInfos(\n callId: string,\n recordingInfosAdded: RecordingInfo[],\n lastStoppedRecording: RecordingInfo[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.recording.activeRecordings = recordingInfosAdded;\n call.recording.lastStoppedRecording = lastStoppedRecording;\n }\n });\n }\n\n /* @conditional-compile-remove(local-recording-notification) */\n public setCallLocalRecordingActive(callId: string, isRecordingActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.localRecording.isLocalRecordingActive = isRecordingActive;\n }\n });\n }\n\n /* @conditional-compile-remove(local-recording-notification) */\n public setCallLocalRecordingInfos(\n callId: string,\n localRecordingInfosAdded: LocalRecordingInfo[],\n lastStoppedRecording: LocalRecordingInfo[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.localRecording.activeLocalRecordings = localRecordingInfosAdded;\n call.localRecording.lastStoppedLocalRecording = lastStoppedRecording;\n }\n });\n }\n\n /* @conditional-compile-remove(ppt-live) */\n public setCallPPTLiveActive(callId: string, isActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.pptLive.isActive = isActive;\n }\n });\n }\n\n /* @conditional-compile-remove(ppt-live) */\n public setCallParticipantPPTLive(callId: string, target: HTMLElement | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n const participantKey = call.contentSharingRemoteParticipant;\n if (call && participantKey) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.contentSharingStream = target;\n }\n }\n });\n }\n\n public setCallRaisedHands(callId: string, raisedHands: RaisedHand[]): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.raiseHand.raisedHands = raisedHands.map((raisedHand) => {\n return convertFromSDKToRaisedHandState(raisedHand);\n });\n const raisedHand = raisedHands.find(\n (raisedHand) =>\n toFlatCommunicationIdentifier(raisedHand.identifier) === toFlatCommunicationIdentifier(this._state.userId)\n );\n if (raisedHand) {\n call.raiseHand.localParticipantRaisedHand = convertFromSDKToRaisedHandState(raisedHand);\n } else {\n call.raiseHand.localParticipantRaisedHand = undefined;\n }\n }\n });\n }\n\n public setParticipantIsRaisedHand(callId: string, participantKey: string, raisedHand: RaisedHand | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.raisedHand = raisedHand ? convertFromSDKToRaisedHandState(raisedHand) : raisedHand;\n }\n }\n });\n }\n\n public setReceivedReactionFromParticipant(\n callId: string,\n participantKey: string,\n reactionMessage: ReactionMessage | null\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n\n if (!call) {\n return;\n }\n\n clearTimeout(this._timeOutId[participantKey]);\n\n const participant = call.remoteParticipants[participantKey];\n const newReactionState: ReactionState | undefined = reactionMessage\n ? { reactionMessage: reactionMessage, receivedOn: new Date() }\n : undefined;\n\n if (participantKey === toFlatCommunicationIdentifier(this._state.userId)) {\n call.localParticipantReaction = newReactionState;\n } else {\n participant.reactionState = newReactionState;\n }\n\n if (reactionMessage) {\n this._timeOutId[participantKey] = setTimeout(() => {\n clearParticipantReactionState(this, callId, participantKey);\n }, REACTION_ANIMATION_TIME_MS);\n }\n });\n }\n\n public setCallTranscriptionActive(callId: string, isTranscriptionActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.transcription.isTranscriptionActive = isTranscriptionActive;\n }\n });\n }\n\n public setCapabilities(\n callId: string,\n capabilities: ParticipantCapabilities,\n capabilitiesChangeInfo: CapabilitiesChangeInfo\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.capabilitiesFeature = { capabilities, latestCapabilitiesChangeInfo: capabilitiesChangeInfo };\n }\n });\n }\n\n /* @conditional-compile-remove(spotlight) */\n public setSpotlight(\n callId: string,\n spotlightedParticipants: SpotlightedParticipant[],\n maxParticipantsToSpotlight: number\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.spotlight = { ...call.spotlight, spotlightedParticipants, maxParticipantsToSpotlight };\n }\n });\n }\n\n /* @conditional-compile-remove(spotlight) */\n public setParticipantSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n if (participant) {\n participant.spotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n } else if (\n call.spotlight &&\n toFlatCommunicationIdentifier(draft.userId) ===\n toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n ) {\n call.spotlight.localParticipantSpotlight = { spotlightedOrderPosition: spotlightedParticipant.order };\n }\n }\n });\n }\n\n /* @conditional-compile-remove(spotlight) */\n public setParticipantNotSpotlighted(callId: string, spotlightedParticipant: SpotlightedParticipant): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[toFlatCommunicationIdentifier(spotlightedParticipant.identifier)];\n if (participant) {\n participant.spotlight = undefined;\n } else if (\n call.spotlight &&\n toFlatCommunicationIdentifier(draft.userId) ===\n toFlatCommunicationIdentifier(spotlightedParticipant.identifier)\n ) {\n call.spotlight.localParticipantSpotlight = undefined;\n }\n }\n });\n }\n\n public setCallScreenShareParticipant(callId: string, participantKey: string | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.screenShareRemoteParticipant = participantKey;\n }\n });\n }\n\n public setLocalVideoStreamRendererView(\n callId: string,\n localVideoMediaStreamType: string,\n view: VideoStreamRendererViewState | undefined\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const localVideoStream = call.localVideoStreams.find(\n (localVideoStream) => localVideoStream.mediaStreamType === localVideoMediaStreamType\n );\n if (localVideoStream) {\n localVideoStream.view = view;\n }\n }\n });\n }\n\n public setParticipantState(callId: string, participantKey: string, state: RemoteParticipantStatus): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.state = state;\n }\n }\n });\n }\n\n public setParticipantIsMuted(callId: string, participantKey: string, muted: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.isMuted = muted;\n }\n }\n });\n }\n\n public setOptimalVideoCount(callId: string, optimalVideoCount: number): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.optimalVideoCount.maxRemoteVideoStreams = optimalVideoCount;\n }\n });\n }\n\n public setParticipantRole(callId: string, participantKey: string, role: ParticipantRole): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.role = role;\n }\n }\n });\n }\n\n public setParticipantDisplayName(callId: string, participantKey: string, displayName: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.displayName = displayName;\n }\n }\n });\n }\n\n public setParticipantIsSpeaking(callId: string, participantKey: string, isSpeaking: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n participant.isSpeaking = isSpeaking;\n }\n }\n });\n }\n\n public setParticipantVideoStream(callId: string, participantKey: string, stream: RemoteVideoStreamState): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n // Set is called by subscriber will not modify any rendered stream so if there is existing stream only\n // modify the values that subscriber has access to.\n const existingStream = participant.videoStreams[stream.id];\n if (existingStream) {\n existingStream.isAvailable = stream.isAvailable;\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n existingStream.isReceiving = stream.isReceiving;\n existingStream.mediaStreamType = stream.mediaStreamType;\n } else {\n participant.videoStreams[stream.id] = stream;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamIsAvailable(\n callId: string,\n participantKey: string,\n streamId: number,\n isAvailable: boolean\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.isAvailable = isAvailable;\n }\n }\n }\n });\n }\n\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n public setRemoteVideoStreamIsReceiving(\n callId: string,\n participantKey: string,\n streamId: number,\n isReceiving: boolean\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.isReceiving = isReceiving;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamSize(\n callId: string,\n participantKey: string,\n streamId: number,\n size: { width: number; height: number }\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.streamSize = size;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreams(\n callId: string,\n participantKey: string,\n addRemoteVideoStream: RemoteVideoStreamState[],\n removeRemoteVideoStream: number[]\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n for (const id of removeRemoteVideoStream) {\n delete participant.videoStreams[id];\n }\n\n for (const newStream of addRemoteVideoStream) {\n // This should only be called by the subscriber and some properties are add by other components so if the\n // stream already exists, only update the values that subscriber knows about.\n const stream = participant.videoStreams[newStream.id];\n if (stream) {\n stream.mediaStreamType = newStream.mediaStreamType;\n stream.isAvailable = newStream.isAvailable;\n /* @conditional-compile-remove(video-stream-is-receiving-flag) */\n stream.isReceiving = newStream.isReceiving;\n } else {\n participant.videoStreams[newStream.id] = newStream;\n }\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamRendererView(\n callId: string,\n participantKey: string,\n streamId: number,\n view: VideoStreamRendererViewState | undefined\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream) {\n stream.view = view;\n }\n }\n }\n });\n }\n\n public setRemoteVideoStreamViewScalingMode(\n callId: string,\n participantKey: string,\n streamId: number,\n scalingMode: ScalingMode\n ): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const participant = call.remoteParticipants[participantKey];\n if (participant) {\n const stream = participant.videoStreams[streamId];\n if (stream && stream.view) {\n stream.view.scalingMode = scalingMode;\n }\n }\n }\n });\n }\n\n public setIncomingCall(call: IncomingCallState): void {\n this.modifyState((draft: CallClientState) => {\n const existingCall = draft.incomingCalls[call.id];\n if (existingCall) {\n existingCall.callerInfo = call.callerInfo;\n } else {\n draft.incomingCalls[call.id] = call;\n }\n });\n }\n\n public removeIncomingCall(callId: string): void {\n this.modifyState((draft: CallClientState) => {\n delete draft.incomingCalls[callId];\n });\n }\n\n public setIncomingCallEnded(callId: string, callEndReason: CallEndReason | undefined): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.incomingCalls[callId];\n if (call) {\n call.endTime = new Date();\n call.callEndReason = callEndReason;\n delete draft.incomingCalls[callId];\n // Performance note: This loop should run only once because the number of entries\n // is never allowed to exceed MAX_CALL_HISTORY_LENGTH. A loop is used for correctness.\n while (Object.keys(draft.incomingCallsEnded).length >= MAX_CALL_HISTORY_LENGTH) {\n delete draft.incomingCallsEnded[findOldestCallEnded(draft.incomingCallsEnded)];\n }\n draft.incomingCallsEnded[callId] = call;\n }\n });\n }\n\n public setDeviceManagerIsSpeakerSelectionAvailable(isSpeakerSelectionAvailable: boolean): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.isSpeakerSelectionAvailable = isSpeakerSelectionAvailable;\n });\n }\n\n public setDeviceManagerSelectedMicrophone(selectedMicrophone?: AudioDeviceInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.selectedMicrophone = selectedMicrophone;\n });\n }\n\n public setDeviceManagerSelectedSpeaker(selectedSpeaker?: AudioDeviceInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.selectedSpeaker = selectedSpeaker;\n });\n }\n\n public setDeviceManagerSelectedCamera(selectedCamera?: VideoDeviceInfo): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.selectedCamera = selectedCamera;\n });\n }\n\n public setDeviceManagerCameras(cameras: VideoDeviceInfo[]): void {\n this.modifyState((draft: CallClientState) => {\n /**\n * SDK initializes cameras with one dummy camera with value { id: 'camera:id', name: '', deviceType: 'USBCamera' } immediately after\n * camera permissions are granted. So selectedCamera will have this value before the actual cameras are obtained. Therefore we should reset\n * selectedCamera to the first camera when there are cameras AND when current selectedCamera does not exist in the new array of cameras *\n */\n if (cameras.length > 0 && !cameras.some((camera) => camera.id === draft.deviceManager.selectedCamera?.id)) {\n draft.deviceManager.selectedCamera = cameras[0];\n }\n draft.deviceManager.cameras = cameras;\n });\n }\n\n public setDeviceManagerMicrophones(microphones: AudioDeviceInfo[]): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.microphones = microphones;\n });\n }\n\n public setDeviceManagerSpeakers(speakers: AudioDeviceInfo[]): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.speakers = speakers;\n });\n }\n\n public setDeviceManagerDeviceAccess(deviceAccess: DeviceAccess): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.deviceAccess = deviceAccess;\n });\n }\n\n public setDeviceManagerUnparentedView(\n localVideoStream: LocalVideoStreamState,\n view: VideoStreamRendererViewState | undefined\n ): void {\n this.modifyState((draft: CallClientState) => {\n draft.deviceManager.unparentedViews.push({\n source: localVideoStream.source,\n mediaStreamType: localVideoStream.mediaStreamType,\n view: view\n });\n });\n }\n\n public deleteDeviceManagerUnparentedView(localVideoStream: LocalVideoStreamState): void {\n this.modifyState((draft: CallClientState) => {\n const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n );\n if (foundIndex !== -1) {\n draft.deviceManager.unparentedViews.splice(foundIndex, 1);\n }\n });\n }\n\n public setDeviceManagerUnparentedViewVideoEffects(\n localVideoStream: LocalVideoStreamState,\n videoEffects: LocalVideoStreamVideoEffectsState\n ): void {\n this.modifyState((draft: CallClientState) => {\n const foundIndex = draft.deviceManager.unparentedViews.findIndex(\n (stream) => stream.mediaStreamType === localVideoStream.mediaStreamType\n );\n if (foundIndex !== -1) {\n draft.deviceManager.unparentedViews[foundIndex].videoEffects = videoEffects;\n }\n });\n }\n\n public getAndIncrementAtomicId(): number {\n const id = this._atomicId;\n this._atomicId++;\n return id;\n }\n\n private processNewCaption(captions: CaptionsInfo[], newCaption: CaptionsInfo): void {\n // time stamp when new caption comes in\n newCaption.timestamp = new Date();\n // if this is the first caption, push it in\n if (captions.length === 0) {\n captions.push(newCaption);\n }\n // if the last caption is final, then push the new one in\n else if (captions[captions.length - 1].resultType === 'Final') {\n captions.push(newCaption);\n }\n // if the last caption is Partial, then check if the speaker is the same as the new caption, if so, update the last caption\n else {\n if (\n toFlatCommunicationIdentifier(\n captions[captions.length - 1].speaker.identifier as CommunicationIdentifierKind\n ) === toFlatCommunicationIdentifier(newCaption.speaker.identifier as CommunicationIdentifierKind)\n ) {\n captions[captions.length - 1] = newCaption;\n }\n // if different speaker, ignore the interjector until the current speaker finishes\n // edge case: if we dont receive the final caption from the current speaker for 5 secs, we turn the current speaker caption to final and push in the new interjector\n else {\n if (Date.now() - captions[captions.length - 1].timestamp.getTime() > 5000) {\n captions[captions.length - 1].resultType = 'Final';\n captions.push(newCaption);\n }\n }\n }\n\n // If the array length exceeds 50, remove the oldest caption\n if (captions.length > 50) {\n captions.shift();\n }\n }\n\n public addTeamsCaption(callId: string, caption: TeamsCaptionsInfo): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n const currentCaptionLanguage = call.captionsFeature.currentCaptionLanguage;\n if (\n caption.captionLanguage.toUpperCase() === currentCaptionLanguage.toUpperCase() ||\n currentCaptionLanguage === '' ||\n currentCaptionLanguage === undefined\n ) {\n this.processNewCaption(call.captionsFeature.captions, convertFromTeamsSDKToCaptionInfoState(caption));\n }\n }\n });\n }\n\n /* @conditional-compile-remove(acs-close-captions) */\n public addCaption(callId: string, caption: AcsCaptionsInfo): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n this.processNewCaption(call.captionsFeature.captions, convertFromSDKToCaptionInfoState(caption));\n }\n });\n }\n\n /* @conditional-compile-remove(acs-close-captions) */\n public setCaptionsKind(callId: string, kind: CaptionsKind): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.captionsKind = kind;\n }\n });\n }\n\n public clearCaptions(callId: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.captions = [];\n }\n });\n }\n\n setIsCaptionActive(callId: string, isCaptionsActive: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.isCaptionsFeatureActive = isCaptionsActive;\n }\n });\n }\n\n setStartCaptionsInProgress(callId: string, startCaptionsInProgress: boolean): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.startCaptionsInProgress = startCaptionsInProgress;\n }\n });\n }\n\n setSelectedSpokenLanguage(callId: string, spokenLanguage: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.currentSpokenLanguage = spokenLanguage;\n }\n });\n }\n\n setSelectedCaptionLanguage(callId: string, captionLanguage: string): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.currentCaptionLanguage = captionLanguage;\n }\n });\n }\n\n setAvailableCaptionLanguages(callId: string, captionLanguages: string[]): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.supportedCaptionLanguages = captionLanguages;\n }\n });\n }\n\n setAvailableSpokenLanguages(callId: string, spokenLanguages: string[]): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.captionsFeature.supportedSpokenLanguages = spokenLanguages;\n }\n });\n }\n\n setAcceptedTransfer(callId: string, acceptedTransfer: AcceptedTransfer): void {\n this.modifyState((draft: CallClientState) => {\n const call = draft.calls[this._callIdHistory.latestCallId(callId)];\n if (call) {\n call.transfer.acceptedTransfers[acceptedTransfer.callId] = acceptedTransfer;\n }\n });\n }\n\n /**\n * Tees any errors encountered in an async function to the state.\n *\n * @param action Async function to execute.\n * @param target The error target to tee error to.\n * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n */\n public withAsyncErrorTeedToState<Args extends unknown[], R>(\n action: (...args: Args) => Promise<R>,\n target: CallErrorTarget\n ): (...args: Args) => Promise<R> {\n return async (...args: Args): Promise<R> => {\n try {\n return await action(...args);\n } catch (error) {\n const callError = toCallError(target, error);\n this.setLatestError(target, callError);\n throw callError;\n }\n };\n }\n\n /**\n * Tees any errors encountered in an function to the state.\n *\n * @param action Function to execute.\n * @param target The error target to tee error to.\n * @returns Result of calling `f`. Also re-raises any exceptions thrown from `f`.\n * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.\n */\n public withErrorTeedToState<Args extends unknown[], R>(\n action: (...args: Args) => R,\n target: CallErrorTarget\n ): (...args: Args) => R {\n return (...args: Args): R => {\n try {\n callingStatefulLogger.info(`Calling stateful client target function called: ${target}`);\n return action(...args);\n } catch (error) {\n const callError = toCallError(target, error);\n this.setLatestError(target, callError);\n throw callError;\n }\n };\n }\n\n /**\n * Tees direct errors to state.\n * @remarks\n * This is typically used for errors that are caught and intended to be shown to the user.\n *\n * @param error The raw error to report.\n * @param target The error target to tee error to.\n *\n * @private\n */\n public teeErrorToState = (error: Error, target: CallErrorTarget): void => {\n const callError = toCallError(target, error);\n this.setLatestError(target, callError);\n };\n\n private setLatestError(target: CallErrorTarget, error: CallError): void {\n this.modifyState((draft: CallClientState) => {\n draft.latestErrors[target] = error;\n });\n }\n}\n\nconst toCallError = (target: CallErrorTarget, error: unknown): CallError => {\n if (error instanceof Error) {\n return new CallError(target, error);\n }\n return new CallError(target, new Error(error as string));\n};\n\nconst findOldestCallEnded = (calls: { [key: string]: { endTime?: Date } }): string => {\n const callEntries = Object.entries(calls);\n let [oldestCallId, oldestCall] = callEntries[0];\n if (oldestCall.endTime === undefined) {\n return oldestCallId;\n }\n for (const [callId, call] of callEntries.slice(1)) {\n if (call.endTime === undefined) {\n return callId;\n }\n if ((call.endTime?.getTime() ?? 0) < (oldestCall.endTime?.getTime() ?? 0)) {\n [oldestCallId, oldestCall] = [callId, call];\n }\n }\n return oldestCallId;\n};\n\nfunction clearParticipantReactionState(callContext: CallContext, callId: string, participantKey: string): void {\n callContext.setReceivedReactionFromParticipant(callId, participantKey, null);\n}\n"]}
@@ -84,7 +84,6 @@ export class ProxyCallCommon {
84
84
  case 'feature': {
85
85
  // these are mini version of Proxy object - if it grows too big, a real Proxy object should be used.
86
86
  return this._context.withErrorTeedToState((...args) => {
87
- /* @conditional-compile-remove(close-captions) */
88
87
  if (args[0] === Features.Captions) {
89
88
  const captionsFeature = target.feature(Features.Captions).captions;
90
89
  let proxyFeature;
@@ -115,7 +114,6 @@ export class ProxyCallCommon {
115
114
  }
116
115
  }
117
116
  }
118
- /* @conditional-compile-remove(close-captions) */
119
117
  /**
120
118
  * @private
121
119
  */
@@ -1 +1 @@
1
- {"version":3,"file":"CallDeclarativeCommon.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/CallDeclarativeCommon.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CallContext } from './CallContext';\nimport { CallCommon } from './BetaToStableTypes';\nimport { Features } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { Captions } from '@azure/communication-calling';\n/* @conditional-compile-remove(close-captions) */\nimport { TeamsCaptions } from '@azure/communication-calling';\nimport { TransferCallFeature, TransferAcceptedEvent, TransferEventArgs } from '@azure/communication-calling';\n/* @conditional-compile-remove(spotlight) */\nimport { SpotlightCallFeature } from '@azure/communication-calling';\n/**\n * @private\n */\nexport abstract class ProxyCallCommon implements ProxyHandler<CallCommon> {\n private _context: CallContext;\n\n constructor(context: CallContext) {\n this._context = context;\n }\n\n public unsubscribe(): void {\n /** No subscriptions yet. But there will be one for transfer feature soon. */\n }\n\n protected getContext(): CallContext {\n return this._context;\n }\n\n public get<P extends keyof CallCommon>(target: CallCommon, prop: P): any {\n switch (prop) {\n case 'mute': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['mute']>) {\n return await target.mute(...args);\n }, 'Call.mute');\n }\n case 'unmute': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['unmute']>) {\n return await target.unmute(...args);\n }, 'Call.unmute');\n }\n case 'startVideo': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['startVideo']>) {\n return await target.startVideo(...args);\n }, 'Call.startVideo');\n }\n case 'stopVideo': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['stopVideo']>) {\n return await target.stopVideo(...args);\n }, 'Call.stopVideo');\n }\n case 'startScreenSharing': {\n return this._context.withAsyncErrorTeedToState(async function (\n ...args: Parameters<CallCommon['startScreenSharing']>\n ) {\n return await target.startScreenSharing(...args);\n },\n 'Call.startScreenSharing');\n }\n case 'stopScreenSharing': {\n return this._context.withAsyncErrorTeedToState(async function (\n ...args: Parameters<CallCommon['stopScreenSharing']>\n ) {\n return await target.stopScreenSharing(...args);\n },\n 'Call.stopScreenSharing');\n }\n case 'hold': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['hold']>) {\n return await target.hold(...args);\n }, 'Call.hold');\n }\n case 'resume': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['resume']>) {\n return await target.resume(...args);\n }, 'Call.resume');\n }\n case 'feature': {\n // these are mini version of Proxy object - if it grows too big, a real Proxy object should be used.\n return this._context.withErrorTeedToState((...args: Parameters<CallCommon['feature']>) => {\n /* @conditional-compile-remove(close-captions) */\n if (args[0] === Features.Captions) {\n const captionsFeature = target.feature(Features.Captions).captions;\n let proxyFeature;\n /* @conditional-compile-remove(acs-close-captions) */\n if (captionsFeature.kind === 'Captions') {\n proxyFeature = new ProxyCaptions(this._context, target);\n return { captions: new Proxy(captionsFeature, proxyFeature) };\n }\n proxyFeature = new ProxyTeamsCaptions(this._context, target);\n return { captions: new Proxy(captionsFeature, proxyFeature) };\n }\n if (args[0] === Features.Transfer) {\n const transferFeature = target.feature(Features.Transfer);\n const proxyFeature = new ProxyTransferCallFeature(this._context, target);\n return new Proxy(transferFeature, proxyFeature);\n }\n /* @conditional-compile-remove(spotlight) */\n if (args[0] === Features.Spotlight) {\n const spotlightFeature = target.feature(Features.Spotlight);\n const proxyFeature = new ProxySpotlightCallFeature(this._context);\n return new Proxy(spotlightFeature, proxyFeature);\n }\n return target.feature(...args);\n }, 'Call.feature');\n }\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/* @conditional-compile-remove(close-captions) */\n/**\n * @private\n */\nclass ProxyTeamsCaptions implements ProxyHandler<TeamsCaptions> {\n private _context: CallContext;\n private _call: CallCommon;\n\n constructor(context: CallContext, call: CallCommon) {\n this._context = context;\n this._call = call;\n }\n\n public get<P extends keyof TeamsCaptions>(target: TeamsCaptions, prop: P): any {\n switch (prop) {\n case 'startCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['startCaptions']>) => {\n this._context.setStartCaptionsInProgress(this._call.id, true);\n const ret = await target.startCaptions(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]?.spokenLanguage ?? 'en-us');\n return ret;\n }, 'Call.feature');\n break;\n case 'stopCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['stopCaptions']>) => {\n const ret = await target.stopCaptions(...args);\n this._context.setIsCaptionActive(this._call.id, false);\n this._context.setStartCaptionsInProgress(this._call.id, false);\n this._context.clearCaptions(this._call.id);\n return ret;\n }, 'Call.feature');\n case 'setSpokenLanguage':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<TeamsCaptions['setSpokenLanguage']>) => {\n const ret = await target.setSpokenLanguage(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]);\n return ret;\n },\n 'Call.feature'\n );\n case 'setCaptionLanguage':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<TeamsCaptions['setCaptionLanguage']>) => {\n const ret = await target.setCaptionLanguage(...args);\n this._context.setSelectedCaptionLanguage(this._call.id, args[0]);\n return ret;\n },\n 'Call.feature'\n );\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/* @conditional-compile-remove(acs-close-captions) */\n/**\n * @private\n */\nclass ProxyCaptions implements ProxyHandler<Captions> {\n private _context: CallContext;\n private _call: CallCommon;\n\n constructor(context: CallContext, call: CallCommon) {\n this._context = context;\n this._call = call;\n }\n\n public get<P extends keyof Captions>(target: Captions, prop: P): any {\n switch (prop) {\n case 'startCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['startCaptions']>) => {\n this._context.setStartCaptionsInProgress(this._call.id, true);\n const ret = await target.startCaptions(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]?.spokenLanguage ?? 'en-us');\n return ret;\n }, 'Call.feature');\n break;\n case 'stopCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['stopCaptions']>) => {\n const ret = await target.stopCaptions(...args);\n this._context.setIsCaptionActive(this._call.id, false);\n this._context.setStartCaptionsInProgress(this._call.id, false);\n this._context.clearCaptions(this._call.id);\n return ret;\n }, 'Call.feature');\n case 'setSpokenLanguage':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<TeamsCaptions['setSpokenLanguage']>) => {\n const ret = await target.setSpokenLanguage(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]);\n return ret;\n },\n 'Call.feature'\n );\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/* @conditional-compile-remove(spotlight) */\n/**\n * @private\n */\nclass ProxySpotlightCallFeature implements ProxyHandler<SpotlightCallFeature> {\n private _context: CallContext;\n\n constructor(context: CallContext) {\n this._context = context;\n }\n\n public get<P extends keyof SpotlightCallFeature>(target: SpotlightCallFeature, prop: P): any {\n switch (prop) {\n case 'startSpotlight':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<SpotlightCallFeature['startSpotlight']>) => {\n const ret = await target.startSpotlight(...args);\n return ret;\n },\n 'Call.feature'\n );\n break;\n case 'stopSpotlight':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<SpotlightCallFeature['stopSpotlight']>) => {\n const ret = await target.stopSpotlight(...args);\n return ret;\n },\n 'Call.feature'\n );\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/**\n * @private\n */\nclass ProxyTransferCallFeature implements ProxyHandler<TransferCallFeature> {\n private _context: CallContext;\n private _call: CallCommon;\n\n constructor(context: CallContext, call: CallCommon) {\n this._context = context;\n this._call = call;\n }\n\n public get<P extends keyof TransferCallFeature>(target: TransferCallFeature, prop: P): any {\n switch (prop) {\n case 'on':\n return (...args: Parameters<TransferCallFeature['on']>): void => {\n const isTransferAccepted = args[0] === 'transferAccepted';\n if (isTransferAccepted) {\n const listener = args[1] as TransferAcceptedEvent;\n const newListener = (args: TransferEventArgs): void => {\n this._context.setAcceptedTransfer(this._call.id, {\n callId: args.targetCall.id,\n timestamp: new Date()\n });\n listener(args);\n };\n return target.on('transferAccepted', newListener);\n }\n };\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n"]}
1
+ {"version":3,"file":"CallDeclarativeCommon.js","sourceRoot":"","sources":["../../../../../calling-stateful-client/src/CallDeclarativeCommon.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CallContext } from './CallContext';\nimport { CallCommon } from './BetaToStableTypes';\nimport { Features } from '@azure/communication-calling';\n/* @conditional-compile-remove(acs-close-captions) */\nimport { Captions } from '@azure/communication-calling';\nimport { TeamsCaptions } from '@azure/communication-calling';\nimport { TransferCallFeature, TransferAcceptedEvent, TransferEventArgs } from '@azure/communication-calling';\n/* @conditional-compile-remove(spotlight) */\nimport { SpotlightCallFeature } from '@azure/communication-calling';\n/**\n * @private\n */\nexport abstract class ProxyCallCommon implements ProxyHandler<CallCommon> {\n private _context: CallContext;\n\n constructor(context: CallContext) {\n this._context = context;\n }\n\n public unsubscribe(): void {\n /** No subscriptions yet. But there will be one for transfer feature soon. */\n }\n\n protected getContext(): CallContext {\n return this._context;\n }\n\n public get<P extends keyof CallCommon>(target: CallCommon, prop: P): any {\n switch (prop) {\n case 'mute': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['mute']>) {\n return await target.mute(...args);\n }, 'Call.mute');\n }\n case 'unmute': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['unmute']>) {\n return await target.unmute(...args);\n }, 'Call.unmute');\n }\n case 'startVideo': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['startVideo']>) {\n return await target.startVideo(...args);\n }, 'Call.startVideo');\n }\n case 'stopVideo': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['stopVideo']>) {\n return await target.stopVideo(...args);\n }, 'Call.stopVideo');\n }\n case 'startScreenSharing': {\n return this._context.withAsyncErrorTeedToState(async function (\n ...args: Parameters<CallCommon['startScreenSharing']>\n ) {\n return await target.startScreenSharing(...args);\n },\n 'Call.startScreenSharing');\n }\n case 'stopScreenSharing': {\n return this._context.withAsyncErrorTeedToState(async function (\n ...args: Parameters<CallCommon['stopScreenSharing']>\n ) {\n return await target.stopScreenSharing(...args);\n },\n 'Call.stopScreenSharing');\n }\n case 'hold': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['hold']>) {\n return await target.hold(...args);\n }, 'Call.hold');\n }\n case 'resume': {\n return this._context.withAsyncErrorTeedToState(async function (...args: Parameters<CallCommon['resume']>) {\n return await target.resume(...args);\n }, 'Call.resume');\n }\n case 'feature': {\n // these are mini version of Proxy object - if it grows too big, a real Proxy object should be used.\n return this._context.withErrorTeedToState((...args: Parameters<CallCommon['feature']>) => {\n if (args[0] === Features.Captions) {\n const captionsFeature = target.feature(Features.Captions).captions;\n let proxyFeature;\n /* @conditional-compile-remove(acs-close-captions) */\n if (captionsFeature.kind === 'Captions') {\n proxyFeature = new ProxyCaptions(this._context, target);\n return { captions: new Proxy(captionsFeature, proxyFeature) };\n }\n proxyFeature = new ProxyTeamsCaptions(this._context, target);\n return { captions: new Proxy(captionsFeature, proxyFeature) };\n }\n if (args[0] === Features.Transfer) {\n const transferFeature = target.feature(Features.Transfer);\n const proxyFeature = new ProxyTransferCallFeature(this._context, target);\n return new Proxy(transferFeature, proxyFeature);\n }\n /* @conditional-compile-remove(spotlight) */\n if (args[0] === Features.Spotlight) {\n const spotlightFeature = target.feature(Features.Spotlight);\n const proxyFeature = new ProxySpotlightCallFeature(this._context);\n return new Proxy(spotlightFeature, proxyFeature);\n }\n return target.feature(...args);\n }, 'Call.feature');\n }\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/**\n * @private\n */\nclass ProxyTeamsCaptions implements ProxyHandler<TeamsCaptions> {\n private _context: CallContext;\n private _call: CallCommon;\n\n constructor(context: CallContext, call: CallCommon) {\n this._context = context;\n this._call = call;\n }\n\n public get<P extends keyof TeamsCaptions>(target: TeamsCaptions, prop: P): any {\n switch (prop) {\n case 'startCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['startCaptions']>) => {\n this._context.setStartCaptionsInProgress(this._call.id, true);\n const ret = await target.startCaptions(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]?.spokenLanguage ?? 'en-us');\n return ret;\n }, 'Call.feature');\n break;\n case 'stopCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['stopCaptions']>) => {\n const ret = await target.stopCaptions(...args);\n this._context.setIsCaptionActive(this._call.id, false);\n this._context.setStartCaptionsInProgress(this._call.id, false);\n this._context.clearCaptions(this._call.id);\n return ret;\n }, 'Call.feature');\n case 'setSpokenLanguage':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<TeamsCaptions['setSpokenLanguage']>) => {\n const ret = await target.setSpokenLanguage(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]);\n return ret;\n },\n 'Call.feature'\n );\n case 'setCaptionLanguage':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<TeamsCaptions['setCaptionLanguage']>) => {\n const ret = await target.setCaptionLanguage(...args);\n this._context.setSelectedCaptionLanguage(this._call.id, args[0]);\n return ret;\n },\n 'Call.feature'\n );\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/* @conditional-compile-remove(acs-close-captions) */\n/**\n * @private\n */\nclass ProxyCaptions implements ProxyHandler<Captions> {\n private _context: CallContext;\n private _call: CallCommon;\n\n constructor(context: CallContext, call: CallCommon) {\n this._context = context;\n this._call = call;\n }\n\n public get<P extends keyof Captions>(target: Captions, prop: P): any {\n switch (prop) {\n case 'startCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['startCaptions']>) => {\n this._context.setStartCaptionsInProgress(this._call.id, true);\n const ret = await target.startCaptions(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]?.spokenLanguage ?? 'en-us');\n return ret;\n }, 'Call.feature');\n break;\n case 'stopCaptions':\n return this._context.withAsyncErrorTeedToState(async (...args: Parameters<TeamsCaptions['stopCaptions']>) => {\n const ret = await target.stopCaptions(...args);\n this._context.setIsCaptionActive(this._call.id, false);\n this._context.setStartCaptionsInProgress(this._call.id, false);\n this._context.clearCaptions(this._call.id);\n return ret;\n }, 'Call.feature');\n case 'setSpokenLanguage':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<TeamsCaptions['setSpokenLanguage']>) => {\n const ret = await target.setSpokenLanguage(...args);\n this._context.setSelectedSpokenLanguage(this._call.id, args[0]);\n return ret;\n },\n 'Call.feature'\n );\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/* @conditional-compile-remove(spotlight) */\n/**\n * @private\n */\nclass ProxySpotlightCallFeature implements ProxyHandler<SpotlightCallFeature> {\n private _context: CallContext;\n\n constructor(context: CallContext) {\n this._context = context;\n }\n\n public get<P extends keyof SpotlightCallFeature>(target: SpotlightCallFeature, prop: P): any {\n switch (prop) {\n case 'startSpotlight':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<SpotlightCallFeature['startSpotlight']>) => {\n const ret = await target.startSpotlight(...args);\n return ret;\n },\n 'Call.feature'\n );\n break;\n case 'stopSpotlight':\n return this._context.withAsyncErrorTeedToState(\n async (...args: Parameters<SpotlightCallFeature['stopSpotlight']>) => {\n const ret = await target.stopSpotlight(...args);\n return ret;\n },\n 'Call.feature'\n );\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n\n/**\n * @private\n */\nclass ProxyTransferCallFeature implements ProxyHandler<TransferCallFeature> {\n private _context: CallContext;\n private _call: CallCommon;\n\n constructor(context: CallContext, call: CallCommon) {\n this._context = context;\n this._call = call;\n }\n\n public get<P extends keyof TransferCallFeature>(target: TransferCallFeature, prop: P): any {\n switch (prop) {\n case 'on':\n return (...args: Parameters<TransferCallFeature['on']>): void => {\n const isTransferAccepted = args[0] === 'transferAccepted';\n if (isTransferAccepted) {\n const listener = args[1] as TransferAcceptedEvent;\n const newListener = (args: TransferEventArgs): void => {\n this._context.setAcceptedTransfer(this._call.id, {\n callId: args.targetCall.id,\n timestamp: new Date()\n });\n listener(args);\n };\n return target.on('transferAccepted', newListener);\n }\n };\n default:\n return Reflect.get(target, prop);\n }\n }\n}\n"]}
@@ -2,7 +2,6 @@
2
2
  // Licensed under the MIT License.
3
3
  import { Features } from '@azure/communication-calling';
4
4
  import { toFlatCommunicationIdentifier } from "../../acs-ui-common/src";
5
- /* @conditional-compile-remove(close-captions) */
6
5
  import { CaptionsFeatureSubscriber } from './CaptionsSubscriber';
7
6
  import { convertSdkLocalStreamToDeclarativeLocalStream, convertSdkParticipantToDeclarativeParticipant } from './Converter';
8
7
  import { LocalVideoStreamVideoEffectsSubscriber } from './LocalVideoStreamVideoEffectsSubscriber';
@@ -30,7 +29,6 @@ export class CallSubscriber {
30
29
  constructor(call, context, internalContext) {
31
30
  this.subscribe = () => {
32
31
  this._call.on('stateChanged', this.stateChanged);
33
- /* @conditional-compile-remove(close-captions) */
34
32
  this._call.on('stateChanged', this.initCaptionSubscriber);
35
33
  /* @conditional-compile-remove(local-recording-notification) */
36
34
  this._call.on('stateChanged', this.initLocalRecordingNotificationSubscriber);
@@ -56,7 +54,6 @@ export class CallSubscriber {
56
54
  this.unsubscribe = () => {
57
55
  var _a, _b, _c, _d;
58
56
  this._call.off('stateChanged', this.stateChanged);
59
- /* @conditional-compile-remove(close-captions) */
60
57
  this._call.off('stateChanged', this.initCaptionSubscriber);
61
58
  /* @conditional-compile-remove(local-recording-notification) */
62
59
  this._call.off('stateChanged', this.initLocalRecordingNotificationSubscriber);
@@ -97,7 +94,6 @@ export class CallSubscriber {
97
94
  this.stateChanged = () => {
98
95
  this._context.setCallState(this._callIdRef.callId, this._call.state);
99
96
  };
100
- /* @conditional-compile-remove(close-captions) */
101
97
  this.initCaptionSubscriber = () => {
102
98
  // subscribe to captions here so that we don't call captions when call is not initialized
103
99
  if (this._call.state === 'Connected' && !this._CaptionsFeatureSubscriber) {