-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathSuggestions.tsx
More file actions
60 lines (53 loc) · 1.55 KB
/
Suggestions.tsx
File metadata and controls
60 lines (53 loc) · 1.55 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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import { useTranslation } from 'react-i18next';
import { Button, Stack, styled } from '@mui/material';
import { AppActionsType } from '@/config/appActions';
import { ChatbotPromptSettings } from '@/config/appSetting';
import { mutations } from '@/config/queryClient';
import { showErrorToast } from '@/utils/toast';
import { useSendMessageAndAskChatbot } from './useSendMessageAndAskChatbot';
const StyledButton = styled(Button)({
borderRadius: 100,
textTransform: 'unset',
});
export function Suggestions({
suggestions,
chatbotPrompt,
}: Readonly<{
chatbotPrompt: ChatbotPromptSettings;
suggestions: string[];
}>) {
const { t } = useTranslation();
const { mutateAsync: postAction } = mutations.usePostAppAction();
const { send } = useSendMessageAndAskChatbot({ chatbotPrompt });
const onClick = async (suggestion: string) => {
try {
await send(suggestion);
await postAction({
type: AppActionsType.UseStarter,
data: { value: suggestion },
});
} catch (e: unknown) {
if (e instanceof Error) {
showErrorToast(e.message);
}
console.error(e);
}
};
return (
<Stack direction="row" gap={2} justifyContent="right">
{suggestions.map((s) => (
<span key={s}>
<StyledButton
aria-label={t('STARTER_SUGGESTION_PLAYER_BUTTON_ARIA_LABEL', {
suggestion: s,
})}
onClick={() => onClick(s)}
variant="contained"
>
{s}
</StyledButton>
</span>
))}
</Stack>
);
}