Skip to content

Commit b9d2c4e

Browse files
authored
Merge branch 'openimsdk:main' into main
2 parents 9ef1c99 + 290f272 commit b9d2c4e

File tree

12 files changed

+188
-118
lines changed

12 files changed

+188
-118
lines changed

.github/workflows/cleanup-after-milestone-prs-merged.yml

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111

1212
steps:
1313
- name: Checkout repository
14-
uses: actions/checkout@v3
14+
uses: actions/checkout@v4.2.0
1515

1616
- name: Get the PR title and extract PR numbers
1717
id: extract_pr_numbers
@@ -36,15 +36,6 @@ jobs:
3636
echo "proceed=false" >> $GITHUB_OUTPUT
3737
fi
3838
39-
- name: Delete branch after PR close
40-
if: steps.extract_pr_numbers.outputs.proceed == 'true' || contains(github.event.pull_request.labels.*.name, 'milestone-merge')
41-
run: |
42-
BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
43-
echo "Branch to delete: $BRANCH_NAME"
44-
git push origin --delete "$BRANCH_NAME"
45-
env:
46-
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
47-
4839
- name: Use extracted PR numbers and label PRs
4940
if: (steps.extract_pr_numbers.outputs.proceed == 'true' || contains(github.event.pull_request.labels.*.name, 'milestone-merge')) && github.event.pull_request.merged == true
5041
run: |
@@ -63,3 +54,12 @@ jobs:
6354
done
6455
env:
6556
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
57+
58+
- name: Delete branch after PR close
59+
if: steps.extract_pr_numbers.outputs.proceed == 'true' || contains(github.event.pull_request.labels.*.name, 'milestone-merge')
60+
run: |
61+
BRANCH_NAME="${{ github.event.pull_request.head.ref }}"
62+
echo "Branch to delete: $BRANCH_NAME"
63+
git push origin --delete "$BRANCH_NAME"
64+
env:
65+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

internal/conversation_msg/api.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -520,12 +520,16 @@ func (c *Conversation) SendMessage(ctx context.Context, s *sdk_struct.MsgStruct,
520520
break
521521
}
522522
name := s.FileElem.FileName
523+
523524
if name == "" {
524525
name = s.FileElem.FilePath
525526
}
526527
if name == "" {
527528
name = fmt.Sprintf("msg_file_%s.unknown", s.ClientMsgID)
528529
}
530+
531+
delFile = append(delFile, s.FileElem.FilePath)
532+
529533
res, err := c.file.UploadFile(ctx, &file.UploadFileReq{
530534
ContentType: content_type.GetType(s.FileElem.FileType, filepath.Ext(s.FileElem.FilePath), filepath.Ext(s.FileElem.FileName)),
531535
Filepath: s.FileElem.FilePath,
@@ -657,7 +661,7 @@ func (c *Conversation) SendMessageNotOss(ctx context.Context, s *sdk_struct.MsgS
657661
}
658662

659663
func (c *Conversation) sendMessageToServer(ctx context.Context, s *sdk_struct.MsgStruct, lc *model_struct.LocalConversation, callback open_im_sdk_callback.SendMsgCallBack,
660-
delFile []string, offlinePushInfo *sdkws.OfflinePushInfo, options map[string]bool, isOnlineOnly bool) (*sdk_struct.MsgStruct, error) {
664+
delFiles []string, offlinePushInfo *sdkws.OfflinePushInfo, options map[string]bool, isOnlineOnly bool) (*sdk_struct.MsgStruct, error) {
661665
if isOnlineOnly {
662666
utils.SetSwitchFromOptions(options, constant.IsHistory, false)
663667
utils.SetSwitchFromOptions(options, constant.IsPersistent, false)
@@ -709,13 +713,14 @@ func (c *Conversation) sendMessageToServer(ctx context.Context, s *sdk_struct.Ms
709713
s.ServerMsgID = sendMsgResp.ServerMsgID
710714
go func() {
711715
//remove media cache file
712-
for _, v := range delFile {
713-
err := os.Remove(v)
716+
for _, file := range delFiles {
717+
err := os.Remove(file)
714718
if err != nil {
715-
// log.Error("", "remove failed,", err.Error(), v)
719+
log.ZError(ctx, "delete temp File is failed", err, "filePath", file)
716720
}
717-
// log.Debug("", "remove file: ", v)
721+
// log.ZDebug(ctx, "remove temp file:", "file", file)
718722
}
723+
719724
c.updateMsgStatusAndTriggerConversation(ctx, sendMsgResp.ClientMsgID, sendMsgResp.ServerMsgID, sendMsgResp.SendTime, constant.MsgStatusSendSuccess, s, lc, isOnlineOnly)
720725
}()
721726
return s, nil

internal/conversation_msg/conversation.go

Lines changed: 26 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -337,9 +337,13 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
337337
if err != nil {
338338
return nil, err
339339
}
340+
340341
// Search by content type or keyword based on provided parameters
341342
if len(searchParam.MessageTypeList) != 0 && len(searchParam.KeywordList) == 0 {
342-
list, err = c.db.SearchMessageByContentType(ctx, searchParam.MessageTypeList, searchParam.ConversationID, startTime, endTime, offset, searchParam.Count)
343+
list, err = c.db.SearchMessageByContentType(ctx, searchParam.MessageTypeList, searchParam.SenderUserIDList, searchParam.ConversationID, startTime, endTime, offset, searchParam.Count)
344+
if err != nil {
345+
return nil, err
346+
}
343347
} else {
344348
newContentTypeList := func(list []int) (result []int) {
345349
for _, v := range list {
@@ -349,18 +353,24 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
349353
}
350354
return result
351355
}(searchParam.MessageTypeList)
356+
352357
if len(newContentTypeList) == 0 {
353358
newContentTypeList = SearchContentType
354359
}
355-
list, err = c.db.SearchMessageByKeyword(ctx, newContentTypeList, searchParam.KeywordList, searchParam.KeywordListMatchType,
356-
searchParam.ConversationID, startTime, endTime, offset, searchParam.Count)
360+
361+
list, err = c.db.SearchMessageByKeyword(ctx, newContentTypeList, searchParam.SenderUserIDList, searchParam.KeywordList,
362+
searchParam.KeywordListMatchType, searchParam.ConversationID, startTime, endTime, offset, searchParam.Count)
363+
if err != nil {
364+
return nil, err
365+
}
357366
}
358367
} else {
359368
// Comprehensive search across all conversations
360369
if len(searchParam.MessageTypeList) == 0 {
361370
searchParam.MessageTypeList = SearchContentType
362371
}
363-
list, err = c.searchMessageByContentTypeAndKeyword(ctx, searchParam.MessageTypeList, searchParam.KeywordList, searchParam.KeywordListMatchType, startTime, endTime)
372+
373+
list, err = c.searchMessageByContentTypeAndKeyword(ctx, searchParam.MessageTypeList, searchParam.SenderUserIDList, searchParam.KeywordList, searchParam.KeywordListMatchType, startTime, endTime)
364374
}
365375

366376
// Handle any errors encountered during the search
@@ -377,7 +387,7 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
377387
//log.Debug("hahh",utils.KMP("SSSsdf3434","F3434"))
378388
//log.Debug("hahh",utils.KMP("SSSsdf3434","SDF3"))
379389
// log.Debug("", "get raw data length is", len(list))
380-
log.ZDebug(ctx, "get raw data length is", len(list))
390+
log.ZDebug(ctx, "get raw data length is", "len", len(list))
381391

382392
for _, v := range list {
383393
temp := sdk_struct.MsgStruct{}
@@ -465,21 +475,23 @@ func (c *Conversation) searchLocalMessages(ctx context.Context, searchParam *sdk
465475
return &r, nil // Return the final search results
466476
}
467477

468-
func (c *Conversation) searchMessageByContentTypeAndKeyword(ctx context.Context, contentType []int, keywordList []string,
478+
func (c *Conversation) searchMessageByContentTypeAndKeyword(ctx context.Context, contentType []int, senderUserIDList []string, keywordList []string,
469479
keywordListMatchType int, startTime, endTime int64) (result []*model_struct.LocalChatLog, err error) {
470480
var list []*model_struct.LocalChatLog
481+
471482
conversationIDList, err := c.db.GetAllConversationIDList(ctx)
472483
if err != nil {
473484
return nil, err
474485
}
475486

476487
var mu sync.Mutex
477-
g, _ := errgroup.WithContext(ctx)
478-
g.SetLimit(searchMessageGoroutineLimit)
479-
for _, v := range conversationIDList {
480-
conversationID := v
481-
g.Go(func() error {
482-
sList, err := c.db.SearchMessageByContentTypeAndKeyword(ctx, contentType, conversationID, keywordList, keywordListMatchType, startTime, endTime)
488+
eg, _ := errgroup.WithContext(ctx)
489+
eg.SetLimit(searchMessageGoroutineLimit)
490+
for _, cID := range conversationIDList {
491+
conversationID := cID
492+
493+
eg.Go(func() error {
494+
sList, err := c.db.SearchMessageByContentTypeAndKeyword(ctx, contentType, conversationID, senderUserIDList, keywordList, keywordListMatchType, startTime, endTime)
483495
if err != nil {
484496
log.ZWarn(ctx, "search conversation message", err, "conversationID", conversationID)
485497
return nil
@@ -488,11 +500,12 @@ func (c *Conversation) searchMessageByContentTypeAndKeyword(ctx context.Context,
488500
mu.Lock()
489501
list = append(list, sList...)
490502
mu.Unlock()
503+
491504
return nil
492505
})
493506
}
494507

495-
if err := g.Wait(); err != nil {
508+
if err := eg.Wait(); err != nil {
496509
return nil, err
497510
}
498511

internal/conversation_msg/conversation_msg.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ import (
4444

4545
const (
4646
conversationSyncLimit int64 = math.MaxInt64
47-
searchMessageGoroutineLimit = 10
47+
searchMessageGoroutineLimit int = 10
4848
)
4949

5050
var SearchContentType = []int{constant.Text, constant.AtText, constant.File}

internal/group/cache.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ func (g *Group) GetGroupMembersInfoFunc(ctx context.Context, groupID string, use
2222
for _, userID := range userIDs {
2323
key := g.buildGroupMemberKey(groupID, userID)
2424
if member, ok := g.groupMemberCache.Load(key); ok {
25-
res[key] = member
25+
res[userID] = member
2626
} else {
2727
missingKeys = append(missingKeys, userIDs...)
2828
}
@@ -36,7 +36,7 @@ func (g *Group) GetGroupMembersInfoFunc(ctx context.Context, groupID string, use
3636

3737
for i, data := range fetchData {
3838
key := g.buildGroupMemberKey(groupID, data.UserID)
39-
res[key] = fetchData[i]
39+
res[data.UserID] = fetchData[i]
4040
g.groupMemberCache.Store(key, fetchData[i])
4141
}
4242

internal/interaction/msg_sync.go

Lines changed: 21 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -88,8 +88,15 @@ func (m *MsgSyncer) loadSeq(ctx context.Context) error {
8888
log.ZError(ctx, "get conversation id list failed", err)
8989
return err
9090
}
91+
9192
if len(conversationIDList) == 0 {
92-
m.reinstalled = true
93+
version, err := m.db.GetAppSDKVersion(ctx)
94+
if err != nil {
95+
return err
96+
}
97+
if !version.Installed {
98+
m.reinstalled = true
99+
}
93100
}
94101

95102
// TODO With a large number of sessions, this could potentially cause blocking and needs optimization.
@@ -248,6 +255,11 @@ func (m *MsgSyncer) compareSeqsAndBatchSync(ctx context.Context, maxSeqToSync ma
248255
}
249256
}
250257
defer func() {
258+
if err := m.db.SetAppSDKVersion(ctx, &model_struct.LocalAppSDKVersion{
259+
Installed: true,
260+
}); err != nil {
261+
log.ZError(ctx, "SetAppSDKVersion err", err)
262+
}
251263
m.reinstalled = false
252264
}()
253265
_ = m.syncAndTriggerReinstallMsgs(m.ctx, needSyncSeqMap, pullNums)
@@ -269,24 +281,24 @@ func (m *MsgSyncer) compareSeqsAndBatchSync(ctx context.Context, maxSeqToSync ma
269281

270282
// startSync checks if the sync is already in progress.
271283
// If syncing is in progress, it returns false. Otherwise, it starts syncing and returns true.
272-
func (ms *MsgSyncer) startSync() bool {
273-
ms.isSyncingLock.Lock()
274-
defer ms.isSyncingLock.Unlock()
284+
func (m *MsgSyncer) startSync() bool {
285+
m.isSyncingLock.Lock()
286+
defer m.isSyncingLock.Unlock()
275287

276-
if ms.isSyncing {
288+
if m.isSyncing {
277289
// If already syncing, return false
278290
return false
279291
}
280292

281293
// Set syncing to true and start the sync
282-
ms.isSyncing = true
294+
m.isSyncing = true
283295

284296
// Create a goroutine that waits for 5 seconds and then sets isSyncing to false
285297
go func() {
286298
time.Sleep(5 * time.Second)
287-
ms.isSyncingLock.Lock()
288-
ms.isSyncing = false
289-
ms.isSyncingLock.Unlock()
299+
m.isSyncingLock.Lock()
300+
m.isSyncing = false
301+
m.isSyncingLock.Unlock()
290302
}()
291303

292304
return true

0 commit comments

Comments
 (0)