Skip to content

Commit eab602e

Browse files
authored
refactor: add a parameter to locate messages and reverse pull messages to avoid UI data interference. (#833)
* fix: quote message change to revoke message when app from background to foreground and message status update. Signed-off-by: Gordon <[email protected]> * feat: add a function to quickly retrieve the context messages for a given message. Signed-off-by: Gordon <[email protected]> * refactor: the SDK interface using the pb protocol to replace json. Signed-off-by: Gordon <[email protected]> * refactor: add a parameter to locate messages and reverse pull messages to avoid UI data interference. Signed-off-by: Gordon <[email protected]> * refactor: add a parameter to locate messages and reverse pull messages to avoid UI data interference. Signed-off-by: Gordon <[email protected]> --------- Signed-off-by: Gordon <[email protected]>
1 parent 27ba61a commit eab602e

18 files changed

+270
-51
lines changed

go.mod

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ require golang.org/x/net v0.29.0 // indirect
1818

1919
require (
2020
github.com/google/go-cmp v0.6.0
21-
github.com/openimsdk/protocol v0.0.72-alpha.63
21+
github.com/openimsdk/protocol v0.0.72-alpha.70
2222
github.com/openimsdk/tools v0.0.50-alpha.21
2323
github.com/patrickmn/go-cache v2.1.0+incompatible
2424
golang.org/x/image v0.15.0

go.sum

+2-2
Original file line numberDiff line numberDiff line change
@@ -66,8 +66,8 @@ github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w
6666
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
6767
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
6868
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
69-
github.com/openimsdk/protocol v0.0.72-alpha.63 h1:IyPBibEvwBtTmD8DSrlqcekfEXe74k4+KeeHsgdhGh0=
70-
github.com/openimsdk/protocol v0.0.72-alpha.63/go.mod h1:Iet+piS/jaS+kWWyj6EEr36mk4ISzIRYjoMSVA4dq2M=
69+
github.com/openimsdk/protocol v0.0.72-alpha.70 h1:j7vB81+rTthijRda2b8tlli9oWvPxr4yXHwZ8nPZIBQ=
70+
github.com/openimsdk/protocol v0.0.72-alpha.70/go.mod h1:Iet+piS/jaS+kWWyj6EEr36mk4ISzIRYjoMSVA4dq2M=
7171
github.com/openimsdk/tools v0.0.50-alpha.21 h1:ZKgSFkiBjz6KcNZlNwvrSoUYJ7K5Flan8wHuRBH3VqY=
7272
github.com/openimsdk/tools v0.0.50-alpha.21/go.mod h1:h1cYmfyaVtgFbKmb1Cfsl8XwUOMTt8ubVUQrdGtsUh4=
7373
github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc=

internal/conversation_msg/api.go

+17-15
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import (
1111
"sync"
1212
"time"
1313

14-
"github.com/openimsdk/openim-sdk-core/v3/pkg/cache"
1514
"github.com/openimsdk/tools/errs"
1615

1716
"github.com/openimsdk/openim-sdk-core/v3/internal/third/file"
@@ -1008,33 +1007,35 @@ func (c *Conversation) ChangeInputStates(ctx context.Context, conversationID str
10081007
return c.typing.ChangeInputStates(ctx, conversationID, focus)
10091008
}
10101009

1011-
func (c *Conversation) FetchSurroundingMessages(ctx context.Context, s *sdk_struct.MsgStruct, before int, after int) ([]*sdk_struct.MsgStruct, error) {
1012-
conversationID := utils.GetConversationIDByMsg(s)
1010+
func (c *Conversation) FetchSurroundingMessages(ctx context.Context, req *sdk_params_callback.FetchSurroundingMessagesReq) (*sdk_params_callback.FetchSurroundingMessagesResp, error) {
1011+
conversationID := utils.GetConversationIDByMsg(req.StartMessage)
10131012
var message *model_struct.LocalChatLog
1014-
message, err := c.db.GetMessage(ctx, conversationID, s.ClientMsgID)
1013+
message, err := c.db.GetMessage(ctx, conversationID, req.StartMessage.ClientMsgID)
10151014
if err == nil {
10161015
if message.Status >= constant.MsgStatusHasDeleted {
10171016
return nil, sdkerrs.ErrMsgHasDeleted
10181017
}
10191018
} else {
1020-
if s.Seq == 0 {
1019+
if req.StartMessage.Seq == 0 {
10211020
return nil, sdkerrs.ErrMsgHasDeleted
10221021
}
10231022
var messages []*model_struct.LocalChatLog
1024-
c.fetchAndMergeMissingMessages(ctx, conversationID, []int64{s.Seq}, false, 1, 0, &messages, &sdk.GetAdvancedHistoryMessageListCallback{})
1023+
c.fetchAndMergeMissingMessages(ctx, conversationID, []int64{req.StartMessage.Seq}, false, 1, 0, &messages, &sdk.GetAdvancedHistoryMessageListCallback{})
10251024
if len(messages) < 1 {
10261025
return nil, sdkerrs.ErrMsgHasDeleted
10271026
}
10281027
message = messages[0]
10291028
}
1029+
c.messagePullForwardEndSeqMap.Delete(conversationID, req.ViewType)
1030+
c.messagePullReverseEndSeqMap.Delete(conversationID, req.ViewType)
10301031

1031-
result := make([]*sdk_struct.MsgStruct, 0, before+after+1)
1032-
if before > 0 {
1032+
result := make([]*sdk_struct.MsgStruct, 0, req.Before+req.After+1)
1033+
if req.Before > 0 {
10331034
req := sdk.GetAdvancedHistoryMessageListParams{
10341035
ConversationID: conversationID,
1035-
Count: before,
1036-
StartClientMsgID: s.ClientMsgID,
1037-
ViewType: cache.ViewSearch,
1036+
Count: req.Before,
1037+
StartClientMsgID: req.StartMessage.ClientMsgID,
1038+
ViewType: req.ViewType,
10381039
}
10391040
val, err := c.getAdvancedHistoryMessageList(ctx, req, false)
10401041
if err != nil {
@@ -1043,17 +1044,18 @@ func (c *Conversation) FetchSurroundingMessages(ctx context.Context, s *sdk_stru
10431044
result = append(result, val.MessageList...)
10441045
}
10451046
result = append(result, LocalChatLogToMsgStruct(message))
1046-
if after > 0 {
1047+
if req.After > 0 {
10471048
req := sdk.GetAdvancedHistoryMessageListParams{
10481049
ConversationID: conversationID,
1049-
Count: after,
1050-
StartClientMsgID: s.ClientMsgID,
1050+
Count: req.After,
1051+
StartClientMsgID: req.StartMessage.ClientMsgID,
1052+
ViewType: req.ViewType,
10511053
}
10521054
val, err := c.getAdvancedHistoryMessageList(ctx, req, true)
10531055
if err != nil {
10541056
return nil, err
10551057
}
10561058
result = append(result, val.MessageList...)
10571059
}
1058-
return result, nil
1060+
return &sdk_params_callback.FetchSurroundingMessagesResp{MessageList: result}, nil
10591061
}

internal/conversation_msg/conversation.go

+49-7
Original file line numberDiff line numberDiff line change
@@ -65,11 +65,16 @@ func (c *Conversation) getAdvancedHistoryMessageList(ctx context.Context, req sd
6565
return nil, err
6666
}
6767
startTime = m.SendTime
68+
err = c.handleEndSeq(ctx, req, isReverse, m)
69+
if err != nil {
70+
return nil, err
71+
}
6872
} else {
6973
// Clear both maps when the user enters the conversation
7074
c.messagePullForwardEndSeqMap.Delete(conversationID, req.ViewType)
7175
c.messagePullReverseEndSeqMap.Delete(conversationID, req.ViewType)
7276
}
77+
7378
log.ZDebug(ctx, "Assembly conversation parameters", "cost time", time.Since(t), "conversationID",
7479
conversationID, "startTime:", startTime, "count:", req.Count, "startTime", startTime)
7580
list, err := c.fetchMessagesWithGapCheck(ctx, conversationID, req.Count, startTime, isReverse, req.ViewType, &messageListCallback)
@@ -84,13 +89,50 @@ func (c *Conversation) getAdvancedHistoryMessageList(ctx context.Context, req sd
8489
t = time.Now()
8590
if !isReverse {
8691
sort.Sort(messageList)
87-
8892
}
8993
log.ZDebug(ctx, "sort", "sort cost time", time.Since(t))
9094
messageListCallback.MessageList = messageList
9195

9296
return &messageListCallback, nil
9397
}
98+
func (c *Conversation) handleEndSeq(ctx context.Context, req sdk.GetAdvancedHistoryMessageListParams, isReverse bool, startMessage *model_struct.LocalChatLog) error {
99+
if isReverse {
100+
if _, ok := c.messagePullReverseEndSeqMap.Load(req.ConversationID, req.ViewType); !ok {
101+
if startMessage.Seq != 0 {
102+
c.messagePullReverseEndSeqMap.Store(req.ConversationID, req.ViewType, startMessage.Seq)
103+
} else {
104+
validServerMessage, err := c.db.GetLatestValidServerMessage(ctx, req.ConversationID, startMessage.SendTime, isReverse)
105+
if err != nil {
106+
return err
107+
}
108+
if validServerMessage != nil {
109+
c.messagePullReverseEndSeqMap.Store(req.ConversationID, req.ViewType, validServerMessage.Seq)
110+
} else {
111+
log.ZDebug(ctx, "no valid server message", "conversationID", req.ConversationID, "startTime", startMessage.SendTime)
112+
}
113+
}
114+
}
115+
116+
} else {
117+
if _, ok := c.messagePullForwardEndSeqMap.Load(req.ConversationID, req.ViewType); !ok {
118+
if startMessage.Seq != 0 {
119+
c.messagePullForwardEndSeqMap.Store(req.ConversationID, req.ViewType, startMessage.Seq)
120+
} else {
121+
validServerMessage, err := c.db.GetLatestValidServerMessage(ctx, req.ConversationID, startMessage.SendTime, isReverse)
122+
if err != nil {
123+
return err
124+
}
125+
if validServerMessage != nil {
126+
c.messagePullForwardEndSeqMap.Store(req.ConversationID, req.ViewType, validServerMessage.Seq)
127+
} else {
128+
log.ZDebug(ctx, "no valid server message", "conversationID", req.ConversationID, "startTime", startMessage.SendTime)
129+
}
130+
}
131+
132+
}
133+
}
134+
return nil
135+
}
94136

95137
func (c *Conversation) fetchMessagesWithGapCheck(ctx context.Context, conversationID string,
96138
count int, startTime int64, isReverse bool, viewType int, messageListCallback *sdk.GetAdvancedHistoryMessageListCallback) ([]*model_struct.LocalChatLog, error) {
@@ -127,27 +169,27 @@ func (c *Conversation) fetchMessagesWithGapCheck(ctx context.Context, conversati
127169
}
128170
if !isReverse {
129171
if thisEndSeq != 0 {
130-
c.messagePullForwardEndSeqMap.StoreWithFunc(conversationID, viewType, thisEndSeq, func(key string, value int64) bool {
131-
lastEndSeq, _ := c.messagePullForwardEndSeqMap.Load(key, viewType)
172+
c.messagePullForwardEndSeqMap.StoreWithFunc(conversationID, viewType, thisEndSeq, func(_ string, value int64) bool {
173+
lastEndSeq, _ := c.messagePullForwardEndSeqMap.Load(conversationID, viewType)
132174
if value < lastEndSeq || lastEndSeq == 0 {
133175
log.ZDebug(ctx, "update the end sequence of the message", "lastEndSeq", lastEndSeq, "thisEndSeq", value)
134176
return true
135177
}
136178
log.ZWarn(ctx, "The end sequence number of the message is more than the last end sequence number",
137-
nil, "conversationID", key, "value", value, "lastEndSeq", lastEndSeq)
179+
nil, "conversationID", conversationID, "value", value, "lastEndSeq", lastEndSeq)
138180
return false
139181
})
140182
}
141183
} else {
142184
if thisEndSeq != 0 {
143-
c.messagePullReverseEndSeqMap.StoreWithFunc(conversationID, viewType, thisEndSeq, func(key string, value int64) bool {
144-
lastEndSeq, _ := c.messagePullReverseEndSeqMap.Load(key, viewType)
185+
c.messagePullReverseEndSeqMap.StoreWithFunc(conversationID, viewType, thisEndSeq, func(_ string, value int64) bool {
186+
lastEndSeq, _ := c.messagePullReverseEndSeqMap.Load(conversationID, viewType)
145187
if value > lastEndSeq || lastEndSeq == 0 {
146188
log.ZDebug(ctx, "update the end sequence of the message", "lastEndSeq", lastEndSeq, "thisEndSeq", value)
147189
return true
148190
}
149191
log.ZWarn(ctx, "The end sequence number of the message is less than the last end sequence number",
150-
nil, "conversationID", key, "value", value, "lastEndSeq", lastEndSeq)
192+
nil, "conversationID", conversationID, "value", value, "lastEndSeq", lastEndSeq)
151193
return false
152194
})
153195
}

internal/conversation_msg/message_check.go

+17-6
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ func (c *Conversation) validateAndFillInternalGaps(ctx context.Context, conversa
2525
maxSeq, minSeq, haveSeqList := c.getMaxAndMinHaveSeqList(*list)
2626
log.ZDebug(ctx, "getMaxAndMinHaveSeqList is:", "maxSeq", maxSeq, "minSeq", minSeq, "haveSeqList", haveSeqList)
2727
if maxSeq != 0 && minSeq != 0 {
28-
lostSeqList := getLostSeqListWithLimitLength(minSeq, maxSeq, haveSeqList)
28+
lostSeqList := getLostSeqListWithLimitLength(minSeq, maxSeq, haveSeqList, isReverse)
2929
lostSeqListLength = len(lostSeqList)
3030
log.ZDebug(ctx, "get lost seqList is :", "maxSeq", maxSeq, "minSeq", minSeq, "lostSeqList", lostSeqList, "length:", lostSeqListLength)
3131
if lostSeqListLength > 0 {
@@ -60,7 +60,7 @@ func (c *Conversation) validateAndFillInterBlockGaps(ctx context.Context, thisSt
6060
}
6161
if isLostSeq && lastEndSeq != 0 {
6262
log.ZDebug(ctx, "get lost LastMinSeq is :", "lastEndSeq", lastEndSeq, "thisStartSeq", thisStartSeq, "startSeq", startSeq, "endSeq", endSeq)
63-
lostSeqList := getLostSeqListWithLimitLength(startSeq, endSeq, []int64{})
63+
lostSeqList := getLostSeqListWithLimitLength(startSeq, endSeq, []int64{}, isReverse)
6464
log.ZDebug(ctx, "get lost lostSeqList is :", "lostSeqList", lostSeqList, "length:", len(lostSeqList))
6565
if len(lostSeqList) > 0 {
6666
log.ZDebug(ctx, "messageBlocksBetweenContinuityCheck", "lostSeqList", lostSeqList)
@@ -104,7 +104,7 @@ func (c *Conversation) checkEndBlock(ctx context.Context, conversationID string,
104104
// The batch includes sequences but has not reached the maximum value,
105105
// This condition indicates local-only messages, with `maxSeq < maxSeqRecorderMaxSeq` as the only case,
106106
// since `lastEndSeq < maxSeqRecorderMaxSeq` is handled in inter-block continuity.
107-
lostSeqList := getLostSeqListWithLimitLength(maxSeq+1, currentMaxSeq, []int64{})
107+
lostSeqList := getLostSeqListWithLimitLength(maxSeq+1, currentMaxSeq, []int64{}, isReverse)
108108
if len(lostSeqList) > 0 {
109109
isShouldFetchMessage = true
110110
seqList = lostSeqList
@@ -134,7 +134,7 @@ func (c *Conversation) checkEndBlock(ctx context.Context, conversationID string,
134134
// The batch includes sequences but has not reached the minimum value,
135135
// This condition indicates local-only messages, with `minSeq > userCanPullMinSeq` as the only case,
136136
// since `lastMinSeq > userCanPullMinSeq` is handled in inter-block continuity.
137-
lostSeqList := getLostSeqListWithLimitLength(userCanPullMinSeq, minSeq-1, []int64{})
137+
lostSeqList := getLostSeqListWithLimitLength(userCanPullMinSeq, minSeq-1, []int64{}, isReverse)
138138
if len(lostSeqList) > 0 {
139139
isShouldFetchMessage = true
140140
seqList = lostSeqList
@@ -171,19 +171,30 @@ func (c *Conversation) getMaxAndMinHaveSeqList(messages []*model_struct.LocalCha
171171
return max, min, seqList
172172
}
173173

174-
func getLostSeqListWithLimitLength(minSeq, maxSeq int64, haveSeqList []int64) []int64 {
174+
func getLostSeqListWithLimitLength(minSeq, maxSeq int64, haveSeqList []int64, isReverse bool) []int64 {
175175
var lostSeqList []int64
176176
haveSeqSet := datautil.SliceSetAny(haveSeqList, func(e int64) int64 {
177177
return e
178178
})
179+
179180
for i := minSeq; i <= maxSeq; i++ {
180181
if _, found := haveSeqSet[i]; !found {
181182
lostSeqList = append(lostSeqList, i)
182183
}
183184
}
185+
186+
// If the lostSeqList exceeds the max limit, trim the list
184187
if len(lostSeqList) > constant.PullMsgNumForReadDiffusion {
185-
return lostSeqList[len(lostSeqList)-constant.PullMsgNumForReadDiffusion:]
188+
if isReverse {
189+
// If isReverse is true, take the first constant.PullMsgNumForReadDiffusion sequences
190+
return lostSeqList[:constant.PullMsgNumForReadDiffusion]
191+
} else {
192+
// If isReverse is false, take the last constant.PullMsgNumForReadDiffusion sequences
193+
return lostSeqList[len(lostSeqList)-constant.PullMsgNumForReadDiffusion:]
194+
}
186195
}
196+
197+
// Return the entire lostSeqList if it's within the limit
187198
return lostSeqList
188199
}
189200

internal/conversation_msg/read_drawing.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"github.com/openimsdk/openim-sdk-core/v3/pkg/common"
2323
"github.com/openimsdk/openim-sdk-core/v3/pkg/constant"
2424
"github.com/openimsdk/openim-sdk-core/v3/pkg/db/model_struct"
25-
"github.com/openimsdk/openim-sdk-core/v3/pkg/sdkerrs"
2625
"github.com/openimsdk/openim-sdk-core/v3/pkg/utils"
2726
"github.com/openimsdk/openim-sdk-core/v3/sdk_struct"
2827
"github.com/openimsdk/tools/errs"
@@ -52,7 +51,8 @@ func (c *Conversation) markConversationMessageAsRead(ctx context.Context, conver
5251
return err
5352
}
5453
if conversation.UnreadCount == 0 {
55-
return sdkerrs.ErrUnreadCount
54+
log.ZWarn(ctx, "unread count is 0", nil, "conversationID", conversationID)
55+
return nil
5656
}
5757
// get the maximum sequence number of messages in the table that are not sent by oneself
5858
peerUserMaxSeq, err := c.db.GetConversationPeerNormalMsgSeq(ctx, conversationID)

internal/interaction/long_conn_mgr.go

+2
Original file line numberDiff line numberDiff line change
@@ -506,6 +506,8 @@ func (c *LongConnMgr) handleMessage(message []byte) error {
506506
fallthrough
507507
case constant.GetConvMaxReadSeq:
508508
fallthrough
509+
case constant.PullConvLastMessage:
510+
fallthrough
509511
case constant.SendMsg:
510512
fallthrough
511513
case constant.SendSignalMsg:

internal/interaction/msg_sync.go

+45-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
"github.com/openimsdk/openim-sdk-core/v3/pkg/db/db_interface"
3131
"github.com/openimsdk/openim-sdk-core/v3/pkg/db/model_struct"
3232
"github.com/openimsdk/openim-sdk-core/v3/sdk_struct"
33+
"github.com/openimsdk/protocol/msg"
3334
"github.com/openimsdk/tools/errs"
3435

3536
"github.com/openimsdk/protocol/sdkws"
@@ -100,7 +101,7 @@ func (m *MsgSyncer) loadSeq(ctx context.Context) error {
100101
}
101102
}
102103

103-
// TODO With a large number of sessions, this could potentially cause blocking and needs optimization.
104+
// TODO With a large number of sessions(10w), this could potentially cause blocking and needs optimization.
104105

105106
type SyncedSeq struct {
106107
ConversationID string
@@ -476,6 +477,7 @@ func (m *MsgSyncer) syncAndTriggerReinstallMsgs(ctx context.Context, seqMap map[
476477
log.ZError(ctx, "syncMsgFromServer err", err, "tempSeqMap", tpSeqMap)
477478
return err
478479
}
480+
m.checkMessagesAndGetLastMessage(ctx, resp.Msgs)
479481
_ = m.triggerReinstallConversation(ctx, resp.Msgs, total)
480482
for conversationID, seqs := range tpSeqMap {
481483
m.syncedMaxSeqsLock.Lock()
@@ -495,6 +497,7 @@ func (m *MsgSyncer) syncAndTriggerReinstallMsgs(ctx context.Context, seqMap map[
495497
log.ZError(ctx, "syncMsgFromServer err", err, "seqMap", seqMap)
496498
return err
497499
}
500+
m.checkMessagesAndGetLastMessage(ctx, resp.Msgs)
498501
_ = m.triggerReinstallConversation(ctx, resp.Msgs, total)
499502
for conversationID, seqs := range seqMap {
500503
m.syncedMaxSeqsLock.Lock()
@@ -512,6 +515,33 @@ func (m *MsgSyncer) syncAndTriggerReinstallMsgs(ctx context.Context, seqMap map[
512515
}
513516
return nil
514517
}
518+
func (m *MsgSyncer) checkMessagesAndGetLastMessage(ctx context.Context, messages map[string]*sdkws.PullMsgs) {
519+
var conversationIDs []string
520+
521+
for conversationID, message := range messages {
522+
allInValid := true
523+
for _, data := range message.Msgs {
524+
if data.Status < constant.MsgStatusHasDeleted {
525+
allInValid = false
526+
break
527+
}
528+
}
529+
if allInValid {
530+
conversationIDs = append(conversationIDs, conversationID)
531+
}
532+
}
533+
if len(conversationIDs) > 0 {
534+
resp, err := m.fetchLatestValidMessages(ctx, conversationIDs)
535+
if err != nil {
536+
log.ZError(ctx, "fetchLatestValidMessages", err, "conversationIDs", conversationIDs)
537+
return
538+
}
539+
for conversationID, message := range resp.Msgs {
540+
messages[conversationID] = &sdkws.PullMsgs{Msgs: []*sdkws.MsgData{message}}
541+
}
542+
}
543+
544+
}
515545

516546
func (m *MsgSyncer) splitSeqs(split int, seqsNeedSync []int64) (splitSeqs [][]int64) {
517547
if len(seqsNeedSync) <= split {
@@ -547,6 +577,20 @@ func (m *MsgSyncer) pullMsgBySeqRange(ctx context.Context, seqMap map[string][2]
547577
return resp, nil
548578
}
549579

580+
func (m *MsgSyncer) fetchLatestValidMessages(ctx context.Context, conversationID []string) (resp *msg.GetLastMessageResp, err error) {
581+
log.ZDebug(ctx, "fetchLatestValidMessages", "conversationID", conversationID)
582+
583+
req := msg.GetLastMessageReq{
584+
UserID: m.loginUserID,
585+
ConversationIDs: conversationID,
586+
}
587+
resp = &msg.GetLastMessageResp{}
588+
if err := m.longConnMgr.SendReqWaitResp(ctx, &req, constant.PullConvLastMessage, resp); err != nil {
589+
return nil, err
590+
}
591+
return resp, nil
592+
}
593+
550594
// synchronizes messages by SEQs.
551595
func (m *MsgSyncer) syncMsgBySeqs(ctx context.Context, conversationID string, seqsNeedSync []int64) (allMsgs []*sdkws.MsgData, err error) {
552596
pullMsgReq := sdkws.PullMessageBySeqsReq{}

open_im_sdk/conversation_msg.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -223,6 +223,6 @@ func GetInputStates(callback open_im_sdk_callback.Base, operationID string, conv
223223
call(callback, operationID, UserForSDK.Conversation().GetInputStates, conversationID, userID)
224224
}
225225

226-
func FetchSurroundingMessages(callback open_im_sdk_callback.Base, operationID string, message string, before int, after int) {
227-
call(callback, operationID, UserForSDK.Conversation().FetchSurroundingMessages, message, before, after)
226+
func FetchSurroundingMessages(callback open_im_sdk_callback.Base, operationID string, req string) {
227+
call(callback, operationID, UserForSDK.Conversation().FetchSurroundingMessages, req)
228228
}

0 commit comments

Comments
 (0)