mirror of https://git.lenooby09.tech/LeNooby09/social-app.git
at verify-code 69 lines 1.9 kB view raw
1import React, {useCallback} from 'react' 2import {msg} from '@lingui/macro' 3import {useLingui} from '@lingui/react' 4 5import {logger} from '#/logger' 6import {useGetConvoForMembers} from '#/state/queries/messages/get-convo-for-members' 7import {logEvent} from 'lib/statsig/statsig' 8import {FAB} from '#/view/com/util/fab/FAB' 9import * as Toast from '#/view/com/util/Toast' 10import {useTheme} from '#/alf' 11import * as Dialog from '#/components/Dialog' 12import {PlusLarge_Stroke2_Corner0_Rounded as Plus} from '#/components/icons/Plus' 13import {SearchablePeopleList} from './SearchablePeopleList' 14 15export function NewChat({ 16 control, 17 onNewChat, 18}: { 19 control: Dialog.DialogControlProps 20 onNewChat: (chatId: string) => void 21}) { 22 const t = useTheme() 23 const {_} = useLingui() 24 25 const {mutate: createChat} = useGetConvoForMembers({ 26 onSuccess: data => { 27 onNewChat(data.convo.id) 28 29 if (!data.convo.lastMessage) { 30 logEvent('chat:create', {logContext: 'NewChatDialog'}) 31 } 32 logEvent('chat:open', {logContext: 'NewChatDialog'}) 33 }, 34 onError: error => { 35 logger.error('Failed to create chat', {safeMessage: error}) 36 Toast.show(_(msg`An issue occurred starting the chat`), 'xmark') 37 }, 38 }) 39 40 const onCreateChat = useCallback( 41 (did: string) => { 42 control.close(() => createChat([did])) 43 }, 44 [control, createChat], 45 ) 46 47 return ( 48 <> 49 <FAB 50 testID="newChatFAB" 51 onPress={control.open} 52 icon={<Plus size="lg" fill={t.palette.white} />} 53 accessibilityRole="button" 54 accessibilityLabel={_(msg`New chat`)} 55 accessibilityHint="" 56 /> 57 58 <Dialog.Outer 59 control={control} 60 testID="newChatDialog" 61 nativeOptions={{sheet: {snapPoints: ['100%']}}}> 62 <SearchablePeopleList 63 title={_(msg`Start a new chat`)} 64 onSelectChat={onCreateChat} 65 /> 66 </Dialog.Outer> 67 </> 68 ) 69}