Skip to content

Commit 9356ccd

Browse files
committed
fix
1 parent e87827b commit 9356ccd

File tree

1 file changed

+21
-56
lines changed

1 file changed

+21
-56
lines changed

service/messages.go

Lines changed: 21 additions & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -197,17 +197,24 @@ func (s *MessageService) SendMessage(ctx context.Context, req *models.SendMessag
197197

198198
var content *event.MessageEventContent
199199

200-
// Check if this is a file transfer message
201-
if models.IsFileTransferContentType(req.ContentType) {
202-
logger.Debug().Str("content_type", req.ContentType).Msg("processing file transfer message")
200+
// Always expect file transfer format
201+
logger.Debug().Str("content_type", req.ContentType).Msg("processing file transfer message")
203202

204-
// Parse the file transfer JSON from the body
205-
ftMsg, err := models.ParseFileTransferMessage(req.Body)
206-
if err != nil {
207-
logger.Warn().Err(err).Str("body", req.Body).Msg("failed to parse file transfer message")
208-
return nil, fmt.Errorf("invalid file transfer message: %w", err)
209-
}
203+
// Parse the file transfer JSON from the body
204+
ftMsg, err := models.ParseFileTransferMessage(req.Body)
205+
if err != nil {
206+
logger.Warn().Err(err).Str("body", req.Body).Msg("failed to parse file transfer message")
207+
return nil, fmt.Errorf("invalid file transfer message: %w", err)
208+
}
210209

210+
// Check if attachments are empty - if so, treat as text message
211+
if len(ftMsg.Attachments) == 0 {
212+
logger.Debug().Msg("file transfer message has empty attachments, sending as text message")
213+
content = &event.MessageEventContent{
214+
MsgType: event.MsgText,
215+
Body: ftMsg.Body,
216+
}
217+
} else {
211218
// Convert to Matrix event content
212219
msgType, rawContent, err := models.FileTransferToMatrixEventContent(ftMsg)
213220
if err != nil {
@@ -253,12 +260,6 @@ func (s *MessageService) SendMessage(ctx context.Context, req *models.SendMessag
253260
}
254261

255262
logger.Debug().Str("msg_type", msgType).Str("url", string(content.URL)).Msg("converted file transfer to Matrix media message")
256-
} else {
257-
// Regular text message
258-
content = &event.MessageEventContent{
259-
MsgType: event.MsgText,
260-
Body: req.Body,
261-
}
262263
}
263264

264265
resp, err := s.matrixClient.SendMessage(ctx, senderMatrix, roomID, content)
@@ -353,53 +354,18 @@ func (s *MessageService) FetchMessages(ctx context.Context, req *models.FetchMes
353354

354355
logger.Debug().Str("event_id", string(evt.ID)).Str("room_id", string(eventRoomID)).Msg("processing message event")
355356

356-
// Get message type from content
357-
msgType := ""
358-
if mt, ok := evt.Content.Raw["msgtype"].(string); ok {
359-
msgType = mt
357+
body := ""
358+
if b, ok := evt.Content.Raw["body"].(string); ok {
359+
body = b
360360
}
361-
362-
// Initialize SMS with common fields
363361
sms := models.SMS{
364362
SMSID: string(evt.ID),
365363
SendingDate: time.UnixMilli(evt.Timestamp).UTC().Format(time.RFC3339),
364+
SMSText: body,
365+
ContentType: "text/plain",
366366
StreamID: string(roomID),
367367
}
368368

369-
// Handle different message types
370-
switch msgType {
371-
case "m.image", "m.video", "m.audio", "m.file":
372-
// Convert Matrix media message to Acrobits file transfer format
373-
body := ""
374-
if b, ok := evt.Content.Raw["body"].(string); ok {
375-
body = b
376-
}
377-
378-
url, mimeType, filename, size, thumbnailURL, thumbnailMimeType := models.ExtractMatrixMediaInfo(evt.Content.Raw)
379-
380-
// Convert to file transfer JSON
381-
ftJSON, err := models.MatrixMediaToFileTransfer(msgType, body, url, mimeType, filename, size, thumbnailURL, thumbnailMimeType)
382-
if err != nil {
383-
logger.Warn().Err(err).Str("event_id", string(evt.ID)).Msg("failed to convert Matrix media to file transfer")
384-
// Fall back to text message with URL
385-
sms.SMSText = url
386-
sms.ContentType = "text/plain"
387-
} else {
388-
sms.SMSText = ftJSON
389-
sms.ContentType = models.FileTransferContentType
390-
logger.Debug().Str("event_id", string(evt.ID)).Str("msg_type", msgType).Str("url", url).Msg("converted Matrix media message to file transfer")
391-
}
392-
393-
default:
394-
// Regular text message
395-
body := ""
396-
if b, ok := evt.Content.Raw["body"].(string); ok {
397-
body = b
398-
}
399-
sms.SMSText = body
400-
sms.ContentType = "text/plain"
401-
}
402-
403369
// Determine if I sent the message
404370
senderMatrixID := string(evt.Sender)
405371
isSent := isSentBy(senderMatrixID, string(userID))
@@ -423,7 +389,6 @@ func (s *MessageService) FetchMessages(ctx context.Context, req *models.FetchMes
423389
Str("sender", sms.Sender).
424390
Str("recipient", sms.Recipient).
425391
Bool("is_sent", isSent).
426-
Str("content_type", sms.ContentType).
427392
Interface("sms", sms).
428393
Msg("processed message from sync")
429394

0 commit comments

Comments
 (0)