fix: group info get is empty when user not in this group.
This commit is contained in:
parent
0e64d54534
commit
b162725bd6
@ -73,7 +73,7 @@ func (c *Conversation) doNotificationNew(c2v common.Cmd2Value) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
syncFunctions := []func(c context.Context) error{
|
syncFunctions := []func(c context.Context) error{
|
||||||
c.group.SyncAllJoinedGroupsAndMembers, c.friend.IncrSyncFriends,
|
c.group.SyncAllJoinedGroupsAndMembers, c.friend.IncrSyncFriends, c.SyncAllConversations,
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, syncFunc := range syncFunctions {
|
for _, syncFunc := range syncFunctions {
|
||||||
@ -92,7 +92,6 @@ func (c *Conversation) doNotificationNew(c2v common.Cmd2Value) {
|
|||||||
case constant.MsgSyncEnd:
|
case constant.MsgSyncEnd:
|
||||||
log.ZDebug(ctx, "MsgSyncEnd", "time", time.Since(c.startTime).Milliseconds())
|
log.ZDebug(ctx, "MsgSyncEnd", "time", time.Since(c.startTime).Milliseconds())
|
||||||
defer c.ConversationListener().OnSyncServerFinish()
|
defer c.ConversationListener().OnSyncServerFinish()
|
||||||
go c.SyncAllConversations(ctx)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for conversationID, msgs := range allMsg {
|
for conversationID, msgs := range allMsg {
|
||||||
|
@ -26,7 +26,7 @@ import (
|
|||||||
"github.com/openimsdk/tools/log"
|
"github.com/openimsdk/tools/log"
|
||||||
)
|
)
|
||||||
|
|
||||||
func (c *Conversation) SyncConversationsAndTriggerCallback(ctx context.Context, conversationsOnServer []*model_struct.LocalConversation) error {
|
func (c *Conversation) SyncConversationsAndTriggerCallback(ctx context.Context, conversationsOnServer []*model_struct.LocalConversation, skipNotice bool) error {
|
||||||
conversationsOnLocal, err := c.db.GetAllConversations(ctx)
|
conversationsOnLocal, err := c.db.GetAllConversations(ctx)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
@ -39,7 +39,7 @@ func (c *Conversation) SyncConversationsAndTriggerCallback(ctx context.Context,
|
|||||||
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{ConID: server.ConversationID, Action: constant.ConChange, Args: []string{server.ConversationID}}})
|
c.doUpdateConversation(common.Cmd2Value{Value: common.UpdateConNode{ConID: server.ConversationID, Action: constant.ConChange, Args: []string{server.ConversationID}}})
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}, true); err != nil {
|
}, true, skipNotice); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
@ -50,7 +50,7 @@ func (c *Conversation) SyncConversations(ctx context.Context, conversationIDs []
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
return c.SyncConversationsAndTriggerCallback(ctx, conversationsOnServer)
|
return c.SyncConversationsAndTriggerCallback(ctx, conversationsOnServer, false)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conversation) SyncAllConversations(ctx context.Context) error {
|
func (c *Conversation) SyncAllConversations(ctx context.Context) error {
|
||||||
@ -60,7 +60,7 @@ func (c *Conversation) SyncAllConversations(ctx context.Context) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
log.ZDebug(ctx, "get server cost time", "cost time", time.Since(ccTime), "conversation on server", conversationsOnServer)
|
log.ZDebug(ctx, "get server cost time", "cost time", time.Since(ccTime), "conversation on server", conversationsOnServer)
|
||||||
return c.SyncConversationsAndTriggerCallback(ctx, conversationsOnServer)
|
return c.SyncConversationsAndTriggerCallback(ctx, conversationsOnServer, true)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (c *Conversation) SyncAllConversationHashReadSeqs(ctx context.Context) error {
|
func (c *Conversation) SyncAllConversationHashReadSeqs(ctx context.Context) error {
|
||||||
|
@ -243,9 +243,13 @@ func (s *Syncer[T, RESP, V]) Sync(ctx context.Context, serverData []T, localData
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
skipDeletion := false
|
skipDeletion := false
|
||||||
|
skipNotice := false
|
||||||
if len(skipDeletionAndNotice) > 0 {
|
if len(skipDeletionAndNotice) > 0 {
|
||||||
skipDeletion = skipDeletionAndNotice[0]
|
skipDeletion = skipDeletionAndNotice[0]
|
||||||
}
|
}
|
||||||
|
if len(skipDeletionAndNotice) > 1 {
|
||||||
|
skipNotice = skipDeletionAndNotice[1]
|
||||||
|
}
|
||||||
|
|
||||||
// If both server and local data are empty, log and return.
|
// If both server and local data are empty, log and return.
|
||||||
if len(serverData) == 0 && len(localData) == 0 {
|
if len(serverData) == 0 && len(localData) == 0 {
|
||||||
@ -271,9 +275,11 @@ func (s *Syncer[T, RESP, V]) Sync(ctx context.Context, serverData []T, localData
|
|||||||
log.ZError(ctx, "sync insert failed", err, "type", s.ts, "server", server, "local", local)
|
log.ZError(ctx, "sync insert failed", err, "type", s.ts, "server", server, "local", local)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := s.onNotice(ctx, Insert, server, local, notice); err != nil {
|
if !skipNotice {
|
||||||
log.ZError(ctx, "sync notice insert failed", err, "type", s.ts, "server", server, "local", local)
|
if err := s.onNotice(ctx, Insert, server, local, notice); err != nil {
|
||||||
return err
|
log.ZError(ctx, "sync notice insert failed", err, "type", s.ts, "server", server, "local", local)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -283,9 +289,11 @@ func (s *Syncer[T, RESP, V]) Sync(ctx context.Context, serverData []T, localData
|
|||||||
|
|
||||||
// If the local and server items are equal, notify and continue.
|
// If the local and server items are equal, notify and continue.
|
||||||
if s.eq(server, local) {
|
if s.eq(server, local) {
|
||||||
if err := s.onNotice(ctx, Unchanged, local, server, notice); err != nil {
|
if !skipNotice {
|
||||||
log.ZError(ctx, "sync notice unchanged failed", err, "type", s.ts, "server", server, "local", local)
|
if err := s.onNotice(ctx, Unchanged, local, server, notice); err != nil {
|
||||||
return err
|
log.ZError(ctx, "sync notice unchanged failed", err, "type", s.ts, "server", server, "local", local)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
@ -296,9 +304,11 @@ func (s *Syncer[T, RESP, V]) Sync(ctx context.Context, serverData []T, localData
|
|||||||
log.ZError(ctx, "sync update failed", err, "type", s.ts, "server", server, "local", local)
|
log.ZError(ctx, "sync update failed", err, "type", s.ts, "server", server, "local", local)
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
if err := s.onNotice(ctx, Update, server, local, notice); err != nil {
|
if !skipNotice {
|
||||||
log.ZError(ctx, "sync notice update failed", err, "type", s.ts, "server", server, "local", local)
|
if err := s.onNotice(ctx, Update, server, local, notice); err != nil {
|
||||||
return err
|
log.ZError(ctx, "sync notice update failed", err, "type", s.ts, "server", server, "local", local)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -315,9 +325,11 @@ func (s *Syncer[T, RESP, V]) Sync(ctx context.Context, serverData []T, localData
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
var server T
|
var server T
|
||||||
if err := s.onNotice(ctx, Delete, server, local, notice); err != nil {
|
if !skipNotice {
|
||||||
log.ZError(ctx, "sync notice delete failed", err, "type", s.ts, "local", local)
|
if err := s.onNotice(ctx, Delete, server, local, notice); err != nil {
|
||||||
return err
|
log.ZError(ctx, "sync notice delete failed", err, "type", s.ts, "local", local)
|
||||||
|
return err
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
|
Loading…
x
Reference in New Issue
Block a user