forked from microsoft/BotFramework-WebChat
-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathRenderActivityGrouping.tsx
More file actions
36 lines (28 loc) · 1.23 KB
/
RenderActivityGrouping.tsx
File metadata and controls
36 lines (28 loc) · 1.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import { hooks } from 'botframework-webchat-api';
import { type WebChatActivity } from 'botframework-webchat-core';
import { validateProps } from 'botframework-webchat-react-valibot';
import React, { Fragment, memo } from 'react';
import { array, custom, object, pipe, readonly, safeParse, type InferInput } from 'valibot';
import TranscriptActivity from '../../../Transcript/TranscriptActivity';
const { useGetKeyByActivity } = hooks;
const renderActivityGroupingPropsSchema = pipe(
object({
activities: pipe(array(custom<WebChatActivity>(value => safeParse(object({}), value).success)), readonly())
}),
readonly()
);
type RenderActivityGroupingProps = InferInput<typeof renderActivityGroupingPropsSchema>;
const RenderActivityGrouping = (props: RenderActivityGroupingProps) => {
const { activities } = validateProps(renderActivityGroupingPropsSchema, props);
const getKeyByActivity = useGetKeyByActivity();
return (
<Fragment>
{activities.map(activity => (
<TranscriptActivity activity={activity} key={getKeyByActivity(activity)} />
))}
</Fragment>
);
};
RenderActivityGrouping.displayName = 'RenderActivityGrouping';
export default memo(RenderActivityGrouping);
export { type RenderActivityGroupingProps };