Skip to content

Commit 31a30f4

Browse files
authored
fix: refactor message handling and improve attached info parsing (#1074)
1 parent e7d07f5 commit 31a30f4

File tree

2 files changed

+9
-88
lines changed

2 files changed

+9
-88
lines changed

internal/conversation_msg/conversation_msg.go

Lines changed: 2 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,6 @@ import (
3535

3636
"github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
3737
"github.com/openimsdk/openim-sdk-core/v3/sdk_struct"
38-
39-
"github.com/jinzhu/copier"
4038
)
4139

4240
const (
@@ -285,7 +283,7 @@ func (c *Conversation) doMsgNew(c2v common.Cmd2Value) {
285283
msg.Status = constant.MsgStatusSendSuccess
286284

287285
//De-analyze data
288-
err := converter.MsgHandleByContentType(msg)
286+
err := converter.PopulateMsgStructByContentType(msg)
289287
if err != nil {
290288
log.ZError(ctx, "Parsing data error:", err, "type: ", msg.ContentType, "msg", msg)
291289
continue
@@ -516,13 +514,7 @@ func (c *Conversation) doMsgSyncByReinstalled(c2v common.Cmd2Value) {
516514
for _, v := range msgs.Msgs {
517515

518516
log.ZDebug(ctx, "parse message ", "conversationID", conversationID, "msg", v)
519-
msg := &sdk_struct.MsgStruct{}
520-
// TODO need replace when after.
521-
copier.Copy(msg, v)
522-
msg.Content = string(v.Content)
523-
var attachedInfo sdk_struct.AttachedInfoElem
524-
_ = utils.JsonStringToStruct(v.AttachedInfo, &attachedInfo)
525-
msg.AttachedInfoElem = &attachedInfo
517+
msg := converter.MsgDataToMsgStruct(v)
526518

527519
//When the message has been marked and deleted by the cloud, it is directly inserted locally without any conversation and message update.
528520
if msg.Status == constant.MsgStatusHasDeleted {

pkg/converter/conversation.go

Lines changed: 7 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -117,12 +117,6 @@ func LocalChatLogToMsgStruct(local *model_struct.LocalChatLog) *sdk_struct.MsgSt
117117
LocalEx: local.LocalEx,
118118
}
119119

120-
var attachedInfo sdk_struct.AttachedInfoElem
121-
if err := utils.JsonStringToStruct(local.AttachedInfo, &attachedInfo); err != nil {
122-
log.ZWarn(context.Background(), "JsonStringToStruct error", err, "localMessage.AttachedInfo", local.AttachedInfo)
123-
}
124-
msg.AttachedInfoElem = &attachedInfo
125-
126120
if err := PopulateMsgStructByContentType(msg); err != nil {
127121
log.ZWarn(context.Background(), "Parsing data error", err, "messageContent", msg.Content)
128122
}
@@ -201,6 +195,13 @@ func PopulateMsgStructByContentType(msg *sdk_struct.MsgStruct) (err error) {
201195
err = utils.JsonStringToStruct(msg.Content, &elem)
202196
msg.NotificationElem = &elem
203197
}
198+
var attachedInfo sdk_struct.AttachedInfoElem
199+
if msg.AttachedInfo != "" {
200+
if err := utils.JsonStringToStruct(msg.AttachedInfo, &attachedInfo); err != nil {
201+
log.ZWarn(context.Background(), "JsonStringToStruct error", err, "localMessage.AttachedInfo", msg.AttachedInfo)
202+
}
203+
msg.AttachedInfoElem = &attachedInfo
204+
}
204205
msg.Content = ""
205206
return errs.Wrap(err)
206207
}
@@ -339,75 +340,3 @@ func MsgDataToMsgStruct(serverMessage *sdkws.MsgData) *sdk_struct.MsgStruct {
339340
Ex: serverMessage.Ex,
340341
}
341342
}
342-
343-
func MsgHandleByContentType(msg *sdk_struct.MsgStruct) (err error) {
344-
switch msg.ContentType {
345-
case constant.Text:
346-
t := sdk_struct.TextElem{}
347-
err = utils.JsonStringToStruct(msg.Content, &t)
348-
msg.TextElem = &t
349-
case constant.Picture:
350-
t := sdk_struct.PictureElem{}
351-
err = utils.JsonStringToStruct(msg.Content, &t)
352-
msg.PictureElem = &t
353-
case constant.Sound:
354-
t := sdk_struct.SoundElem{}
355-
err = utils.JsonStringToStruct(msg.Content, &t)
356-
msg.SoundElem = &t
357-
case constant.Video:
358-
t := sdk_struct.VideoElem{}
359-
err = utils.JsonStringToStruct(msg.Content, &t)
360-
msg.VideoElem = &t
361-
case constant.File:
362-
t := sdk_struct.FileElem{}
363-
err = utils.JsonStringToStruct(msg.Content, &t)
364-
msg.FileElem = &t
365-
case constant.AdvancedText:
366-
t := sdk_struct.AdvancedTextElem{}
367-
err = utils.JsonStringToStruct(msg.Content, &t)
368-
msg.AdvancedTextElem = &t
369-
case constant.AtText:
370-
t := sdk_struct.AtTextElem{}
371-
err = utils.JsonStringToStruct(msg.Content, &t)
372-
msg.AtTextElem = &t
373-
case constant.Location:
374-
t := sdk_struct.LocationElem{}
375-
err = utils.JsonStringToStruct(msg.Content, &t)
376-
msg.LocationElem = &t
377-
case constant.Custom:
378-
fallthrough
379-
case constant.CustomMsgNotTriggerConversation:
380-
fallthrough
381-
case constant.CustomMsgOnlineOnly:
382-
t := sdk_struct.CustomElem{}
383-
err = utils.JsonStringToStruct(msg.Content, &t)
384-
msg.CustomElem = &t
385-
case constant.Typing:
386-
t := sdk_struct.TypingElem{}
387-
err = utils.JsonStringToStruct(msg.Content, &t)
388-
msg.TypingElem = &t
389-
case constant.Quote:
390-
t := sdk_struct.QuoteElem{}
391-
err = utils.JsonStringToStruct(msg.Content, &t)
392-
msg.QuoteElem = &t
393-
case constant.Merger:
394-
t := sdk_struct.MergeElem{}
395-
err = utils.JsonStringToStruct(msg.Content, &t)
396-
msg.MergeElem = &t
397-
case constant.Face:
398-
t := sdk_struct.FaceElem{}
399-
err = utils.JsonStringToStruct(msg.Content, &t)
400-
msg.FaceElem = &t
401-
case constant.Card:
402-
t := sdk_struct.CardElem{}
403-
err = utils.JsonStringToStruct(msg.Content, &t)
404-
msg.CardElem = &t
405-
default:
406-
t := sdk_struct.NotificationElem{}
407-
err = utils.JsonStringToStruct(msg.Content, &t)
408-
msg.NotificationElem = &t
409-
}
410-
msg.Content = ""
411-
412-
return errs.Wrap(err)
413-
}

0 commit comments

Comments
 (0)