@@ -4,14 +4,21 @@ import { singleToArray } from '@msinternal/botframework-webchat-base/utils';
44import { useMemoIterable } from '@msinternal/botframework-webchat-react-hooks' ;
55import {
66 Composer as APIComposer ,
7+ AttachmentForScreenReaderMiddleware ,
78 extractSendBoxMiddleware ,
89 extractSendBoxToolbarMiddleware ,
910 hooks ,
1011 WebSpeechPonyfillFactory ,
12+ type ActivityStatusMiddleware ,
1113 type ComposerProps as APIComposerProps ,
14+ type AttachmentMiddleware ,
1215 type AvatarMiddleware ,
16+ type CardActionMiddleware ,
17+ type ScrollToEndButtonMiddleware ,
1318 type SendBoxMiddleware ,
14- type SendBoxToolbarMiddleware
19+ type SendBoxToolbarMiddleware ,
20+ type ToastMiddleware ,
21+ type TypingIndicatorMiddleware
1522} from 'botframework-webchat-api' ;
1623import { DecoratorComposer , type DecoratorMiddleware } from 'botframework-webchat-api/decorator' ;
1724import { type LegacyActivityMiddleware , type Polymiddleware } from 'botframework-webchat-api/middleware' ;
@@ -369,13 +376,12 @@ const Composer = ({
369376 const { nonce, onTelemetry } = composerProps ;
370377 const theme = useTheme ( ) ;
371378
372- const patchedActivityMiddleware = useMemo < readonly LegacyActivityMiddleware [ ] | undefined > ( ( ) => {
373- const middleware = Object . freeze ( [ ...singleToArray ( activityMiddleware ?? [ ] ) , ...theme . activityMiddleware ] ) ;
374-
375- return middleware . length ? middleware : undefined ;
376- } , [ activityMiddleware , theme . activityMiddleware ] ) ;
379+ const patchedActivityMiddleware = useMemo < readonly LegacyActivityMiddleware [ ] > (
380+ ( ) => Object . freeze ( [ ...singleToArray ( activityMiddleware ?? [ ] ) , ...theme . activityMiddleware ] ) ,
381+ [ activityMiddleware , theme . activityMiddleware ]
382+ ) ;
377383
378- const patchedActivityStatusMiddleware = useMemo (
384+ const patchedActivityStatusMiddleware = useMemoIterable < readonly ActivityStatusMiddleware [ ] > (
379385 ( ) =>
380386 Object . freeze ( [
381387 ...singleToArray ( activityStatusMiddleware ?? [ ] ) ,
@@ -385,7 +391,7 @@ const Composer = ({
385391 [ activityStatusMiddleware , theme . activityStatusMiddleware ]
386392 ) ;
387393
388- const patchedAttachmentForScreenReaderMiddleware = useMemo (
394+ const patchedAttachmentForScreenReaderMiddleware = useMemoIterable < readonly AttachmentForScreenReaderMiddleware [ ] > (
389395 ( ) =>
390396 Object . freeze ( [
391397 ...singleToArray ( attachmentForScreenReaderMiddleware ?? [ ] ) ,
@@ -395,7 +401,7 @@ const Composer = ({
395401 [ attachmentForScreenReaderMiddleware , theme . attachmentForScreenReaderMiddleware ]
396402 ) ;
397403
398- const patchedAttachmentMiddleware = useMemo (
404+ const patchedAttachmentMiddleware = useMemoIterable < readonly AttachmentMiddleware [ ] > (
399405 ( ) =>
400406 Object . freeze ( [
401407 ...singleToArray ( attachmentMiddleware ?? [ ] ) ,
@@ -405,13 +411,12 @@ const Composer = ({
405411 [ attachmentMiddleware , theme . attachmentMiddleware ]
406412 ) ;
407413
408- const patchedAvatarMiddleware = useMemo < readonly AvatarMiddleware [ ] | undefined > ( ( ) => {
409- const middleware = Object . freeze ( [ ...singleToArray ( avatarMiddleware ?? [ ] ) , ...theme . avatarMiddleware ] ) ;
410-
411- return middleware . length ? middleware : undefined ;
412- } , [ avatarMiddleware , theme . avatarMiddleware ] ) ;
414+ const patchedAvatarMiddleware = useMemoIterable < readonly AvatarMiddleware [ ] > (
415+ ( ) => Object . freeze ( [ ...singleToArray ( avatarMiddleware ?? [ ] ) , ...theme . avatarMiddleware ] ) ,
416+ [ avatarMiddleware , theme . avatarMiddleware ]
417+ ) ;
413418
414- const patchedCardActionMiddleware = useMemo (
419+ const patchedCardActionMiddleware = useMemoIterable < readonly CardActionMiddleware [ ] > (
415420 ( ) =>
416421 Object . freeze ( [
417422 ...singleToArray ( cardActionMiddleware ?? [ ] ) ,
@@ -434,32 +439,37 @@ const Composer = ({
434439 [ polymiddleware , theme . polymiddleware ]
435440 ) ;
436441
437- const patchedToastMiddleware = useMemo (
438- ( ) => [ ...singleToArray ( toastMiddleware ?? [ ] ) , ...theme . toastMiddleware , ...createDefaultToastMiddleware ( ) ] ,
442+ const patchedToastMiddleware = useMemoIterable < readonly ToastMiddleware [ ] > (
443+ ( ) =>
444+ Object . freeze ( [
445+ ...singleToArray ( toastMiddleware ?? [ ] ) ,
446+ ...theme . toastMiddleware ,
447+ ...createDefaultToastMiddleware ( )
448+ ] ) ,
439449 [ toastMiddleware , theme . toastMiddleware ]
440450 ) ;
441451
442- const patchedTypingIndicatorMiddleware = useMemo (
443- ( ) => [
444- ...singleToArray ( typingIndicatorMiddleware ?? [ ] ) ,
445- ...theme . typingIndicatorMiddleware ,
446- ...createDefaultTypingIndicatorMiddleware ( )
447- ] ,
452+ const patchedTypingIndicatorMiddleware = useMemoIterable < readonly TypingIndicatorMiddleware [ ] > (
453+ ( ) =>
454+ Object . freeze ( [
455+ ...singleToArray ( typingIndicatorMiddleware ?? [ ] ) ,
456+ ...theme . typingIndicatorMiddleware ,
457+ ...createDefaultTypingIndicatorMiddleware ( )
458+ ] ) ,
448459 [ typingIndicatorMiddleware , theme . typingIndicatorMiddleware ]
449460 ) ;
450461
451- const defaultScrollToEndButtonMiddleware = useMemo ( ( ) => createDefaultScrollToEndButtonMiddleware ( ) , [ ] ) ;
452-
453- const patchedScrollToEndButtonMiddleware = useMemo (
454- ( ) => [
455- ...singleToArray ( scrollToEndButtonMiddleware ?? [ ] ) ,
456- ...theme . scrollToEndButtonMiddleware ,
457- ...defaultScrollToEndButtonMiddleware
458- ] ,
459- [ defaultScrollToEndButtonMiddleware , scrollToEndButtonMiddleware , theme . scrollToEndButtonMiddleware ]
462+ const patchedScrollToEndButtonMiddleware = useMemoIterable < readonly ScrollToEndButtonMiddleware [ ] > (
463+ ( ) =>
464+ Object . freeze ( [
465+ ...singleToArray ( scrollToEndButtonMiddleware ?? [ ] ) ,
466+ ...theme . scrollToEndButtonMiddleware ,
467+ ...createDefaultScrollToEndButtonMiddleware ( )
468+ ] ) ,
469+ [ scrollToEndButtonMiddleware , theme . scrollToEndButtonMiddleware ]
460470 ) ;
461471
462- const sendBoxMiddleware = useMemo < readonly SendBoxMiddleware [ ] > (
472+ const sendBoxMiddleware = useMemoIterable < readonly SendBoxMiddleware [ ] > (
463473 ( ) =>
464474 Object . freeze ( [
465475 ...extractSendBoxMiddleware ( sendBoxMiddlewareFromProps ) ,
0 commit comments