@azure/communication-react 1.19.0-alpha-202408010015 → 1.19.0-alpha-202408030014
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.
- package/dist/communication-react.d.ts +39 -32
- package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-B0zbyF6Z.js → ChatMessageComponentAsRichTextEditBox-BBTJIosO.js} +52 -33
- package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-BBTJIosO.js.map +1 -0
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BVOysnsq.js → RichTextSendBoxWrapper-C1Ev6MKx.js} +3 -3
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-BVOysnsq.js.map → RichTextSendBoxWrapper-C1Ev6MKx.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{index-YIP5Cyt3.js → index-B74o7NiP.js} +587 -280
- package/dist/dist-cjs/communication-react/index-B74o7NiP.js.map +1 -0
- package/dist/dist-cjs/communication-react/index.js +2 -2
- package/dist/dist-esm/acs-ui-common/src/constants.d.ts +5 -0
- package/dist/dist-esm/acs-ui-common/src/constants.js +6 -0
- package/dist/dist-esm/acs-ui-common/src/constants.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/index.d.ts +1 -0
- package/dist/dist-esm/acs-ui-common/src/index.js +2 -0
- package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +1 -0
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +31 -9
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +5 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +6 -2
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +2 -1
- package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +6 -1
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +1 -1
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.d.ts +3 -3
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentWrapper.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.d.ts +3 -3
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsEditBoxPicker.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.d.ts +3 -3
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js +53 -32
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMessageComponentAsRichTextEditBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.d.ts +3 -3
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js +2 -2
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/ChatMyMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js +6 -6
- package/dist/dist-esm/react-components/src/components/ChatMessage/MyMessageComponents/FluentChatMyMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +18 -6
- package/dist/dist-esm/react-components/src/components/MessageThread.js +3 -3
- package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +18 -34
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.d.ts +14 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.js +56 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UndoRedoPlugin.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js +10 -16
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +85 -8
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +2 -2
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +16 -27
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +33 -35
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.d.ts +5 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js +15 -12
- package/dist/dist-esm/react-components/src/components/VideoGallery/LocalScreenShare.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.d.ts +9 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js +7 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/RemoteScreenShare.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +4 -4
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/index.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +3 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +34 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +121 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +15 -13
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +42 -32
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +1 -0
- package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
- package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +6 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +3 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.js +19 -6
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +21 -12
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.d.ts +5 -5
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js +61 -31
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ImageUpload/ImageUploadUtils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.d.ts +32 -2
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js +3 -3
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/constants.d.ts +5 -0
- package/dist/dist-esm/react-composites/src/composites/common/constants.js +6 -0
- package/dist/dist-esm/react-composites/src/composites/common/constants.js.map +1 -1
- package/package.json +6 -6
- package/dist/dist-cjs/communication-react/ChatMessageComponentAsRichTextEditBox-B0zbyF6Z.js.map +0 -1
- package/dist/dist-cjs/communication-react/index-YIP5Cyt3.js.map +0 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.d.ts +0 -22
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.js +0 -44
- package/dist/dist-esm/react-components/src/components/VideoGallery/styles/LocalScreenShare.styles.js.map +0 -1
@@ -125,6 +125,9 @@ const createCompositeHandlers = memoizeOne((adapter, capabilities) => {
|
|
125
125
|
onDisposeRemoteScreenShareStreamView: (userId) => __awaiter(void 0, void 0, void 0, function* () {
|
126
126
|
return adapter.disposeScreenShareStreamView(userId);
|
127
127
|
}),
|
128
|
+
onDisposeLocalScreenShareStreamView: () => __awaiter(void 0, void 0, void 0, function* () {
|
129
|
+
return adapter.disposeScreenShareStreamView('');
|
130
|
+
}),
|
128
131
|
onDisposeRemoteVideoStreamView: (userId) => __awaiter(void 0, void 0, void 0, function* () {
|
129
132
|
return adapter.disposeRemoteVideoStreamView(userId);
|
130
133
|
}),
|
package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map
CHANGED
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"useHandlers.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/hooks/useHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommonCallingHandlers } from '@internal/calling-component-bindings';\nimport { _ComponentCallingHandlers } from '@internal/calling-component-bindings';\nimport { CommonProperties, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { ReactElement } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CommonCallAdapter } from '..';\n\nimport { VideoBackgroundBlurEffect, VideoBackgroundReplacementEffect } from '..';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { isCameraOn } from '../utils';\nimport { DtmfTone } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { AddPhoneNumberOptions } from '@azure/communication-calling';\nimport { Reaction } from '@azure/communication-calling';\n\nimport type {\n BackgroundReplacementConfig,\n BackgroundBlurConfig,\n ParticipantCapabilities\n} from '@azure/communication-calling';\nimport { CallSurvey, CallSurveyResponse } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport {\n CommunicationIdentifier,\n CommunicationUserIdentifier,\n PhoneNumberIdentifier\n} from '@azure/communication-common';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { _toCommunicationIdentifier } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport const useHandlers = <PropsT>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _component: (props: PropsT) => ReactElement | null\n): Pick<CommonCallingHandlers, CommonProperties<CommonCallingHandlers, PropsT>> &\n Partial<_ComponentCallingHandlers> => {\n const adapter = useAdapter();\n const capabilities = adapter.getState().call?.capabilitiesFeature?.capabilities;\n return createCompositeHandlers(adapter, capabilities);\n};\n\nconst createCompositeHandlers = memoizeOne(\n (\n adapter: CommonCallAdapter,\n capabilities?: ParticipantCapabilities\n ): CommonCallingHandlers & Partial<_ComponentCallingHandlers> => {\n return {\n onCreateLocalStreamView: async (options) => {\n return await adapter.createStreamView(undefined, options);\n },\n onCreateRemoteStreamView: async (userId, options) => {\n return await adapter.createStreamView(userId, options);\n },\n onHangUp: async (forEveryone?: boolean) => {\n await adapter.leaveCall(forEveryone);\n },\n /* @conditional-compile-remove(PSTN-calls) */\n onToggleHold: async () => {\n return adapter.getState().call?.state === 'LocalHold' ? await adapter.resumeCall() : await adapter.holdCall();\n },\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant: async (\n participant: Partial<CommunicationUserIdentifier & PhoneNumberIdentifier>,\n options?: AddPhoneNumberOptions\n ) => {\n if ('communicationUserId' in participant) {\n return await adapter.addParticipant(participant as CommunicationUserIdentifier);\n } else if ('phoneNumber' in participant) {\n return await adapter.addParticipant(participant as PhoneNumberIdentifier, options);\n }\n },\n onSendDtmfTone: async (dtmfTone: DtmfTone) => {\n await adapter.sendDtmfTone(dtmfTone);\n },\n onRemoveParticipant: async (\n userId: string | /* @conditional-compile-remove(PSTN-calls) */ CommunicationIdentifier\n ) => {\n if (typeof userId === 'string') {\n await adapter.removeParticipant(userId);\n } else {\n /* @conditional-compile-remove(PSTN-calls) */\n await adapter.removeParticipant(_toCommunicationIdentifier(userId));\n }\n },\n onRaiseHand: async () => {\n await adapter.raiseHand();\n },\n onLowerHand: async () => {\n await adapter.lowerHand();\n },\n onToggleRaiseHand: async () => {\n adapter.getState().call?.raiseHand.localParticipantRaisedHand\n ? await adapter.lowerHand()\n : await adapter.raiseHand();\n },\n onReactionClick: async (reaction: Reaction) => {\n await adapter.onReactionClick(reaction);\n },\n onSelectCamera: async (deviceInfo, options) => {\n await adapter.setCamera(deviceInfo, options);\n },\n onSelectMicrophone: async (deviceInfo) => {\n await adapter.setMicrophone(deviceInfo);\n },\n onSelectSpeaker: async (deviceInfo) => {\n await adapter.setSpeaker(deviceInfo);\n },\n onStartCall: (participants, options?) => {\n const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));\n return adapter.startCall(rawIds, options);\n },\n onStartScreenShare: async () => {\n await adapter.startScreenShare();\n },\n onStopScreenShare: async () => {\n await adapter.stopScreenShare();\n },\n onToggleCamera: async (options) => {\n isCameraOn(adapter.getState()) ? await adapter.stopCamera() : await adapter.startCamera(options);\n },\n onToggleMicrophone: async () => {\n return adapter.getState().call?.isMuted ? await adapter.unmute() : await adapter.mute();\n },\n onToggleScreenShare: async () => {\n return adapter.getState().call?.isScreenSharingOn\n ? await adapter.stopScreenShare()\n : await adapter.startScreenShare();\n },\n onStartLocalVideo: async () => {\n if (adapter.getState().call) {\n return adapter.startCamera();\n }\n },\n onDisposeLocalStreamView: async () => {\n return adapter.disposeLocalVideoStreamView();\n },\n onDisposeRemoteStreamView: async (userId) => {\n return adapter.disposeStreamView(userId);\n },\n onDisposeRemoteScreenShareStreamView: async (userId) => {\n return adapter.disposeScreenShareStreamView(userId);\n },\n onDisposeRemoteVideoStreamView: async (userId) => {\n return adapter.disposeRemoteVideoStreamView(userId);\n },\n /* @conditional-compile-remove(call-readiness) */\n askDevicePermission: async (constrain) => {\n return adapter.askDevicePermission(constrain);\n },\n\n onRemoveVideoBackgroundEffects: async () => {\n return await adapter.stopVideoBackgroundEffects();\n },\n\n onBlurVideoBackground: async (backgroundBlurConfig?: BackgroundBlurConfig) => {\n const blurConfig: VideoBackgroundBlurEffect = {\n effectName: 'blur',\n ...backgroundBlurConfig\n };\n return await adapter.startVideoBackgroundEffect(blurConfig);\n },\n\n onReplaceVideoBackground: async (backgroundReplacementConfig: BackgroundReplacementConfig) => {\n const replacementConfig: VideoBackgroundReplacementEffect = {\n effectName: 'replacement',\n ...backgroundReplacementConfig\n };\n return await adapter.startVideoBackgroundEffect(replacementConfig);\n },\n onStartCaptions: async (options) => {\n await adapter.startCaptions(options);\n },\n onStopCaptions: async () => {\n await adapter.stopCaptions();\n },\n onSetSpokenLanguage: async (language) => {\n await adapter.setSpokenLanguage(language);\n },\n onSetCaptionLanguage: async (language) => {\n await adapter.setCaptionLanguage(language);\n },\n onSubmitSurvey: async (survey: CallSurvey): Promise<CallSurveyResponse | undefined> => {\n return await adapter.submitSurvey(survey);\n },\n onStartSpotlight: async (userIds?: string[]): Promise<void> => {\n await adapter.startSpotlight(userIds);\n },\n onStopSpotlight: async (userIds?: string[]): Promise<void> => {\n await adapter.stopSpotlight(userIds);\n },\n onStopAllSpotlight: async (): Promise<void> => {\n await adapter.stopAllSpotlight();\n },\n onStartLocalSpotlight: capabilities?.spotlightParticipant.isPresent\n ? async (): Promise<void> => {\n await adapter.startSpotlight();\n }\n : undefined,\n onStopLocalSpotlight: async (): Promise<void> => {\n await adapter.stopSpotlight();\n },\n onStartRemoteSpotlight: capabilities?.spotlightParticipant.isPresent\n ? async (userIds?: string[]): Promise<void> => {\n await adapter.startSpotlight(userIds);\n }\n : undefined,\n onStopRemoteSpotlight: capabilities?.removeParticipantsSpotlight.isPresent\n ? async (userIds?: string[]): Promise<void> => {\n await adapter.stopSpotlight(userIds);\n }\n : undefined,\n /* @conditional-compile-remove(soft-mute) */\n onMuteParticipant: async (userId: string): Promise<void> => {\n await adapter.muteParticipant(userId);\n },\n /* @conditional-compile-remove(soft-mute) */\n onMuteAllRemoteParticipants: async (): Promise<void> => {\n await adapter.muteAllRemoteParticipants();\n }\n };\n }\n);\n"]}
|
1
|
+
{"version":3,"file":"useHandlers.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/hooks/useHandlers.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { CommonCallingHandlers } from '@internal/calling-component-bindings';\nimport { _ComponentCallingHandlers } from '@internal/calling-component-bindings';\nimport { CommonProperties, toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\nimport { ReactElement } from 'react';\nimport memoizeOne from 'memoize-one';\nimport { CommonCallAdapter } from '..';\n\nimport { VideoBackgroundBlurEffect, VideoBackgroundReplacementEffect } from '..';\nimport { useAdapter } from '../adapter/CallAdapterProvider';\nimport { isCameraOn } from '../utils';\nimport { DtmfTone } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { AddPhoneNumberOptions } from '@azure/communication-calling';\nimport { Reaction } from '@azure/communication-calling';\n\nimport type {\n BackgroundReplacementConfig,\n BackgroundBlurConfig,\n ParticipantCapabilities\n} from '@azure/communication-calling';\nimport { CallSurvey, CallSurveyResponse } from '@azure/communication-calling';\n/* @conditional-compile-remove(PSTN-calls) */\nimport {\n CommunicationIdentifier,\n CommunicationUserIdentifier,\n PhoneNumberIdentifier\n} from '@azure/communication-common';\n/* @conditional-compile-remove(PSTN-calls) */\nimport { _toCommunicationIdentifier } from '@internal/acs-ui-common';\n\n/**\n * @private\n */\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types, @typescript-eslint/explicit-function-return-type\nexport const useHandlers = <PropsT>(\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n _component: (props: PropsT) => ReactElement | null\n): Pick<CommonCallingHandlers, CommonProperties<CommonCallingHandlers, PropsT>> &\n Partial<_ComponentCallingHandlers> => {\n const adapter = useAdapter();\n const capabilities = adapter.getState().call?.capabilitiesFeature?.capabilities;\n return createCompositeHandlers(adapter, capabilities);\n};\n\nconst createCompositeHandlers = memoizeOne(\n (\n adapter: CommonCallAdapter,\n capabilities?: ParticipantCapabilities\n ): CommonCallingHandlers & Partial<_ComponentCallingHandlers> => {\n return {\n onCreateLocalStreamView: async (options) => {\n return await adapter.createStreamView(undefined, options);\n },\n onCreateRemoteStreamView: async (userId, options) => {\n return await adapter.createStreamView(userId, options);\n },\n onHangUp: async (forEveryone?: boolean) => {\n await adapter.leaveCall(forEveryone);\n },\n /* @conditional-compile-remove(PSTN-calls) */\n onToggleHold: async () => {\n return adapter.getState().call?.state === 'LocalHold' ? await adapter.resumeCall() : await adapter.holdCall();\n },\n /* @conditional-compile-remove(PSTN-calls) */\n onAddParticipant: async (\n participant: Partial<CommunicationUserIdentifier & PhoneNumberIdentifier>,\n options?: AddPhoneNumberOptions\n ) => {\n if ('communicationUserId' in participant) {\n return await adapter.addParticipant(participant as CommunicationUserIdentifier);\n } else if ('phoneNumber' in participant) {\n return await adapter.addParticipant(participant as PhoneNumberIdentifier, options);\n }\n },\n onSendDtmfTone: async (dtmfTone: DtmfTone) => {\n await adapter.sendDtmfTone(dtmfTone);\n },\n onRemoveParticipant: async (\n userId: string | /* @conditional-compile-remove(PSTN-calls) */ CommunicationIdentifier\n ) => {\n if (typeof userId === 'string') {\n await adapter.removeParticipant(userId);\n } else {\n /* @conditional-compile-remove(PSTN-calls) */\n await adapter.removeParticipant(_toCommunicationIdentifier(userId));\n }\n },\n onRaiseHand: async () => {\n await adapter.raiseHand();\n },\n onLowerHand: async () => {\n await adapter.lowerHand();\n },\n onToggleRaiseHand: async () => {\n adapter.getState().call?.raiseHand.localParticipantRaisedHand\n ? await adapter.lowerHand()\n : await adapter.raiseHand();\n },\n onReactionClick: async (reaction: Reaction) => {\n await adapter.onReactionClick(reaction);\n },\n onSelectCamera: async (deviceInfo, options) => {\n await adapter.setCamera(deviceInfo, options);\n },\n onSelectMicrophone: async (deviceInfo) => {\n await adapter.setMicrophone(deviceInfo);\n },\n onSelectSpeaker: async (deviceInfo) => {\n await adapter.setSpeaker(deviceInfo);\n },\n onStartCall: (participants, options?) => {\n const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));\n return adapter.startCall(rawIds, options);\n },\n onStartScreenShare: async () => {\n await adapter.startScreenShare();\n },\n onStopScreenShare: async () => {\n await adapter.stopScreenShare();\n },\n onToggleCamera: async (options) => {\n isCameraOn(adapter.getState()) ? await adapter.stopCamera() : await adapter.startCamera(options);\n },\n onToggleMicrophone: async () => {\n return adapter.getState().call?.isMuted ? await adapter.unmute() : await adapter.mute();\n },\n onToggleScreenShare: async () => {\n return adapter.getState().call?.isScreenSharingOn\n ? await adapter.stopScreenShare()\n : await adapter.startScreenShare();\n },\n onStartLocalVideo: async () => {\n if (adapter.getState().call) {\n return adapter.startCamera();\n }\n },\n onDisposeLocalStreamView: async () => {\n return adapter.disposeLocalVideoStreamView();\n },\n onDisposeRemoteStreamView: async (userId) => {\n return adapter.disposeStreamView(userId);\n },\n onDisposeRemoteScreenShareStreamView: async (userId) => {\n return adapter.disposeScreenShareStreamView(userId);\n },\n onDisposeLocalScreenShareStreamView: async () => {\n return adapter.disposeScreenShareStreamView('');\n },\n onDisposeRemoteVideoStreamView: async (userId) => {\n return adapter.disposeRemoteVideoStreamView(userId);\n },\n /* @conditional-compile-remove(call-readiness) */\n askDevicePermission: async (constrain) => {\n return adapter.askDevicePermission(constrain);\n },\n\n onRemoveVideoBackgroundEffects: async () => {\n return await adapter.stopVideoBackgroundEffects();\n },\n\n onBlurVideoBackground: async (backgroundBlurConfig?: BackgroundBlurConfig) => {\n const blurConfig: VideoBackgroundBlurEffect = {\n effectName: 'blur',\n ...backgroundBlurConfig\n };\n return await adapter.startVideoBackgroundEffect(blurConfig);\n },\n\n onReplaceVideoBackground: async (backgroundReplacementConfig: BackgroundReplacementConfig) => {\n const replacementConfig: VideoBackgroundReplacementEffect = {\n effectName: 'replacement',\n ...backgroundReplacementConfig\n };\n return await adapter.startVideoBackgroundEffect(replacementConfig);\n },\n onStartCaptions: async (options) => {\n await adapter.startCaptions(options);\n },\n onStopCaptions: async () => {\n await adapter.stopCaptions();\n },\n onSetSpokenLanguage: async (language) => {\n await adapter.setSpokenLanguage(language);\n },\n onSetCaptionLanguage: async (language) => {\n await adapter.setCaptionLanguage(language);\n },\n onSubmitSurvey: async (survey: CallSurvey): Promise<CallSurveyResponse | undefined> => {\n return await adapter.submitSurvey(survey);\n },\n onStartSpotlight: async (userIds?: string[]): Promise<void> => {\n await adapter.startSpotlight(userIds);\n },\n onStopSpotlight: async (userIds?: string[]): Promise<void> => {\n await adapter.stopSpotlight(userIds);\n },\n onStopAllSpotlight: async (): Promise<void> => {\n await adapter.stopAllSpotlight();\n },\n onStartLocalSpotlight: capabilities?.spotlightParticipant.isPresent\n ? async (): Promise<void> => {\n await adapter.startSpotlight();\n }\n : undefined,\n onStopLocalSpotlight: async (): Promise<void> => {\n await adapter.stopSpotlight();\n },\n onStartRemoteSpotlight: capabilities?.spotlightParticipant.isPresent\n ? async (userIds?: string[]): Promise<void> => {\n await adapter.startSpotlight(userIds);\n }\n : undefined,\n onStopRemoteSpotlight: capabilities?.removeParticipantsSpotlight.isPresent\n ? async (userIds?: string[]): Promise<void> => {\n await adapter.stopSpotlight(userIds);\n }\n : undefined,\n /* @conditional-compile-remove(soft-mute) */\n onMuteParticipant: async (userId: string): Promise<void> => {\n await adapter.muteParticipant(userId);\n },\n /* @conditional-compile-remove(soft-mute) */\n onMuteAllRemoteParticipants: async (): Promise<void> => {\n await adapter.muteAllRemoteParticipants();\n }\n };\n }\n);\n"]}
|
@@ -8,12 +8,7 @@ import { useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
|
8
8
|
*/
|
9
9
|
export const useTrackedCapabilityChangedNotifications = (capabilitiesChangedAndRoleInfo) => {
|
10
10
|
const [trackedCapabilityChangedNotifications, setTrackedCapabilityChangedNotifications] = useState({});
|
11
|
-
|
12
|
-
// share screen capability changed info from the Calling SDK when joining Teams interop will be ignored because
|
13
|
-
// being able to share screen is assumed by default. This is inline with what Teams is doing.
|
14
|
-
const activeNotifications = useRef({
|
15
|
-
shareScreen: { capabilityName: 'shareScreen', isPresent: true, changedReason: 'RoleChanged' }
|
16
|
-
});
|
11
|
+
const activeNotifications = useRef({});
|
17
12
|
useEffect(() => {
|
18
13
|
activeNotifications.current = updateLatestCapabilityChangedNotificationMap(capabilitiesChangedAndRoleInfo, activeNotifications.current);
|
19
14
|
setTrackedCapabilityChangedNotifications((prev) => updateTrackedCapabilityChangedNotificationsWithActiveNotifications(prev, Object.values(activeNotifications.current)));
|
@@ -87,6 +82,24 @@ const updateLatestCapabilityChangedNotificationMap = (capabilitiesChangedInfoAnd
|
|
87
82
|
((_b = activeNotifications[capabilityName]) === null || _b === void 0 ? void 0 : _b.changedReason)) {
|
88
83
|
continue;
|
89
84
|
}
|
85
|
+
// All initial values of capabilities are not present with reason 'FeatureNotSupported'. So we should not show a
|
86
|
+
// notification for them when they initially become present at the start of the call
|
87
|
+
const oldCapabilityValue = capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.oldValue[capabilityName];
|
88
|
+
if (newCapabilityValue.isPresent === true &&
|
89
|
+
(oldCapabilityValue === null || oldCapabilityValue === void 0 ? void 0 : oldCapabilityValue.isPresent) === false &&
|
90
|
+
(oldCapabilityValue === null || oldCapabilityValue === void 0 ? void 0 : oldCapabilityValue.reason) === 'FeatureNotSupported' &&
|
91
|
+
capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === 'MeetingOptionOrOrganizerPolicyChanged') {
|
92
|
+
continue;
|
93
|
+
}
|
94
|
+
// Do not show the first time the screenshare capability is present when the user's role is resolved to mirror
|
95
|
+
// Teams behaviour
|
96
|
+
if (capabilityName === 'shareScreen' &&
|
97
|
+
activeNotifications['shareScreen'] === undefined &&
|
98
|
+
newCapabilityValue.isPresent === true &&
|
99
|
+
(oldCapabilityValue === null || oldCapabilityValue === void 0 ? void 0 : oldCapabilityValue.isPresent) === false &&
|
100
|
+
capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === 'RoleChanged') {
|
101
|
+
continue;
|
102
|
+
}
|
90
103
|
const newCapabilityChangeNotification = {
|
91
104
|
capabilityName: capabilityName,
|
92
105
|
isPresent: newCapabilityValue.isPresent,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"TrackCapabilityChangedNotifications.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { CapabilitiesChangeInfo, ParticipantCapabilityName, ParticipantRole } from '@azure/communication-calling';\n\nimport {\n CapabalityChangedNotification,\n CapabilitiesChangeNotificationBarProps\n} from '../components/CapabilitiesChangedNotificationBar';\n\nimport { TrackedCapabilityChangedNotifications } from '../types/CapabilityChangedNotificationTracking';\n\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const useTrackedCapabilityChangedNotifications = (\n capabilitiesChangedAndRoleInfo: CapabilitiesChangedInfoAndRole\n): CapabilitiesChangeNotificationBarProps => {\n const [trackedCapabilityChangedNotifications, setTrackedCapabilityChangedNotifications] =\n useState<TrackedCapabilityChangedNotifications>({});\n\n // Initialize a share screen capability changed notification with 'RoleChanged' reason so that the initial\n // share screen capability changed info from the Calling SDK when joining Teams interop will be ignored because\n // being able to share screen is assumed by default. This is inline with what Teams is doing.\n const activeNotifications = useRef<LatestCapabilityChangedNotificationRecord>({\n shareScreen: { capabilityName: 'shareScreen', isPresent: true, changedReason: 'RoleChanged' }\n });\n\n useEffect(() => {\n activeNotifications.current = updateLatestCapabilityChangedNotificationMap(\n capabilitiesChangedAndRoleInfo,\n activeNotifications.current\n );\n setTrackedCapabilityChangedNotifications((prev) =>\n updateTrackedCapabilityChangedNotificationsWithActiveNotifications(\n prev,\n Object.values(activeNotifications.current)\n )\n );\n }, [capabilitiesChangedAndRoleInfo]);\n\n const onDismissCapabilityChangedNotification = useCallback((notification: CapabalityChangedNotification) => {\n setTrackedCapabilityChangedNotifications((prev) =>\n trackCapabilityChangedNotificationAsDismissed(notification.capabilityName, prev)\n );\n }, []);\n\n const latestCapabilityChangedNotifications = useMemo(\n () =>\n filterLatestCapabilityChangedNotifications(\n Object.values(activeNotifications.current),\n trackedCapabilityChangedNotifications\n ),\n [trackedCapabilityChangedNotifications]\n );\n\n return {\n capabilitiesChangedNotifications: latestCapabilityChangedNotifications,\n onDismissNotification: onDismissCapabilityChangedNotification\n };\n};\n\n/**\n * Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.\n *\n * @private\n */\nexport const filterLatestCapabilityChangedNotifications = (\n activeNotifications: CapabalityChangedNotification[],\n trackedNotifications: TrackedCapabilityChangedNotifications\n): CapabalityChangedNotification[] => {\n const filteredNotifications = activeNotifications.filter((activeNotification) => {\n const trackedNotification = trackedNotifications[activeNotification.capabilityName];\n return (\n !trackedNotification ||\n !trackedNotification.lastDismissedAt ||\n trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive\n );\n });\n return filteredNotifications;\n};\n\n/**\n * Maintain a record of the most recently active notification for each capability name.\n *\n * @private\n */\nexport const updateTrackedCapabilityChangedNotificationsWithActiveNotifications = (\n existingTrackedNotifications: TrackedCapabilityChangedNotifications,\n activeNotifications: CapabalityChangedNotification[]\n): TrackedCapabilityChangedNotifications => {\n const trackedNotifications: TrackedCapabilityChangedNotifications = {};\n\n // Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.\n for (const activeNotification of activeNotifications) {\n const existingTrackedNotification = existingTrackedNotifications[activeNotification.capabilityName];\n trackedNotifications[activeNotification.capabilityName] = {\n mostRecentlyActive:\n activeNotification.timestamp ?? existingTrackedNotification?.mostRecentlyActive ?? new Date(Date.now()),\n lastDismissedAt: existingTrackedNotification?.lastDismissedAt\n };\n }\n\n return trackedNotifications;\n};\n\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const trackCapabilityChangedNotificationAsDismissed = (\n capabilityName: ParticipantCapabilityName,\n trackedNotifications: TrackedCapabilityChangedNotifications\n): TrackedCapabilityChangedNotifications => {\n const now = new Date(Date.now());\n const existingNotification = trackedNotifications[capabilityName];\n\n return {\n ...trackedNotifications,\n [capabilityName]: {\n ...(existingNotification || {}),\n lastDismissedAt: now\n }\n };\n};\n\ninterface CapabilitiesChangedInfoAndRole {\n capabilitiesChangeInfo?: CapabilitiesChangeInfo;\n participantRole?: ParticipantRole;\n}\n\ntype LatestCapabilityChangedNotificationRecord = Partial<\n Record<ParticipantCapabilityName, CapabalityChangedNotification>\n>;\n\nconst updateLatestCapabilityChangedNotificationMap = (\n capabilitiesChangedInfoAndRole: CapabilitiesChangedInfoAndRole,\n activeNotifications: LatestCapabilityChangedNotificationRecord\n): LatestCapabilityChangedNotificationRecord => {\n if (!capabilitiesChangedInfoAndRole.capabilitiesChangeInfo) {\n return activeNotifications;\n }\n\n for (const [capabilityKey, newCapabilityValue] of Object.entries(\n capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.newValue\n )) {\n // Cast is safe because we are iterating over the enum keys on the object.entries where\n // newCapabilityValue typing is correctly returned. Object.entries limitations\n // always returns string for the key\n const capabilityName = capabilityKey as ParticipantCapabilityName;\n // If the active notification for a capability has the same `isPresent` value and the same reason as the new\n // capability value from the SDK then we will not create a new notification to avoid redundancy\n if (\n activeNotifications[capabilityName] &&\n newCapabilityValue.isPresent === activeNotifications[capabilityName]?.isPresent &&\n capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason ===\n activeNotifications[capabilityName]?.changedReason\n ) {\n continue;\n }\n const newCapabilityChangeNotification: CapabalityChangedNotification = {\n capabilityName: capabilityName,\n isPresent: newCapabilityValue.isPresent,\n changedReason: capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason,\n role: capabilitiesChangedInfoAndRole.participantRole,\n timestamp: new Date(Date.now())\n };\n activeNotifications[capabilityName] = newCapabilityChangeNotification;\n }\n return activeNotifications;\n};\n"]}
|
1
|
+
{"version":3,"file":"TrackCapabilityChangedNotifications.js","sourceRoot":"","sources":["../../../../../../../../react-composites/src/composites/CallComposite/utils/TrackCapabilityChangedNotifications.ts"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { useCallback, useEffect, useMemo, useRef, useState } from 'react';\n\nimport { CapabilitiesChangeInfo, ParticipantCapabilityName, ParticipantRole } from '@azure/communication-calling';\n\nimport {\n CapabalityChangedNotification,\n CapabilitiesChangeNotificationBarProps\n} from '../components/CapabilitiesChangedNotificationBar';\n\nimport { TrackedCapabilityChangedNotifications } from '../types/CapabilityChangedNotificationTracking';\n\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const useTrackedCapabilityChangedNotifications = (\n capabilitiesChangedAndRoleInfo: CapabilitiesChangedInfoAndRole\n): CapabilitiesChangeNotificationBarProps => {\n const [trackedCapabilityChangedNotifications, setTrackedCapabilityChangedNotifications] =\n useState<TrackedCapabilityChangedNotifications>({});\n\n const activeNotifications = useRef<LatestCapabilityChangedNotificationRecord>({});\n\n useEffect(() => {\n activeNotifications.current = updateLatestCapabilityChangedNotificationMap(\n capabilitiesChangedAndRoleInfo,\n activeNotifications.current\n );\n setTrackedCapabilityChangedNotifications((prev) =>\n updateTrackedCapabilityChangedNotificationsWithActiveNotifications(\n prev,\n Object.values(activeNotifications.current)\n )\n );\n }, [capabilitiesChangedAndRoleInfo]);\n\n const onDismissCapabilityChangedNotification = useCallback((notification: CapabalityChangedNotification) => {\n setTrackedCapabilityChangedNotifications((prev) =>\n trackCapabilityChangedNotificationAsDismissed(notification.capabilityName, prev)\n );\n }, []);\n\n const latestCapabilityChangedNotifications = useMemo(\n () =>\n filterLatestCapabilityChangedNotifications(\n Object.values(activeNotifications.current),\n trackedCapabilityChangedNotifications\n ),\n [trackedCapabilityChangedNotifications]\n );\n\n return {\n capabilitiesChangedNotifications: latestCapabilityChangedNotifications,\n onDismissNotification: onDismissCapabilityChangedNotification\n };\n};\n\n/**\n * Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.\n *\n * @private\n */\nexport const filterLatestCapabilityChangedNotifications = (\n activeNotifications: CapabalityChangedNotification[],\n trackedNotifications: TrackedCapabilityChangedNotifications\n): CapabalityChangedNotification[] => {\n const filteredNotifications = activeNotifications.filter((activeNotification) => {\n const trackedNotification = trackedNotifications[activeNotification.capabilityName];\n return (\n !trackedNotification ||\n !trackedNotification.lastDismissedAt ||\n trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive\n );\n });\n return filteredNotifications;\n};\n\n/**\n * Maintain a record of the most recently active notification for each capability name.\n *\n * @private\n */\nexport const updateTrackedCapabilityChangedNotificationsWithActiveNotifications = (\n existingTrackedNotifications: TrackedCapabilityChangedNotifications,\n activeNotifications: CapabalityChangedNotification[]\n): TrackedCapabilityChangedNotifications => {\n const trackedNotifications: TrackedCapabilityChangedNotifications = {};\n\n // Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.\n for (const activeNotification of activeNotifications) {\n const existingTrackedNotification = existingTrackedNotifications[activeNotification.capabilityName];\n trackedNotifications[activeNotification.capabilityName] = {\n mostRecentlyActive:\n activeNotification.timestamp ?? existingTrackedNotification?.mostRecentlyActive ?? new Date(Date.now()),\n lastDismissedAt: existingTrackedNotification?.lastDismissedAt\n };\n }\n\n return trackedNotifications;\n};\n\n/**\n * Create a record for when the notification was most recently dismissed for tracking dismissed notifications.\n *\n * @private\n */\nexport const trackCapabilityChangedNotificationAsDismissed = (\n capabilityName: ParticipantCapabilityName,\n trackedNotifications: TrackedCapabilityChangedNotifications\n): TrackedCapabilityChangedNotifications => {\n const now = new Date(Date.now());\n const existingNotification = trackedNotifications[capabilityName];\n\n return {\n ...trackedNotifications,\n [capabilityName]: {\n ...(existingNotification || {}),\n lastDismissedAt: now\n }\n };\n};\n\ninterface CapabilitiesChangedInfoAndRole {\n capabilitiesChangeInfo?: CapabilitiesChangeInfo;\n participantRole?: ParticipantRole;\n}\n\ntype LatestCapabilityChangedNotificationRecord = Partial<\n Record<ParticipantCapabilityName, CapabalityChangedNotification>\n>;\n\nconst updateLatestCapabilityChangedNotificationMap = (\n capabilitiesChangedInfoAndRole: CapabilitiesChangedInfoAndRole,\n activeNotifications: LatestCapabilityChangedNotificationRecord\n): LatestCapabilityChangedNotificationRecord => {\n if (!capabilitiesChangedInfoAndRole.capabilitiesChangeInfo) {\n return activeNotifications;\n }\n\n for (const [capabilityKey, newCapabilityValue] of Object.entries(\n capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.newValue\n )) {\n // Cast is safe because we are iterating over the enum keys on the object.entries where\n // newCapabilityValue typing is correctly returned. Object.entries limitations\n // always returns string for the key\n const capabilityName = capabilityKey as ParticipantCapabilityName;\n // If the active notification for a capability has the same `isPresent` value and the same reason as the new\n // capability value from the SDK then we will not create a new notification to avoid redundancy\n if (\n activeNotifications[capabilityName] &&\n newCapabilityValue.isPresent === activeNotifications[capabilityName]?.isPresent &&\n capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason ===\n activeNotifications[capabilityName]?.changedReason\n ) {\n continue;\n }\n\n // All initial values of capabilities are not present with reason 'FeatureNotSupported'. So we should not show a\n // notification for them when they initially become present at the start of the call\n const oldCapabilityValue = capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.oldValue[capabilityName];\n if (\n newCapabilityValue.isPresent === true &&\n oldCapabilityValue?.isPresent === false &&\n oldCapabilityValue?.reason === 'FeatureNotSupported' &&\n capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === 'MeetingOptionOrOrganizerPolicyChanged'\n ) {\n continue;\n }\n\n // Do not show the first time the screenshare capability is present when the user's role is resolved to mirror\n // Teams behaviour\n if (\n capabilityName === 'shareScreen' &&\n activeNotifications['shareScreen'] === undefined &&\n newCapabilityValue.isPresent === true &&\n oldCapabilityValue?.isPresent === false &&\n capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason === 'RoleChanged'\n ) {\n continue;\n }\n\n const newCapabilityChangeNotification: CapabalityChangedNotification = {\n capabilityName: capabilityName,\n isPresent: newCapabilityValue.isPresent,\n changedReason: capabilitiesChangedInfoAndRole.capabilitiesChangeInfo.reason,\n role: capabilitiesChangedInfoAndRole.participantRole,\n timestamp: new Date(Date.now())\n };\n activeNotifications[capabilityName] = newCapabilityChangeNotification;\n }\n return activeNotifications;\n};\n"]}
|
@@ -44,7 +44,7 @@ import { SendBoxPicker } from '../common/SendBoxPicker';
|
|
44
44
|
/* @conditional-compile-remove(rich-text-editor-composite-support) */
|
45
45
|
import { loadRichTextSendBox } from '../common/SendBoxPicker';
|
46
46
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
47
|
-
import {
|
47
|
+
import { cancelInlineImageUpload, getEditBoxMessagesInlineImages, getImageFileNameFromAttributes, getSendBoxInlineImages, onInsertInlineImageForEditBox, onInsertInlineImageForSendBox, updateContentStringWithUploadedInlineImages } from './ImageUpload/ImageUploadUtils';
|
48
48
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
49
49
|
import { isMicrosoftTeamsUserIdentifier } from '@azure/communication-common';
|
50
50
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
@@ -338,6 +338,8 @@ export const ChatScreen = (props) => {
|
|
338
338
|
/* @conditional-compile-remove(file-sharing-acs) */ /* @conditional-compile-remove(rich-text-editor-composite-support) */ options) {
|
339
339
|
return __awaiter(this, void 0, void 0, function* () {
|
340
340
|
var _a;
|
341
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
342
|
+
content = updateContentStringWithUploadedInlineImages(content, sendBoxInlineImageUploads);
|
341
343
|
/* @conditional-compile-remove(file-sharing-acs) */
|
342
344
|
const attachments = (_a = options === null || options === void 0 ? void 0 : options.attachments) !== null && _a !== void 0 ? _a : [];
|
343
345
|
/* @conditional-compile-remove(file-sharing-acs) */
|
@@ -360,10 +362,16 @@ export const ChatScreen = (props) => {
|
|
360
362
|
type: options === null || options === void 0 ? void 0 : options.type
|
361
363
|
});
|
362
364
|
});
|
363
|
-
}, [
|
365
|
+
}, [
|
366
|
+
adapter,
|
367
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ handleSendBoxInlineImageUploadAction,
|
368
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ sendBoxInlineImageUploads
|
369
|
+
]);
|
364
370
|
const onUpdateMessageHandler = useCallback(function (messageId, content,
|
365
371
|
/* @conditional-compile-remove(file-sharing-acs) */ options) {
|
366
372
|
return __awaiter(this, void 0, void 0, function* () {
|
373
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
374
|
+
content = updateContentStringWithUploadedInlineImages(content, editBoxInlineImageUploads, messageId);
|
367
375
|
yield messageThreadProps.onUpdateMessage(messageId, content,
|
368
376
|
/* @conditional-compile-remove(file-sharing-acs) */ options);
|
369
377
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
@@ -371,6 +379,7 @@ export const ChatScreen = (props) => {
|
|
371
379
|
});
|
372
380
|
}, [
|
373
381
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */ handleEditBoxInlineImageUploadAction,
|
382
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ editBoxInlineImageUploads,
|
374
383
|
messageThreadProps
|
375
384
|
]);
|
376
385
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
@@ -404,14 +413,14 @@ export const ChatScreen = (props) => {
|
|
404
413
|
return (options === null || options === void 0 ? void 0 : options.richTextEditor)
|
405
414
|
? Object.assign(Object.assign({}, richTextEditorOptions), {
|
406
415
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
407
|
-
onInsertInlineImage: (
|
408
|
-
onInsertInlineImageForEditBox(
|
416
|
+
onInsertInlineImage: (imageAttributes, messageId) => {
|
417
|
+
onInsertInlineImageForEditBox(imageAttributes, getImageFileNameFromAttributes(imageAttributes), messageId, adapter, handleEditBoxInlineImageUploadAction, localeStrings.chat);
|
409
418
|
},
|
410
419
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
411
|
-
|
420
|
+
messagesInlineImagesWithProgress: getEditBoxMessagesInlineImages(editBoxInlineImageUploads),
|
412
421
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
413
|
-
|
414
|
-
|
422
|
+
onRemoveInlineImage: (imageAttributes, messageId) => {
|
423
|
+
cancelInlineImageUpload(imageAttributes, editBoxInlineImageUploads, messageId, handleEditBoxInlineImageUploadAction, adapter);
|
415
424
|
} }) : undefined;
|
416
425
|
}, [
|
417
426
|
options === null || options === void 0 ? void 0 : options.richTextEditor,
|
@@ -425,14 +434,14 @@ export const ChatScreen = (props) => {
|
|
425
434
|
return (options === null || options === void 0 ? void 0 : options.richTextEditor)
|
426
435
|
? Object.assign(Object.assign({}, richTextEditorOptions), {
|
427
436
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
428
|
-
onInsertInlineImage: (
|
429
|
-
onInsertInlineImageForSendBox(
|
437
|
+
onInsertInlineImage: (imageAttributes) => {
|
438
|
+
onInsertInlineImageForSendBox(imageAttributes, getImageFileNameFromAttributes(imageAttributes), adapter, handleSendBoxInlineImageUploadAction, localeStrings.chat);
|
430
439
|
},
|
431
440
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
432
|
-
|
441
|
+
inlineImagesWithProgress: getSendBoxInlineImages(sendBoxInlineImageUploads),
|
433
442
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
434
|
-
|
435
|
-
|
443
|
+
onRemoveInlineImage: (imageAttributes) => {
|
444
|
+
cancelInlineImageUpload(imageAttributes, sendBoxInlineImageUploads, SEND_BOX_UPLOADS_KEY_VALUE, handleSendBoxInlineImageUploadAction, adapter);
|
436
445
|
} }) : undefined;
|
437
446
|
}, [
|
438
447
|
options === null || options === void 0 ? void 0 : options.richTextEditor,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"ChatScreen.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/ChatComposite/ChatScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isIOS } from '@fluentui/react';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { PersonaSize } from '@fluentui/react';\nimport {\n CommunicationParticipant,\n ErrorBar,\n MessageProps,\n MessageRenderer,\n MessageThread,\n MessageThreadStyles,\n ParticipantMenuItemsCallback,\n SendBoxStylesProps,\n TypingIndicator,\n TypingIndicatorStylesProps,\n useTheme\n} from '@internal/react-components';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { ChatMessage } from '@internal/react-components';\nimport React, { useCallback, useEffect, useMemo } from 'react';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { useReducer } from 'react';\nimport { useState } from 'react';\nimport { AvatarPersona, AvatarPersonaDataCallback, AvatarPersonaProps } from '../common/AvatarPersona';\nimport { useAdapter } from './adapter/ChatAdapterProvider';\nimport { ChatCompositeOptions } from './ChatComposite';\nimport { ChatHeader, getHeaderProps } from './ChatHeader';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentUploadButtonWrapper as AttachmentUploadButton } from './file-sharing';\nimport { useAdaptedSelector } from './hooks/useAdaptedSelector';\nimport { usePropsFor } from './hooks/usePropsFor';\n\nimport {\n chatArea,\n chatContainer,\n chatWrapper,\n messageThreadChatCompositeStyles,\n sendboxContainerStyles,\n typingIndicatorContainerStyles\n} from './styles/Chat.styles';\nimport { participantListContainerPadding } from '../common/styles/ParticipantContainer.styles';\n/* @conditional-compile-remove(chat-composite-participant-pane) */\nimport { ChatScreenPeoplePane } from './ChatScreenPeoplePane';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { removeImageTags } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentDownloadErrorBar } from './AttachmentDownloadErrorBar';\nimport { _AttachmentDownloadCards } from '@internal/react-components';\nimport { ImageOverlay } from '@internal/react-components';\nimport { InlineImage } from '@internal/react-components';\nimport { ResourceFetchResult } from '@internal/chat-stateful-client';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentOptions } from '@internal/react-components';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { nanoid } from 'nanoid';\n/* @conditional-compile-remove(file-sharing-acs) */\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { AttachmentUploadActionType, AttachmentUpload, AttachmentUploadReducer } from './file-sharing/AttachmentUpload';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { MessageOptions } from '@internal/acs-ui-common';\nimport { SendBoxPicker } from '../common/SendBoxPicker';\n/* @conditional-compile-remove(rich-text-editor-composite-support) */\nimport { loadRichTextSendBox } from '../common/SendBoxPicker';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport {\n getEditBoxMessagesInlineImages,\n getSendBoxInlineImages,\n onCancelInlineImageUploadHandlerForEditBox,\n onCancelInlineImageUploadHandlerForSendBox,\n onInsertInlineImageForEditBox,\n onInsertInlineImageForSendBox\n} from './ImageUpload/ImageUploadUtils';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport type { ChatAdapterState } from './adapter/ChatAdapter';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { isMicrosoftTeamsUserIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { SEND_BOX_UPLOADS_KEY_VALUE } from '../common/constants';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { ImageUploadReducer } from './ImageUpload/ImageUploadReducer';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { useLocale } from '../localization';\n\n/**\n * @private\n */\nexport type ChatScreenProps = {\n options?: ChatCompositeOptions;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onRenderMessage?: (messageProps: MessageProps, defaultOnRender?: MessageRenderer) => JSX.Element;\n onRenderTypingIndicator?: (typingUsers: CommunicationParticipant[]) => JSX.Element;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n styles?: ChatScreenStyles;\n /* @conditional-compile-remove(file-sharing-acs) */\n attachmentOptions?: AttachmentOptions;\n formFactor?: 'desktop' | 'mobile';\n};\n\n/**\n * @private\n */\nexport type ChatScreenStyles = {\n messageThread?: MessageThreadStyles;\n sendBox?: SendBoxStylesProps;\n typingIndicator?: TypingIndicatorStylesProps;\n};\n\n/**\n * @private\n */\ninterface OverlayImageItem {\n imageSrc: string;\n title: string;\n titleIcon: JSX.Element;\n attachmentId: string;\n messageId: string;\n imageUrl: string;\n}\n\n/**\n * @private\n */\nexport const ChatScreen = (props: ChatScreenProps): JSX.Element => {\n const {\n onFetchAvatarPersonaData,\n onRenderMessage,\n onRenderTypingIndicator,\n options,\n styles,\n /* @conditional-compile-remove(file-sharing-acs) */\n attachmentOptions,\n formFactor\n } = props;\n\n const defaultNumberOfChatMessagesToReload = 5;\n /* @conditional-compile-remove(file-sharing-acs) */\n const [downloadErrorMessage, setDownloadErrorMessage] = React.useState('');\n const [overlayImageItem, setOverlayImageItem] = useState<OverlayImageItem>();\n const [isImageOverlayOpen, setIsImageOverlayOpen] = useState<boolean>(false);\n /* @conditional-compile-remove(file-sharing-acs) */\n const [uploads, handleUploadAction] = useReducer(AttachmentUploadReducer, []);\n const adapter = useAdapter();\n const theme = useTheme();\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const localeStrings = useLocale().strings;\n\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [textOnlyChat, setTextOnlyChat] = useState(false);\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [isACSChat, setIsACSChat] = useState(false);\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [editBoxInlineImageUploads, handleEditBoxInlineImageUploadAction] = useReducer(ImageUploadReducer, undefined);\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [sendBoxInlineImageUploads, handleSendBoxInlineImageUploadAction] = useReducer(ImageUploadReducer, undefined);\n\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n useEffect(() => {\n const updateChatState = (newState: ChatAdapterState): void => {\n setTextOnlyChat(newState.thread.properties?.messagingPolicy?.textOnlyChat === true);\n if (newState.thread.properties?.createdBy) {\n setIsACSChat(!isMicrosoftTeamsUserIdentifier(newState.thread.properties?.createdBy));\n }\n };\n // set initial state for textOnlyChat and isACSChat\n updateChatState(adapter.getState());\n\n adapter.onStateChange(updateChatState);\n return () => {\n adapter.offStateChange(updateChatState);\n };\n }, [adapter]);\n\n useEffect(() => {\n // Initial data should be always fetched by the composite(or external caller) instead of the adapter\n const fetchData: () => Promise<void> = async () => {\n // Fetch initial data for adapter\n await adapter.fetchInitialData();\n // Fetch initial set of messages. Without fetching messages here, if the Composite's adapter is changed the message thread does not load new messages.\n await adapter.loadPreviousChatMessages(defaultNumberOfChatMessagesToReload);\n };\n fetchData();\n }, [adapter]);\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n useEffect(() => {\n // if rich text editor is enabled, the rich text editor component should be loaded early for good UX\n if (options?.richTextEditor) {\n // this line is needed to load the Rooster JS dependencies early in the lifecycle\n // when the rich text editor is enabled\n loadRichTextSendBox();\n }\n }, [options?.richTextEditor]);\n\n const messageThreadProps = usePropsFor(MessageThread);\n const typingIndicatorProps = usePropsFor(TypingIndicator);\n const headerProps = useAdaptedSelector(getHeaderProps);\n const errorBarProps = usePropsFor(ErrorBar);\n\n useEffect(() => {\n if (overlayImageItem === undefined) {\n return;\n }\n const message = adapter.getState().thread.chatMessages[overlayImageItem.messageId];\n if (message === undefined) {\n return;\n }\n const resourceCache = message.resourceCache;\n if (overlayImageItem.imageSrc === '' && resourceCache && resourceCache[overlayImageItem.imageUrl]) {\n const fullSizeImageSrc = getResourceSourceUrl(resourceCache[overlayImageItem.imageUrl]);\n if (fullSizeImageSrc === undefined || fullSizeImageSrc === '' || overlayImageItem.imageSrc === fullSizeImageSrc) {\n return;\n }\n setOverlayImageItem({\n ...overlayImageItem,\n imageSrc: fullSizeImageSrc\n });\n }\n // Disable eslint because we are using the overlayImageItem in this effect but don't want to have it as a dependency, as it will cause an infinite loop.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageThreadProps.messages]);\n\n const getResourceSourceUrl = (result: ResourceFetchResult): string => {\n let src = '';\n if (result.error || !result.sourceUrl) {\n src = 'blob://';\n } else {\n src = result.sourceUrl;\n }\n\n return src;\n };\n\n const onRenderAvatarCallback = useCallback(\n (userId?: string, defaultOptions?: AvatarPersonaProps) => {\n return (\n <AvatarPersona\n userId={userId}\n hidePersonaDetails={true}\n {...defaultOptions}\n dataProvider={onFetchAvatarPersonaData}\n />\n );\n },\n [onFetchAvatarPersonaData]\n );\n\n const messageThreadStyles = useMemo(() => {\n return Object.assign(\n {},\n messageThreadChatCompositeStyles(theme.semanticColors.bodyBackground),\n styles?.messageThread\n );\n }, [styles?.messageThread, theme.semanticColors.bodyBackground]);\n\n const typingIndicatorStyles = useMemo(() => {\n return Object.assign({}, styles?.typingIndicator);\n }, [styles?.typingIndicator]);\n\n const sendBoxStyles = useMemo(() => {\n return Object.assign({}, styles?.sendBox);\n }, [styles?.sendBox]);\n\n const userId = toFlatCommunicationIdentifier(adapter.getState().userId);\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const setKeyboardFocusAfterFileSelection = useCallback(() => {\n // look up sendbox by ID for now, we will use `useRef`\n // once attachment button is moved inside of send box component\n // see ADO workitem #3764245\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n if (props.options?.richTextEditor) {\n const richTextSendBox = document?.querySelector(`[id=\"richTextSendBox\"]`) as HTMLDivElement;\n richTextSendBox?.focus();\n return;\n }\n const sendBox = document?.querySelector(`[id=\"sendbox\"]`) as HTMLTextAreaElement;\n // set send box on focus after file selection per A11y requirement\n sendBox?.focus();\n }, [\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n props.options?.richTextEditor\n ]);\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachmentUploadButtonOnChange = useCallback(\n (files: FileList | null): void => {\n setKeyboardFocusAfterFileSelection();\n\n if (!files) {\n return;\n }\n\n // Get files, change to tasks, store locally and pass back to Contoso\n const newUploads = Array.from(files).map((file): AttachmentUpload => {\n const taskId = nanoid();\n return {\n file,\n taskId,\n metadata: {\n id: taskId,\n name: file.name,\n progress: 0\n },\n notifyUploadProgressChanged: (value: number) => {\n handleUploadAction({ type: AttachmentUploadActionType.Progress, taskId, progress: value });\n },\n notifyUploadCompleted: (id: string, url: string) => {\n handleUploadAction({ type: AttachmentUploadActionType.Completed, taskId, id, url });\n },\n notifyUploadFailed: (message: string) => {\n handleUploadAction({ type: AttachmentUploadActionType.Failed, taskId, message });\n // remove the failed upload task when error banner is auto dismissed after 10 seconds\n // so the banner won't be shown again on UI re-rendering.\n setTimeout(() => {\n handleUploadAction({ type: AttachmentUploadActionType.Remove, id: taskId });\n }, 10 * 1000);\n }\n };\n });\n\n handleUploadAction({ type: AttachmentUploadActionType.Set, newUploads });\n attachmentOptions?.uploadOptions?.handleAttachmentSelection(newUploads);\n },\n [attachmentOptions?.uploadOptions, setKeyboardFocusAfterFileSelection]\n );\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const onRenderAttachmentDownloads = useCallback(\n (message: ChatMessage) =>\n message?.attachments?.length ?? 0 > 0 ? (\n <_AttachmentDownloadCards\n attachments={message.attachments}\n message={message}\n actionsForAttachment={attachmentOptions?.downloadOptions?.actionsForAttachment}\n onActionHandlerFailed={(errorMessage: string) => {\n setDownloadErrorMessage(errorMessage);\n }}\n />\n ) : (\n <></>\n ),\n [attachmentOptions?.downloadOptions?.actionsForAttachment]\n );\n\n const onInlineImageClicked = useCallback(\n (attachmentId: string, messageId: string) => {\n const message = adapter.getState().thread.chatMessages[messageId];\n const inlinedImages = message.content?.attachments?.filter((attachment) => {\n return attachment.attachmentType === 'image' && attachment.id === attachmentId;\n });\n\n if (!inlinedImages || inlinedImages.length <= 0) {\n return;\n }\n\n const attachment = inlinedImages[0];\n\n const resourceCache = message.resourceCache;\n let imageSrc = '';\n\n if (attachment.url) {\n if (resourceCache && resourceCache[attachment.url]) {\n imageSrc = getResourceSourceUrl(resourceCache[attachment.url]);\n } else {\n adapter.downloadResourceToCache({\n threadId: adapter.getState().thread.threadId,\n messageId: messageId,\n resourceUrl: attachment.url\n });\n }\n }\n\n const titleIconRenderOptions = {\n text: message.senderDisplayName,\n size: PersonaSize.size32,\n showOverflowTooltip: false,\n imageAlt: message.senderDisplayName\n };\n\n const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;\n const titleIcon = onRenderAvatarCallback && onRenderAvatarCallback(messageSenderId, titleIconRenderOptions);\n const overlayImage: OverlayImageItem = {\n title: message.senderDisplayName || '',\n titleIcon: titleIcon,\n attachmentId: attachment.id,\n imageSrc: imageSrc,\n messageId: messageId,\n imageUrl: attachment.url || ''\n };\n\n setIsImageOverlayOpen(true);\n setOverlayImageItem(overlayImage);\n },\n [adapter, onRenderAvatarCallback, userId]\n );\n\n const onRenderInlineImage = useCallback(\n (inlineImage: InlineImage, defaultOnRender: (inlineImage: InlineImage) => JSX.Element): JSX.Element => {\n const message = adapter.getState().thread.chatMessages[inlineImage.messageId];\n const attachment = message?.content?.attachments?.find(\n (attachment) => attachment.id === inlineImage.imageAttributes.id\n );\n\n if (attachment === undefined) {\n return defaultOnRender(inlineImage);\n }\n\n let pointerEvents: 'none' | 'auto' = inlineImage.imageAttributes.src === '' ? 'none' : 'auto';\n const resourceCache = message.resourceCache;\n if (\n resourceCache &&\n attachment.previewUrl &&\n resourceCache[attachment.previewUrl] &&\n resourceCache[attachment.previewUrl].error\n ) {\n pointerEvents = 'none';\n }\n\n return (\n <span\n key={inlineImage.imageAttributes.id}\n onClick={() => onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId)}\n tabIndex={0}\n role=\"button\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId);\n }\n }}\n style={{ cursor: 'pointer', pointerEvents }}\n >\n {defaultOnRender(inlineImage)}\n </span>\n );\n },\n [adapter, onInlineImageClicked]\n );\n\n const inlineImageOptions = useMemo(() => {\n return { onRenderInlineImage: onRenderInlineImage };\n }, [onRenderInlineImage]);\n\n const onDownloadButtonClicked = useCallback(\n (imageSrc: string): void => {\n if (imageSrc === '') {\n return;\n }\n if (isIOS()) {\n window.open(imageSrc, '_blank');\n } else {\n // Create a new anchor element\n const a = document.createElement('a');\n // Set the href and download attributes for the anchor element\n a.href = imageSrc;\n a.download = overlayImageItem?.attachmentId || '';\n a.rel = 'noopener noreferrer';\n a.target = '_blank';\n\n // Programmatically click the anchor element to trigger the download\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n },\n [overlayImageItem?.attachmentId]\n );\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachmentButton = useMemo(() => {\n if (\n !attachmentOptions?.uploadOptions?.handleAttachmentSelection ||\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n textOnlyChat\n ) {\n return null;\n }\n return (\n <AttachmentUploadButton\n supportedMediaTypes={attachmentOptions?.uploadOptions?.supportedMediaTypes}\n disableMultipleUploads={attachmentOptions?.uploadOptions?.disableMultipleUploads}\n onChange={attachmentUploadButtonOnChange}\n />\n );\n return <></>;\n }, [\n attachmentOptions?.uploadOptions?.handleAttachmentSelection,\n attachmentOptions?.uploadOptions?.supportedMediaTypes,\n attachmentOptions?.uploadOptions?.disableMultipleUploads,\n attachmentUploadButtonOnChange,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n textOnlyChat\n ]);\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachments = useMemo(() => {\n return uploads?.map((v) => v.metadata);\n }, [uploads]);\n\n const onSendMessageHandler = useCallback(\n async function (\n content: string,\n /* @conditional-compile-remove(file-sharing-acs) */ /* @conditional-compile-remove(rich-text-editor-composite-support) */ options?: MessageOptions\n ) {\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachments = options?.attachments ?? [];\n /* @conditional-compile-remove(file-sharing-acs) */\n handleUploadAction({ type: AttachmentUploadActionType.Clear });\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n handleSendBoxInlineImageUploadAction({\n type: AttachmentUploadActionType.Clear,\n messageId: SEND_BOX_UPLOADS_KEY_VALUE\n });\n\n /* @conditional-compile-remove(file-sharing-acs) */\n await adapter.sendMessage(content, {\n attachments: attachments,\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n type: options?.type\n });\n /* @conditional-compile-remove(file-sharing-acs) */\n return;\n await adapter.sendMessage(content, {\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n type: options?.type\n });\n },\n [adapter, /* @conditional-compile-remove(rich-text-editor-image-upload) */ handleSendBoxInlineImageUploadAction]\n );\n\n const onUpdateMessageHandler = useCallback(\n async function (\n messageId: string,\n content: string,\n /* @conditional-compile-remove(file-sharing-acs) */ options?: MessageOptions\n ) {\n await messageThreadProps.onUpdateMessage(\n messageId,\n content,\n /* @conditional-compile-remove(file-sharing-acs) */ options\n );\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n handleEditBoxInlineImageUploadAction({ type: AttachmentUploadActionType.Clear, messageId });\n },\n [\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ handleEditBoxInlineImageUploadAction,\n messageThreadProps\n ]\n );\n\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const onCancelEditMessageHandler = useCallback(\n (messageId: string) => {\n handleEditBoxInlineImageUploadAction({ type: AttachmentUploadActionType.Clear, messageId });\n },\n [handleEditBoxInlineImageUploadAction]\n );\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const onCancelUploadHandler = useCallback(\n (id: string) => {\n handleUploadAction({ type: AttachmentUploadActionType.Remove, id });\n attachmentOptions?.uploadOptions?.handleAttachmentRemoval?.(id);\n },\n [attachmentOptions?.uploadOptions]\n );\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n const richTextEditorOptions = useMemo(() => {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const onPasteCallback = isACSChat || textOnlyChat ? removeImageTags : undefined;\n return options?.richTextEditor\n ? {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ onPaste: onPasteCallback\n }\n : undefined;\n }, [\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n isACSChat,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n textOnlyChat,\n options?.richTextEditor\n ]);\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n const richTextEditBoxOptions = useMemo(() => {\n return options?.richTextEditor\n ? {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n ...richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onInsertInlineImage: (imageUrl: string, imageFileName: string, messageId: string) => {\n onInsertInlineImageForEditBox(\n imageUrl,\n imageFileName,\n messageId,\n adapter,\n handleEditBoxInlineImageUploadAction,\n localeStrings.chat\n );\n },\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n messagesInlineImages: getEditBoxMessagesInlineImages(editBoxInlineImageUploads),\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onCancelInlineImageUpload: (imageId: string, messageId: string) => {\n onCancelInlineImageUploadHandlerForEditBox(\n imageId,\n messageId,\n editBoxInlineImageUploads,\n adapter,\n handleEditBoxInlineImageUploadAction\n );\n }\n }\n : undefined;\n }, [\n options?.richTextEditor,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ editBoxInlineImageUploads,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ adapter,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ localeStrings.chat\n ]);\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n const richTextSendBoxOptions = useMemo(() => {\n return options?.richTextEditor\n ? {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n ...richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onInsertInlineImage: (imageUrl: string, imageFileName: string) => {\n onInsertInlineImageForSendBox(\n imageUrl,\n imageFileName,\n adapter,\n handleSendBoxInlineImageUploadAction,\n localeStrings.chat\n );\n },\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n inlineImages: getSendBoxInlineImages(sendBoxInlineImageUploads),\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onCancelInlineImageUpload: (imageId: string) => {\n onCancelInlineImageUploadHandlerForSendBox(\n imageId,\n sendBoxInlineImageUploads,\n adapter,\n handleSendBoxInlineImageUploadAction\n );\n }\n }\n : undefined;\n }, [\n options?.richTextEditor,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ sendBoxInlineImageUploads,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ localeStrings.chat,\n adapter\n ]);\n\n return (\n <Stack className={chatContainer} grow>\n {options?.topic !== false && <ChatHeader {...headerProps} />}\n <Stack className={chatArea} tokens={participantListContainerPadding} horizontal grow>\n <Stack className={chatWrapper} grow>\n {options?.errorBar !== false && <ErrorBar {...errorBarProps} />}\n {\n /* @conditional-compile-remove(file-sharing-acs) */\n <AttachmentDownloadErrorBar\n onDismissDownloadErrorMessage={useCallback(() => {\n setDownloadErrorMessage('');\n }, [])}\n attachmentDownloadErrorMessage={downloadErrorMessage || ''}\n />\n }\n <MessageThread\n {...messageThreadProps}\n onUpdateMessage={onUpdateMessageHandler}\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onCancelEditMessage={onCancelEditMessageHandler}\n onRenderAvatar={onRenderAvatarCallback}\n onRenderMessage={onRenderMessage}\n /* @conditional-compile-remove(file-sharing-acs) */\n onRenderAttachmentDownloads={onRenderAttachmentDownloads}\n inlineImageOptions={inlineImageOptions}\n numberOfChatMessagesToReload={defaultNumberOfChatMessagesToReload}\n styles={messageThreadStyles}\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n richTextEditorOptions={richTextEditBoxOptions}\n />\n <Stack className={mergeStyles(sendboxContainerStyles)}>\n <div className={mergeStyles(typingIndicatorContainerStyles)}>\n {onRenderTypingIndicator ? (\n onRenderTypingIndicator(typingIndicatorProps.typingUsers)\n ) : (\n <TypingIndicator {...typingIndicatorProps} styles={typingIndicatorStyles} />\n )}\n </div>\n <Stack horizontal={formFactor === 'mobile'}>\n {formFactor === 'mobile' && (\n /* @conditional-compile-remove(file-sharing-acs) */\n <Stack verticalAlign=\"center\">{attachmentButton}</Stack>\n )}\n <Stack grow>\n <SendBoxPicker\n styles={sendBoxStyles}\n autoFocus={options?.autoFocus}\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n richTextEditorOptions={richTextSendBoxOptions}\n /* @conditional-compile-remove(file-sharing-acs) */\n attachments={attachments}\n /* @conditional-compile-remove(file-sharing-acs) */\n onCancelAttachmentUpload={onCancelUploadHandler}\n // we need to overwrite onSendMessage for SendBox because we need to clear attachment state\n // when submit button is clicked\n onSendMessage={onSendMessageHandler}\n />\n </Stack>\n {formFactor !== 'mobile' &&\n /* @conditional-compile-remove(file-sharing-acs) */\n attachmentButton}\n </Stack>\n </Stack>\n </Stack>\n {\n /* @conditional-compile-remove(chat-composite-participant-pane) */\n options?.participantPane === true && (\n <ChatScreenPeoplePane\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n onFetchParticipantMenuItems={props.onFetchParticipantMenuItems}\n isMobile={formFactor === 'mobile'}\n />\n )\n }\n </Stack>\n {overlayImageItem && (\n <ImageOverlay\n {...overlayImageItem}\n isOpen={isImageOverlayOpen}\n onDismiss={() => {\n setOverlayImageItem(undefined);\n setIsImageOverlayOpen(false);\n adapter.removeResourceFromCache({\n threadId: adapter.getState().thread.threadId,\n messageId: overlayImageItem.messageId,\n resourceUrl: overlayImageItem.imageUrl\n });\n }}\n onDownloadButtonClicked={onDownloadButtonClicked}\n />\n )}\n </Stack>\n );\n};\n"]}
|
1
|
+
{"version":3,"file":"ChatScreen.js","sourceRoot":"","sources":["../../../../../../../react-composites/src/composites/ChatComposite/ChatScreen.tsx"],"names":[],"mappings":"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","sourcesContent":["// Copyright (c) Microsoft Corporation.\n// Licensed under the MIT License.\n\nimport { isIOS } from '@fluentui/react';\nimport { mergeStyles, Stack } from '@fluentui/react';\nimport { PersonaSize } from '@fluentui/react';\nimport {\n CommunicationParticipant,\n ErrorBar,\n MessageProps,\n MessageRenderer,\n MessageThread,\n MessageThreadStyles,\n ParticipantMenuItemsCallback,\n SendBoxStylesProps,\n TypingIndicator,\n TypingIndicatorStylesProps,\n useTheme\n} from '@internal/react-components';\n/* @conditional-compile-remove(rich-text-editor) */\nimport { RichTextEditBoxOptions } from '@internal/react-components';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { ChatMessage } from '@internal/react-components';\nimport React, { useCallback, useEffect, useMemo } from 'react';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { useReducer } from 'react';\nimport { useState } from 'react';\nimport { AvatarPersona, AvatarPersonaDataCallback, AvatarPersonaProps } from '../common/AvatarPersona';\nimport { useAdapter } from './adapter/ChatAdapterProvider';\nimport { ChatCompositeOptions } from './ChatComposite';\nimport { ChatHeader, getHeaderProps } from './ChatHeader';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentUploadButtonWrapper as AttachmentUploadButton } from './file-sharing';\nimport { useAdaptedSelector } from './hooks/useAdaptedSelector';\nimport { usePropsFor } from './hooks/usePropsFor';\n\nimport {\n chatArea,\n chatContainer,\n chatWrapper,\n messageThreadChatCompositeStyles,\n sendboxContainerStyles,\n typingIndicatorContainerStyles\n} from './styles/Chat.styles';\nimport { participantListContainerPadding } from '../common/styles/ParticipantContainer.styles';\n/* @conditional-compile-remove(chat-composite-participant-pane) */\nimport { ChatScreenPeoplePane } from './ChatScreenPeoplePane';\nimport { toFlatCommunicationIdentifier } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { removeImageTags, _IMAGE_ATTRIBUTE_INLINE_IMAGE_FILE_NAME_KEY } from '@internal/acs-ui-common';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentDownloadErrorBar } from './AttachmentDownloadErrorBar';\nimport { _AttachmentDownloadCards } from '@internal/react-components';\nimport { ImageOverlay } from '@internal/react-components';\nimport { InlineImage } from '@internal/react-components';\nimport { ResourceFetchResult } from '@internal/chat-stateful-client';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { AttachmentOptions } from '@internal/react-components';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { nanoid } from 'nanoid';\n/* @conditional-compile-remove(file-sharing-acs) */\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { AttachmentUploadActionType, AttachmentUpload, AttachmentUploadReducer } from './file-sharing/AttachmentUpload';\n/* @conditional-compile-remove(file-sharing-acs) */\nimport { MessageOptions } from '@internal/acs-ui-common';\nimport { SendBoxPicker } from '../common/SendBoxPicker';\n/* @conditional-compile-remove(rich-text-editor-composite-support) */\nimport { loadRichTextSendBox, RichTextSendBoxOptions } from '../common/SendBoxPicker';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport {\n cancelInlineImageUpload,\n getEditBoxMessagesInlineImages,\n getImageFileNameFromAttributes,\n getSendBoxInlineImages,\n onInsertInlineImageForEditBox,\n onInsertInlineImageForSendBox,\n updateContentStringWithUploadedInlineImages\n} from './ImageUpload/ImageUploadUtils';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport type { ChatAdapterState } from './adapter/ChatAdapter';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { isMicrosoftTeamsUserIdentifier } from '@azure/communication-common';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { SEND_BOX_UPLOADS_KEY_VALUE, _DEFAULT_INLINE_IMAGE_FILE_NAME } from '../common/constants';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { ImageUploadReducer } from './ImageUpload/ImageUploadReducer';\n/* @conditional-compile-remove(rich-text-editor-image-upload) */\nimport { useLocale } from '../localization';\n\n/**\n * @private\n */\nexport type ChatScreenProps = {\n options?: ChatCompositeOptions;\n onFetchAvatarPersonaData?: AvatarPersonaDataCallback;\n onRenderMessage?: (messageProps: MessageProps, defaultOnRender?: MessageRenderer) => JSX.Element;\n onRenderTypingIndicator?: (typingUsers: CommunicationParticipant[]) => JSX.Element;\n onFetchParticipantMenuItems?: ParticipantMenuItemsCallback;\n styles?: ChatScreenStyles;\n /* @conditional-compile-remove(file-sharing-acs) */\n attachmentOptions?: AttachmentOptions;\n formFactor?: 'desktop' | 'mobile';\n};\n\n/**\n * @private\n */\nexport type ChatScreenStyles = {\n messageThread?: MessageThreadStyles;\n sendBox?: SendBoxStylesProps;\n typingIndicator?: TypingIndicatorStylesProps;\n};\n\n/**\n * @private\n */\ninterface OverlayImageItem {\n imageSrc: string;\n title: string;\n titleIcon: JSX.Element;\n attachmentId: string;\n messageId: string;\n imageUrl: string;\n}\n\n/**\n * @private\n */\nexport const ChatScreen = (props: ChatScreenProps): JSX.Element => {\n const {\n onFetchAvatarPersonaData,\n onRenderMessage,\n onRenderTypingIndicator,\n options,\n styles,\n /* @conditional-compile-remove(file-sharing-acs) */\n attachmentOptions,\n formFactor\n } = props;\n\n const defaultNumberOfChatMessagesToReload = 5;\n /* @conditional-compile-remove(file-sharing-acs) */\n const [downloadErrorMessage, setDownloadErrorMessage] = React.useState('');\n const [overlayImageItem, setOverlayImageItem] = useState<OverlayImageItem>();\n const [isImageOverlayOpen, setIsImageOverlayOpen] = useState<boolean>(false);\n /* @conditional-compile-remove(file-sharing-acs) */\n const [uploads, handleUploadAction] = useReducer(AttachmentUploadReducer, []);\n const adapter = useAdapter();\n const theme = useTheme();\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const localeStrings = useLocale().strings;\n\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [textOnlyChat, setTextOnlyChat] = useState(false);\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [isACSChat, setIsACSChat] = useState(false);\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [editBoxInlineImageUploads, handleEditBoxInlineImageUploadAction] = useReducer(ImageUploadReducer, undefined);\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const [sendBoxInlineImageUploads, handleSendBoxInlineImageUploadAction] = useReducer(ImageUploadReducer, undefined);\n\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n useEffect(() => {\n const updateChatState = (newState: ChatAdapterState): void => {\n setTextOnlyChat(newState.thread.properties?.messagingPolicy?.textOnlyChat === true);\n if (newState.thread.properties?.createdBy) {\n setIsACSChat(!isMicrosoftTeamsUserIdentifier(newState.thread.properties?.createdBy));\n }\n };\n // set initial state for textOnlyChat and isACSChat\n updateChatState(adapter.getState());\n\n adapter.onStateChange(updateChatState);\n return () => {\n adapter.offStateChange(updateChatState);\n };\n }, [adapter]);\n\n useEffect(() => {\n // Initial data should be always fetched by the composite(or external caller) instead of the adapter\n const fetchData: () => Promise<void> = async () => {\n // Fetch initial data for adapter\n await adapter.fetchInitialData();\n // Fetch initial set of messages. Without fetching messages here, if the Composite's adapter is changed the message thread does not load new messages.\n await adapter.loadPreviousChatMessages(defaultNumberOfChatMessagesToReload);\n };\n fetchData();\n }, [adapter]);\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n useEffect(() => {\n // if rich text editor is enabled, the rich text editor component should be loaded early for good UX\n if (options?.richTextEditor) {\n // this line is needed to load the Rooster JS dependencies early in the lifecycle\n // when the rich text editor is enabled\n loadRichTextSendBox();\n }\n }, [options?.richTextEditor]);\n\n const messageThreadProps = usePropsFor(MessageThread);\n const typingIndicatorProps = usePropsFor(TypingIndicator);\n const headerProps = useAdaptedSelector(getHeaderProps);\n const errorBarProps = usePropsFor(ErrorBar);\n\n useEffect(() => {\n if (overlayImageItem === undefined) {\n return;\n }\n const message = adapter.getState().thread.chatMessages[overlayImageItem.messageId];\n if (message === undefined) {\n return;\n }\n const resourceCache = message.resourceCache;\n if (overlayImageItem.imageSrc === '' && resourceCache && resourceCache[overlayImageItem.imageUrl]) {\n const fullSizeImageSrc = getResourceSourceUrl(resourceCache[overlayImageItem.imageUrl]);\n if (fullSizeImageSrc === undefined || fullSizeImageSrc === '' || overlayImageItem.imageSrc === fullSizeImageSrc) {\n return;\n }\n setOverlayImageItem({\n ...overlayImageItem,\n imageSrc: fullSizeImageSrc\n });\n }\n // Disable eslint because we are using the overlayImageItem in this effect but don't want to have it as a dependency, as it will cause an infinite loop.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [messageThreadProps.messages]);\n\n const getResourceSourceUrl = (result: ResourceFetchResult): string => {\n let src = '';\n if (result.error || !result.sourceUrl) {\n src = 'blob://';\n } else {\n src = result.sourceUrl;\n }\n\n return src;\n };\n\n const onRenderAvatarCallback = useCallback(\n (userId?: string, defaultOptions?: AvatarPersonaProps) => {\n return (\n <AvatarPersona\n userId={userId}\n hidePersonaDetails={true}\n {...defaultOptions}\n dataProvider={onFetchAvatarPersonaData}\n />\n );\n },\n [onFetchAvatarPersonaData]\n );\n\n const messageThreadStyles = useMemo(() => {\n return Object.assign(\n {},\n messageThreadChatCompositeStyles(theme.semanticColors.bodyBackground),\n styles?.messageThread\n );\n }, [styles?.messageThread, theme.semanticColors.bodyBackground]);\n\n const typingIndicatorStyles = useMemo(() => {\n return Object.assign({}, styles?.typingIndicator);\n }, [styles?.typingIndicator]);\n\n const sendBoxStyles = useMemo(() => {\n return Object.assign({}, styles?.sendBox);\n }, [styles?.sendBox]);\n\n const userId = toFlatCommunicationIdentifier(adapter.getState().userId);\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const setKeyboardFocusAfterFileSelection = useCallback(() => {\n // look up sendbox by ID for now, we will use `useRef`\n // once attachment button is moved inside of send box component\n // see ADO workitem #3764245\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n if (props.options?.richTextEditor) {\n const richTextSendBox = document?.querySelector(`[id=\"richTextSendBox\"]`) as HTMLDivElement;\n richTextSendBox?.focus();\n return;\n }\n const sendBox = document?.querySelector(`[id=\"sendbox\"]`) as HTMLTextAreaElement;\n // set send box on focus after file selection per A11y requirement\n sendBox?.focus();\n }, [\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n props.options?.richTextEditor\n ]);\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachmentUploadButtonOnChange = useCallback(\n (files: FileList | null): void => {\n setKeyboardFocusAfterFileSelection();\n\n if (!files) {\n return;\n }\n\n // Get files, change to tasks, store locally and pass back to Contoso\n const newUploads = Array.from(files).map((file): AttachmentUpload => {\n const taskId = nanoid();\n return {\n file,\n taskId,\n metadata: {\n id: taskId,\n name: file.name,\n progress: 0\n },\n notifyUploadProgressChanged: (value: number) => {\n handleUploadAction({ type: AttachmentUploadActionType.Progress, taskId, progress: value });\n },\n notifyUploadCompleted: (id: string, url: string) => {\n handleUploadAction({ type: AttachmentUploadActionType.Completed, taskId, id, url });\n },\n notifyUploadFailed: (message: string) => {\n handleUploadAction({ type: AttachmentUploadActionType.Failed, taskId, message });\n // remove the failed upload task when error banner is auto dismissed after 10 seconds\n // so the banner won't be shown again on UI re-rendering.\n setTimeout(() => {\n handleUploadAction({ type: AttachmentUploadActionType.Remove, id: taskId });\n }, 10 * 1000);\n }\n };\n });\n\n handleUploadAction({ type: AttachmentUploadActionType.Set, newUploads });\n attachmentOptions?.uploadOptions?.handleAttachmentSelection(newUploads);\n },\n [attachmentOptions?.uploadOptions, setKeyboardFocusAfterFileSelection]\n );\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const onRenderAttachmentDownloads = useCallback(\n (message: ChatMessage) =>\n message?.attachments?.length ?? 0 > 0 ? (\n <_AttachmentDownloadCards\n attachments={message.attachments}\n message={message}\n actionsForAttachment={attachmentOptions?.downloadOptions?.actionsForAttachment}\n onActionHandlerFailed={(errorMessage: string) => {\n setDownloadErrorMessage(errorMessage);\n }}\n />\n ) : (\n <></>\n ),\n [attachmentOptions?.downloadOptions?.actionsForAttachment]\n );\n\n const onInlineImageClicked = useCallback(\n (attachmentId: string, messageId: string) => {\n const message = adapter.getState().thread.chatMessages[messageId];\n const inlinedImages = message.content?.attachments?.filter((attachment) => {\n return attachment.attachmentType === 'image' && attachment.id === attachmentId;\n });\n\n if (!inlinedImages || inlinedImages.length <= 0) {\n return;\n }\n\n const attachment = inlinedImages[0];\n\n const resourceCache = message.resourceCache;\n let imageSrc = '';\n\n if (attachment.url) {\n if (resourceCache && resourceCache[attachment.url]) {\n imageSrc = getResourceSourceUrl(resourceCache[attachment.url]);\n } else {\n adapter.downloadResourceToCache({\n threadId: adapter.getState().thread.threadId,\n messageId: messageId,\n resourceUrl: attachment.url\n });\n }\n }\n\n const titleIconRenderOptions = {\n text: message.senderDisplayName,\n size: PersonaSize.size32,\n showOverflowTooltip: false,\n imageAlt: message.senderDisplayName\n };\n\n const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;\n const titleIcon = onRenderAvatarCallback && onRenderAvatarCallback(messageSenderId, titleIconRenderOptions);\n const overlayImage: OverlayImageItem = {\n title: message.senderDisplayName || '',\n titleIcon: titleIcon,\n attachmentId: attachment.id,\n imageSrc: imageSrc,\n messageId: messageId,\n imageUrl: attachment.url || ''\n };\n\n setIsImageOverlayOpen(true);\n setOverlayImageItem(overlayImage);\n },\n [adapter, onRenderAvatarCallback, userId]\n );\n\n const onRenderInlineImage = useCallback(\n (inlineImage: InlineImage, defaultOnRender: (inlineImage: InlineImage) => JSX.Element): JSX.Element => {\n const message = adapter.getState().thread.chatMessages[inlineImage.messageId];\n const attachment = message?.content?.attachments?.find(\n (attachment) => attachment.id === inlineImage.imageAttributes.id\n );\n\n if (attachment === undefined) {\n return defaultOnRender(inlineImage);\n }\n\n let pointerEvents: 'none' | 'auto' = inlineImage.imageAttributes.src === '' ? 'none' : 'auto';\n const resourceCache = message.resourceCache;\n if (\n resourceCache &&\n attachment.previewUrl &&\n resourceCache[attachment.previewUrl] &&\n resourceCache[attachment.previewUrl].error\n ) {\n pointerEvents = 'none';\n }\n\n return (\n <span\n key={inlineImage.imageAttributes.id}\n onClick={() => onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId)}\n tabIndex={0}\n role=\"button\"\n onKeyDown={(e) => {\n if (e.key === 'Enter') {\n onInlineImageClicked(inlineImage.imageAttributes.id || '', inlineImage.messageId);\n }\n }}\n style={{ cursor: 'pointer', pointerEvents }}\n >\n {defaultOnRender(inlineImage)}\n </span>\n );\n },\n [adapter, onInlineImageClicked]\n );\n\n const inlineImageOptions = useMemo(() => {\n return { onRenderInlineImage: onRenderInlineImage };\n }, [onRenderInlineImage]);\n\n const onDownloadButtonClicked = useCallback(\n (imageSrc: string): void => {\n if (imageSrc === '') {\n return;\n }\n if (isIOS()) {\n window.open(imageSrc, '_blank');\n } else {\n // Create a new anchor element\n const a = document.createElement('a');\n // Set the href and download attributes for the anchor element\n a.href = imageSrc;\n a.download = overlayImageItem?.attachmentId || '';\n a.rel = 'noopener noreferrer';\n a.target = '_blank';\n\n // Programmatically click the anchor element to trigger the download\n document.body.appendChild(a);\n a.click();\n document.body.removeChild(a);\n }\n },\n [overlayImageItem?.attachmentId]\n );\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachmentButton = useMemo(() => {\n if (\n !attachmentOptions?.uploadOptions?.handleAttachmentSelection ||\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n textOnlyChat\n ) {\n return null;\n }\n return (\n <AttachmentUploadButton\n supportedMediaTypes={attachmentOptions?.uploadOptions?.supportedMediaTypes}\n disableMultipleUploads={attachmentOptions?.uploadOptions?.disableMultipleUploads}\n onChange={attachmentUploadButtonOnChange}\n />\n );\n return <></>;\n }, [\n attachmentOptions?.uploadOptions?.handleAttachmentSelection,\n attachmentOptions?.uploadOptions?.supportedMediaTypes,\n attachmentOptions?.uploadOptions?.disableMultipleUploads,\n attachmentUploadButtonOnChange,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n textOnlyChat\n ]);\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachments = useMemo(() => {\n return uploads?.map((v) => v.metadata);\n }, [uploads]);\n\n const onSendMessageHandler = useCallback(\n async function (\n content: string,\n /* @conditional-compile-remove(file-sharing-acs) */ /* @conditional-compile-remove(rich-text-editor-composite-support) */ options?: MessageOptions\n ) {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n content = updateContentStringWithUploadedInlineImages(content, sendBoxInlineImageUploads);\n /* @conditional-compile-remove(file-sharing-acs) */\n const attachments = options?.attachments ?? [];\n /* @conditional-compile-remove(file-sharing-acs) */\n handleUploadAction({ type: AttachmentUploadActionType.Clear });\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n handleSendBoxInlineImageUploadAction({\n type: AttachmentUploadActionType.Clear,\n messageId: SEND_BOX_UPLOADS_KEY_VALUE\n });\n\n /* @conditional-compile-remove(file-sharing-acs) */\n await adapter.sendMessage(content, {\n attachments: attachments,\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n type: options?.type\n });\n /* @conditional-compile-remove(file-sharing-acs) */\n return;\n await adapter.sendMessage(content, {\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n type: options?.type\n });\n },\n [\n adapter,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ handleSendBoxInlineImageUploadAction,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ sendBoxInlineImageUploads\n ]\n );\n\n const onUpdateMessageHandler = useCallback(\n async function (\n messageId: string,\n content: string,\n /* @conditional-compile-remove(file-sharing-acs) */ options?: MessageOptions\n ) {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n content = updateContentStringWithUploadedInlineImages(content, editBoxInlineImageUploads, messageId);\n await messageThreadProps.onUpdateMessage(\n messageId,\n content,\n /* @conditional-compile-remove(file-sharing-acs) */ options\n );\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n handleEditBoxInlineImageUploadAction({ type: AttachmentUploadActionType.Clear, messageId });\n },\n [\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ handleEditBoxInlineImageUploadAction,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ editBoxInlineImageUploads,\n messageThreadProps\n ]\n );\n\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const onCancelEditMessageHandler = useCallback(\n (messageId: string) => {\n handleEditBoxInlineImageUploadAction({ type: AttachmentUploadActionType.Clear, messageId });\n },\n [handleEditBoxInlineImageUploadAction]\n );\n\n /* @conditional-compile-remove(file-sharing-acs) */\n const onCancelUploadHandler = useCallback(\n (id: string) => {\n handleUploadAction({ type: AttachmentUploadActionType.Remove, id });\n attachmentOptions?.uploadOptions?.handleAttachmentRemoval?.(id);\n },\n [attachmentOptions?.uploadOptions]\n );\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n const richTextEditorOptions = useMemo(() => {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n const onPasteCallback = isACSChat || textOnlyChat ? removeImageTags : undefined;\n return options?.richTextEditor\n ? {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ onPaste: onPasteCallback\n }\n : undefined;\n }, [\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n isACSChat,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n textOnlyChat,\n options?.richTextEditor\n ]);\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n const richTextEditBoxOptions: RichTextEditBoxOptions | undefined = useMemo(() => {\n return options?.richTextEditor\n ? {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n ...richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onInsertInlineImage: (imageAttributes: Record<string, string>, messageId: string) => {\n onInsertInlineImageForEditBox(\n imageAttributes,\n getImageFileNameFromAttributes(imageAttributes),\n messageId,\n adapter,\n handleEditBoxInlineImageUploadAction,\n localeStrings.chat\n );\n },\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n messagesInlineImagesWithProgress: getEditBoxMessagesInlineImages(editBoxInlineImageUploads),\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onRemoveInlineImage: (imageAttributes: Record<string, string>, messageId: string) => {\n cancelInlineImageUpload(\n imageAttributes,\n editBoxInlineImageUploads,\n messageId,\n handleEditBoxInlineImageUploadAction,\n adapter\n );\n }\n }\n : undefined;\n }, [\n options?.richTextEditor,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ editBoxInlineImageUploads,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ adapter,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ localeStrings.chat\n ]);\n\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n const richTextSendBoxOptions: RichTextSendBoxOptions | undefined = useMemo(() => {\n return options?.richTextEditor\n ? {\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n ...richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onInsertInlineImage: (imageAttributes: Record<string, string>) => {\n onInsertInlineImageForSendBox(\n imageAttributes,\n getImageFileNameFromAttributes(imageAttributes),\n adapter,\n handleSendBoxInlineImageUploadAction,\n localeStrings.chat\n );\n },\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n inlineImagesWithProgress: getSendBoxInlineImages(sendBoxInlineImageUploads),\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onRemoveInlineImage: (imageAttributes: Record<string, string>) => {\n cancelInlineImageUpload(\n imageAttributes,\n sendBoxInlineImageUploads,\n SEND_BOX_UPLOADS_KEY_VALUE,\n handleSendBoxInlineImageUploadAction,\n adapter\n );\n }\n }\n : undefined;\n }, [\n options?.richTextEditor,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ richTextEditorOptions,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ sendBoxInlineImageUploads,\n /* @conditional-compile-remove(rich-text-editor-image-upload) */ localeStrings.chat,\n adapter\n ]);\n\n return (\n <Stack className={chatContainer} grow>\n {options?.topic !== false && <ChatHeader {...headerProps} />}\n <Stack className={chatArea} tokens={participantListContainerPadding} horizontal grow>\n <Stack className={chatWrapper} grow>\n {options?.errorBar !== false && <ErrorBar {...errorBarProps} />}\n {\n /* @conditional-compile-remove(file-sharing-acs) */\n <AttachmentDownloadErrorBar\n onDismissDownloadErrorMessage={useCallback(() => {\n setDownloadErrorMessage('');\n }, [])}\n attachmentDownloadErrorMessage={downloadErrorMessage || ''}\n />\n }\n <MessageThread\n {...messageThreadProps}\n onUpdateMessage={onUpdateMessageHandler}\n /* @conditional-compile-remove(rich-text-editor-image-upload) */\n onCancelEditMessage={onCancelEditMessageHandler}\n onRenderAvatar={onRenderAvatarCallback}\n onRenderMessage={onRenderMessage}\n /* @conditional-compile-remove(file-sharing-acs) */\n onRenderAttachmentDownloads={onRenderAttachmentDownloads}\n inlineImageOptions={inlineImageOptions}\n numberOfChatMessagesToReload={defaultNumberOfChatMessagesToReload}\n styles={messageThreadStyles}\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n richTextEditorOptions={richTextEditBoxOptions}\n />\n <Stack className={mergeStyles(sendboxContainerStyles)}>\n <div className={mergeStyles(typingIndicatorContainerStyles)}>\n {onRenderTypingIndicator ? (\n onRenderTypingIndicator(typingIndicatorProps.typingUsers)\n ) : (\n <TypingIndicator {...typingIndicatorProps} styles={typingIndicatorStyles} />\n )}\n </div>\n <Stack horizontal={formFactor === 'mobile'}>\n {formFactor === 'mobile' && (\n /* @conditional-compile-remove(file-sharing-acs) */\n <Stack verticalAlign=\"center\">{attachmentButton}</Stack>\n )}\n <Stack grow>\n <SendBoxPicker\n styles={sendBoxStyles}\n autoFocus={options?.autoFocus}\n /* @conditional-compile-remove(rich-text-editor-composite-support) */\n richTextEditorOptions={richTextSendBoxOptions}\n /* @conditional-compile-remove(file-sharing-acs) */\n attachments={attachments}\n /* @conditional-compile-remove(file-sharing-acs) */\n onCancelAttachmentUpload={onCancelUploadHandler}\n // we need to overwrite onSendMessage for SendBox because we need to clear attachment state\n // when submit button is clicked\n onSendMessage={onSendMessageHandler}\n />\n </Stack>\n {formFactor !== 'mobile' &&\n /* @conditional-compile-remove(file-sharing-acs) */\n attachmentButton}\n </Stack>\n </Stack>\n </Stack>\n {\n /* @conditional-compile-remove(chat-composite-participant-pane) */\n options?.participantPane === true && (\n <ChatScreenPeoplePane\n onFetchAvatarPersonaData={onFetchAvatarPersonaData}\n onFetchParticipantMenuItems={props.onFetchParticipantMenuItems}\n isMobile={formFactor === 'mobile'}\n />\n )\n }\n </Stack>\n {overlayImageItem && (\n <ImageOverlay\n {...overlayImageItem}\n isOpen={isImageOverlayOpen}\n onDismiss={() => {\n setOverlayImageItem(undefined);\n setIsImageOverlayOpen(false);\n adapter.removeResourceFromCache({\n threadId: adapter.getState().thread.threadId,\n messageId: overlayImageItem.messageId,\n resourceUrl: overlayImageItem.imageUrl\n });\n }}\n onDownloadButtonClicked={onDownloadButtonClicked}\n />\n )}\n </Stack>\n );\n};\n"]}
|
@@ -19,21 +19,21 @@ export declare const getSendBoxInlineImages: (sendBoxInlineImageUploads: Record<
|
|
19
19
|
/**
|
20
20
|
* @internal
|
21
21
|
*/
|
22
|
-
export declare const onInsertInlineImageForEditBox: (
|
22
|
+
export declare const onInsertInlineImageForEditBox: (imageAttributes: Record<string, string>, fileName: string, messageId: string, adapter: ChatAdapter, handleEditBoxInlineImageUploadAction: Dispatch<ImageActions>, chatCompositeStrings: ChatCompositeStrings) => Promise<void>;
|
23
23
|
/**
|
24
24
|
* @internal
|
25
25
|
*/
|
26
|
-
export declare const onInsertInlineImageForSendBox: (
|
26
|
+
export declare const onInsertInlineImageForSendBox: (imageAttributes: Record<string, string>, fileName: string, adapter: ChatAdapter, handleSendBoxInlineImageUploadAction: Dispatch<ImageActions>, chatCompositeStrings: ChatCompositeStrings) => Promise<void>;
|
27
27
|
/**
|
28
28
|
* @internal
|
29
29
|
*/
|
30
|
-
export declare const cancelInlineImageUpload: (
|
30
|
+
export declare const cancelInlineImageUpload: (imageAttributes: Record<string, string>, imageUploads: Record<string, AttachmentUpload[]> | undefined, messageId: string, inlineImageUploadActionHandler: Dispatch<ImageActions>, adapter: ChatAdapter) => void;
|
31
31
|
/**
|
32
32
|
* @internal
|
33
33
|
*/
|
34
|
-
export declare const
|
34
|
+
export declare const updateContentStringWithUploadedInlineImages: (content: string, imageUploads: Record<string, AttachmentUpload[]> | undefined, messageId?: string) => string;
|
35
35
|
/**
|
36
36
|
* @internal
|
37
37
|
*/
|
38
|
-
export declare const
|
38
|
+
export declare const getImageFileNameFromAttributes: (imageAttributes: Record<string, string>) => string;
|
39
39
|
//# sourceMappingURL=ImageUploadUtils.d.ts.map
|