@@ -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