-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.tsx
77 lines (73 loc) · 2.4 KB
/
index.tsx
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
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
import { createUserKeyCookie } from '@/auth/utils/createUserKeyCookie';
import { useCreateChatRoom } from '@/chat/hooks/useCreateChatRoom';
import { useSendChatMessage } from '@/chat/hooks/useSendChatMesasge';
import { TarotQuestionRecommendListData } from '@/tarot/apis/getTarotQuestionRecommends';
import { useTarotQuestionRecommends } from '@/tarot/hooks/useTarotQuestionRecommends';
import { useRouter } from 'next/navigation';
import { css } from 'styled-components';
import QuickQuestionPicker from '../QuickQuestionPicker';
import RefreshQuickQuestionButton from '../RefreshQuickQuestionButton';
export default function QuickQuestionPickerBox() {
const { data } = useTarotQuestionRecommends();
const { mutate: createChatRoom } = useCreateChatRoom();
const { mutateAsync: sendChatMessage } = useSendChatMessage();
const router = useRouter();
if (!data) return null;
const adaptQuestionRecommends = (data: TarotQuestionRecommendListData) => {
const colors = ['primary03', 'grey10', 'primary01', 'grey60'] as const;
return data.questions.map((question, i) => ({
...question,
color: colors[i],
onClick: async () => {
await createUserKeyCookie();
createChatRoom(undefined, {
onSuccess: (data) => {
sendChatMessage(
{
roomId: data.roomId,
message: question.question,
intent: 'RECOMMEND_QUESTION',
referenceQuestionId: question.recommendQuestionId,
},
{
onSuccess: () => {
router.push(`/chats/${data.roomId}`);
},
}
);
},
});
},
}));
};
return (
<div>
<div
css={css`
display: grid;
grid-template-columns: repeat(2, 1fr);
grid-template-rows: repeat(2, 1fr);
gap: 8px;
`}
>
{adaptQuestionRecommends(data).map((question) => (
<QuickQuestionPicker
key={question.recommendQuestionId}
question={question.question}
onClick={question.onClick}
selectedCount={question.referenceCount}
color={question.color}
/>
))}
</div>
<div
css={css`
width: fit-content;
margin: 12px auto 0;
`}
>
<RefreshQuickQuestionButton />
</div>
</div>
);
}