fix: broadcast forwarded messages after kafka publish
This commit is contained in:
+21
-5
@@ -2734,7 +2734,7 @@ func serveIMFavoriteForward(wrt http.ResponseWriter, req *http.Request) {
|
||||
continue
|
||||
}
|
||||
commentResult = ensureComment()
|
||||
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(req.Context(), principal.TenantID, msg, nil, true, true)
|
||||
saved, err := saveMessageMaybeKafka(req.Context(), principal.TenantID, msg, nil, true)
|
||||
if err != nil {
|
||||
if saved != nil && saved.Pending {
|
||||
result := forwardResultUnknownPayload(target, saved.SeqId, relationErrorReason(err))
|
||||
@@ -2756,6 +2756,10 @@ func serveIMFavoriteForward(wrt http.ResponseWriter, req *http.Request) {
|
||||
continue
|
||||
}
|
||||
if saved != nil && saved.Pending {
|
||||
msg.SeqId = saved.SeqId
|
||||
if !saved.Duplicate {
|
||||
broadcastHTTPForwardMessage(principal.TenantID, msg, saved.MarkedReadBySender)
|
||||
}
|
||||
result := map[string]any{"target_topic": target, "favorite_id": favoriteID, "status": "pending", "seq": saved.SeqId, "reason": "MESSAGE_PERSIST_PENDING"}
|
||||
result["client_mid"] = clientMid
|
||||
mergeForwardCommentResult(result, commentResult)
|
||||
@@ -2858,7 +2862,7 @@ func serveIMMessageForward(wrt http.ResponseWriter, req *http.Request) {
|
||||
continue
|
||||
}
|
||||
commentResult = ensureComment()
|
||||
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(req.Context(), principal.TenantID, forwarded, nil, true, true)
|
||||
saved, err := saveMessageMaybeKafka(req.Context(), principal.TenantID, forwarded, nil, true)
|
||||
if err != nil {
|
||||
if saved != nil && saved.Pending {
|
||||
forwarded.SeqId = saved.SeqId
|
||||
@@ -2885,6 +2889,10 @@ func serveIMMessageForward(wrt http.ResponseWriter, req *http.Request) {
|
||||
continue
|
||||
}
|
||||
if saved != nil && saved.Pending {
|
||||
forwarded.SeqId = saved.SeqId
|
||||
if !saved.Duplicate {
|
||||
broadcastHTTPForwardMessage(principal.TenantID, forwarded, saved.MarkedReadBySender)
|
||||
}
|
||||
item := map[string]any{
|
||||
"sources": bundle["source_refs"],
|
||||
"target_topic": target,
|
||||
@@ -2957,7 +2965,7 @@ func serveIMMessageForward(wrt http.ResponseWriter, req *http.Request) {
|
||||
continue
|
||||
}
|
||||
commentResult = ensureComment()
|
||||
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(req.Context(), principal.TenantID, forwarded, nil, true, true)
|
||||
saved, err := saveMessageMaybeKafka(req.Context(), principal.TenantID, forwarded, nil, true)
|
||||
if err != nil {
|
||||
if saved != nil && saved.Pending {
|
||||
forwarded.SeqId = saved.SeqId
|
||||
@@ -2980,6 +2988,10 @@ func serveIMMessageForward(wrt http.ResponseWriter, req *http.Request) {
|
||||
continue
|
||||
}
|
||||
if saved != nil && saved.Pending {
|
||||
forwarded.SeqId = saved.SeqId
|
||||
if !saved.Duplicate {
|
||||
broadcastHTTPForwardMessage(principal.TenantID, forwarded, saved.MarkedReadBySender)
|
||||
}
|
||||
item := map[string]any{
|
||||
"source": map[string]any{"topic": sourceTopic, "seq": int64(source.Seq)},
|
||||
"target_topic": target,
|
||||
@@ -5376,7 +5388,7 @@ func publishGroupAnnouncementTextMessage(ctx context.Context, tenantID types.Ten
|
||||
},
|
||||
Content: map[string]any{"text": "群公告\n" + content},
|
||||
}
|
||||
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(ctx, tenantID, msg, nil, true, true)
|
||||
saved, err := saveMessageMaybeKafka(ctx, tenantID, msg, nil, true)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -9511,7 +9523,7 @@ func saveForwardCommentMessage(ctx context.Context, principal *imPrincipal, targ
|
||||
result["comment_reason"] = relationErrorReason(err)
|
||||
return result
|
||||
}
|
||||
saved, err := saveMessageMaybeKafkaWithPostPersistBroadcast(ctx, principal.TenantID, msg, nil, true, true)
|
||||
saved, err := saveMessageMaybeKafka(ctx, principal.TenantID, msg, nil, true)
|
||||
if err != nil {
|
||||
if saved != nil && saved.Pending {
|
||||
result["comment_status"] = "pending"
|
||||
@@ -9524,6 +9536,10 @@ func saveForwardCommentMessage(ctx context.Context, principal *imPrincipal, targ
|
||||
return result
|
||||
}
|
||||
if saved != nil && saved.Pending {
|
||||
msg.SeqId = saved.SeqId
|
||||
if !saved.Duplicate {
|
||||
broadcastHTTPForwardMessage(principal.TenantID, msg, saved.MarkedReadBySender)
|
||||
}
|
||||
result["comment_status"] = "pending"
|
||||
result["comment_seq"] = saved.SeqId
|
||||
result["comment_reason"] = "MESSAGE_PERSIST_PENDING"
|
||||
|
||||
Reference in New Issue
Block a user