1- import { getServerProfileForUser } from '@/services/profile.service' ;
2- import { getServerIdFromMessageId } from '@/services/server.service' ;
3- import { Role , ServerUser , ServerUserProfile , User } from '@/types/dbtypes' ;
4- import { useSupabaseClient } from '@supabase/auth-helpers-react' ;
5- import { memo , useEffect , useState } from 'react' ;
1+ import { useSideBarOptionSetter } from '@/context/SideBarOptionCtx' ;
2+ import { getOrCreateDMChannel } from '@/lib/DMChannelHelper' ;
3+ import { useDMChannels , useSetChannel } from '@/lib/store' ;
4+ import { createMessage } from '@/services/message.service' ;
5+ import { Role , ServerUser , User } from '@/types/dbtypes' ;
6+ import { useSupabaseClient , useUser } from '@supabase/auth-helpers-react' ;
7+ import { memo , } from 'react' ;
68import UserIcon from '../icons/UserIcon' ;
79import { SearchBar } from './Styles' ;
810
@@ -16,6 +18,12 @@ function WrappedComponent({
1618 server_user : ServerUser ;
1719 roles : Role [ ] ;
1820} ) {
21+ const user = useUser ( ) ;
22+ const supabase = useSupabaseClient ( ) ;
23+ const dmChannels = useDMChannels ( ) ;
24+ const setChannel = useSetChannel ( ) ;
25+ const setSideBarOption = useSideBarOptionSetter ( ) ;
26+
1927 return (
2028 < div className = "flex flex-col space-y-2 items-center p-3" >
2129 < UserIcon user = { profile } className = "!w-9 !h-9" />
@@ -42,13 +50,37 @@ function WrappedComponent({
4250 ) ) }
4351 </ div >
4452 < hr />
45- < form >
53+ { profile . id !== user ?. id && ( < form >
4654 < input
4755 type = "text"
4856 className = { `${ SearchBar ( 'bg-grey-900' ) } ` }
49- placeholder = { `Message @${ profile . username } ` }
57+ placeholder = { `Message ${ profile . username } ` }
58+ onKeyDown = { async ( e ) => {
59+ if ( e . key === 'Enter' ) {
60+ e . preventDefault ( ) ;
61+ const dmChannel = await getOrCreateDMChannel (
62+ supabase ,
63+ profile ,
64+ dmChannels
65+ ) ;
66+
67+ if ( dmChannel ) {
68+ await createMessage (
69+ supabase ,
70+ {
71+ content : ( e . target as HTMLInputElement ) . value ,
72+ channel_id : dmChannel . channel_id ,
73+ profile_id : user ! . id ,
74+ }
75+ ) ;
76+
77+ setSideBarOption ( 'friends' ) ;
78+ setChannel ( dmChannel ) ;
79+ }
80+ }
81+ } }
5082 />
51- </ form >
83+ </ form > ) }
5284 </ div >
5385 ) ;
5486}
0 commit comments