forked from
jollywhoppers.com/witchsky.app
Bluesky app fork with some witchin' additions 馃挮
1import {useCallback} from 'react'
2import {msg} from '@lingui/macro'
3import {useLingui} from '@lingui/react'
4
5import {logEvent} from '#/lib/statsig/statsig'
6import {logger} from '#/logger'
7import {useGetConvoForMembers} from '#/state/queries/messages/get-convo-for-members'
8import * as Toast from '#/view/com/util/Toast'
9import * as Dialog from '#/components/Dialog'
10import {SearchablePeopleList} from '#/components/dialogs/SearchablePeopleList'
11
12export function SendViaChatDialog({
13 control,
14 onSelectChat,
15}: {
16 control: Dialog.DialogControlProps
17 onSelectChat: (chatId: string) => void
18}) {
19 return (
20 <Dialog.Outer control={control} testID="sendViaChatChatDialog">
21 <Dialog.Handle />
22 <SendViaChatDialogInner control={control} onSelectChat={onSelectChat} />
23 </Dialog.Outer>
24 )
25}
26
27function SendViaChatDialogInner({
28 control,
29 onSelectChat,
30}: {
31 control: Dialog.DialogControlProps
32 onSelectChat: (chatId: string) => void
33}) {
34 const {_} = useLingui()
35 const {mutate: createChat} = useGetConvoForMembers({
36 onSuccess: data => {
37 onSelectChat(data.convo.id)
38
39 if (!data.convo.lastMessage) {
40 logEvent('chat:create', {logContext: 'SendViaChatDialog'})
41 }
42 logEvent('chat:open', {logContext: 'SendViaChatDialog'})
43 },
44 onError: error => {
45 logger.error('Failed to share post to chat', {message: error})
46 Toast.show(
47 _(msg`An issue occurred while trying to open the chat`),
48 'xmark',
49 )
50 },
51 })
52
53 const onCreateChat = useCallback(
54 (did: string) => {
55 control.close(() => createChat([did]))
56 },
57 [control, createChat],
58 )
59
60 return (
61 <SearchablePeopleList
62 title={_(msg`Send skeet to...`)}
63 onSelectChat={onCreateChat}
64 showRecentConvos
65 sortByMessageDeclaration
66 />
67 )
68}