fix: broadcast async forwarded messages after persistence

This commit is contained in:
richjohnrambo
2026-09-23 18:14:34 +08:00
parent 3e92021254
commit da02eae6a4
3 changed files with 38 additions and 18 deletions
+5 -5
View File
@@ -2734,7 +2734,7 @@ func serveIMFavoriteForward(wrt http.ResponseWriter, req *http.Request) {
continue
}
commentResult = ensureComment()
saved, err := saveMessageMaybeKafka(req.Context(), principal.TenantID, msg, nil, true)
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(req.Context(), principal.TenantID, msg, nil, true, true)
if err != nil {
if saved != nil && saved.Pending {
result := forwardResultUnknownPayload(target, saved.SeqId, relationErrorReason(err))
@@ -2858,7 +2858,7 @@ func serveIMMessageForward(wrt http.ResponseWriter, req *http.Request) {
continue
}
commentResult = ensureComment()
saved, err := saveMessageMaybeKafka(req.Context(), principal.TenantID, forwarded, nil, true)
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(req.Context(), principal.TenantID, forwarded, nil, true, true)
if err != nil {
if saved != nil && saved.Pending {
forwarded.SeqId = saved.SeqId
@@ -2957,7 +2957,7 @@ func serveIMMessageForward(wrt http.ResponseWriter, req *http.Request) {
continue
}
commentResult = ensureComment()
saved, err := saveMessageMaybeKafka(req.Context(), principal.TenantID, forwarded, nil, true)
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(req.Context(), principal.TenantID, forwarded, nil, true, true)
if err != nil {
if saved != nil && saved.Pending {
forwarded.SeqId = saved.SeqId
@@ -5376,7 +5376,7 @@ func publishGroupAnnouncementTextMessage(ctx context.Context, tenantID types.Ten
},
Content: map[string]any{"text": "群公告\n" + content},
}
saved, err := saveMessageMaybeKafka(ctx, tenantID, msg, nil, true)
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(ctx, tenantID, msg, nil, true, true)
if err != nil {
return err
}
@@ -9511,7 +9511,7 @@ func saveForwardCommentMessage(ctx context.Context, principal *imPrincipal, targ
result["comment_reason"] = relationErrorReason(err)
return result
}
saved, err := saveMessageMaybeKafka(ctx, principal.TenantID, msg, nil, true)
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(ctx, principal.TenantID, msg, nil, true, true)
if err != nil {
if saved != nil && saved.Pending {
result["comment_status"] = "pending"