@@ -13,6 +13,7 @@ import {
1313  setUserLastSeenInDirectMessageThread , 
1414  createMemberInDirectMessageThread , 
1515}  from  '../../models/usersDirectMessageThreads' ; 
16+ import  {  addMessage  }  from  '../message/addMessage' ; 
1617import  type  {  FileUpload  }  from  'shared/types' ; 
1718import  {  events  }  from  'shared/analytics' ; 
1819import  {  trackQueue  }  from  'shared/bull/queues' ; 
@@ -25,7 +26,7 @@ export type CreateDirectMessageThreadInput = {
2526    participants : Array < string > , 
2627    message : { 
2728      messageType : MessageType , 
28-       threadType : string , 
29+       threadType : 'directMessageThread' , 
2930      content : { 
3031        body : string , 
3132      } , 
@@ -81,65 +82,17 @@ export default requireAuth(
8182      threadId  =  threadToReturn . id ; 
8283    } 
8384
84-     const  handleStoreMessage  =  async  message  =>  { 
85-       if  ( 
86-         message . messageType  ===  messageTypeObj . text  || 
87-         message . messageType  ===  messageTypeObj . draftjs 
88-       )  { 
89-         // once we have an id we can generate a proper message object 
90-         const  messageWithThread  =  { 
91-           ...message , 
92-           threadId, 
93-         } ; 
94- 
95-         return  await  storeMessage ( messageWithThread ,  user . id ) ; 
96-       }  else  if  ( message . messageType  ===  messageTypeObj . media  &&  message . file )  { 
97-         let  url ; 
98-         try  { 
99-           url  =  await  uploadImage ( message . file ,  'threads' ,  threadId ) ; 
100-         }  catch  ( err )  { 
101-           trackQueue . add ( { 
102-             userId : user . id , 
103-             event : events . DIRECT_MESSAGE_THREAD_CREATED_FAILED , 
104-             properties : { 
105-               reason : 'image upload failed' , 
106-             } , 
107-           } ) ; 
108-           return  new  UserError ( err . message ) ; 
109-         } 
110- 
111-         // build a new message object with a new file field with metadata 
112-         const  newMessage  =  Object . assign ( { } ,  message ,  { 
113-           ...message , 
114-           threadId : threadId , 
115-           content : { 
116-             body : url , 
117-           } , 
118-           file : { 
119-             name : message . file  &&  message . file . filename , 
120-             size : null , 
121-             type : message . file  &&  message . file . mimetype , 
122-           } , 
123-         } ) ; 
124- 
125-         return  await  storeMessage ( newMessage ,  user . id ) ; 
126-       }  else  { 
127-         trackQueue . add ( { 
128-           userId : user . id , 
129-           event : events . DIRECT_MESSAGE_THREAD_CREATED_FAILED , 
130-           properties : { 
131-             reason : 'unknown message type' , 
132-           } , 
133-         } ) ; 
134-         return  new  UserError ( 'Unknown message type on this bad boy.' ) ; 
135-       } 
136-     } ; 
137- 
13885    if  ( existingThread )  { 
13986      return  await  Promise . all ( [ 
14087        setUserLastSeenInDirectMessageThread ( threadId ,  user . id ) , 
14188        setDirectMessageThreadLastActive ( threadId ) , 
142-         handleStoreMessage ( message ) , 
89+         addMessage ( 
90+           { 
91+             ...message , 
92+             threadId, 
93+           } , 
94+           user . id 
95+         ) , 
14396      ] ) . then ( ( )  =>  threadToReturn ) ; 
14497    } 
14598
@@ -150,7 +103,13 @@ export default requireAuth(
150103
151104    return  await  Promise . all ( [ 
152105      createMemberInDirectMessageThread ( threadId ,  user . id ,  true ) , 
153-       handleStoreMessage ( message ) , 
106+       addMessage ( 
107+         { 
108+           ...message , 
109+           threadId, 
110+         } , 
111+         user . id 
112+       ) , 
154113      participants . map ( participant  =>  { 
155114        trackQueue . add ( { 
156115          userId : participant , 
0 commit comments