fix group invitation notifications
This commit is contained in:
+21
-7
@@ -5381,13 +5381,7 @@ func serveIMGroupInvitations(wrt http.ResponseWriter, req *http.Request, topic s
|
||||
if inv.JoinRequestID != "" {
|
||||
item["join_request_id"] = inv.JoinRequestID
|
||||
}
|
||||
if imReliableHTTPEventsEnabled(req) {
|
||||
publishIMConversationSystemNotice(principal.TenantID, principal.Uid.P2PName(uid),
|
||||
"system_action", "group_invitation_created", "邀请你加入群聊。",
|
||||
[]imSystemMessageActor{{UserID: principal.Uid.UserId(), Click: map[string]any{"type": "user_profile", "target_id": principal.Uid.UserId()}}},
|
||||
[]imSystemMessageAction{{Type: "group_invitation_accept", Label: "立即加入", TargetID: inv.InvitationID}},
|
||||
map[string]any{"invitation_id": inv.InvitationID, "topic": topic, "message": inv.Message})
|
||||
}
|
||||
publishIMGroupInvitationNotification(principal.TenantID, inv)
|
||||
results = append(results, item)
|
||||
}
|
||||
dispatchIMGroupEvents(principal.TenantID)
|
||||
@@ -11032,6 +11026,26 @@ func broadcastIMConversationSystemMessage(tenantID types.TenantID, msg *types.Me
|
||||
broadcastHTTPForwardPresence(tenantID, msg, timestamp)
|
||||
}
|
||||
|
||||
func publishIMGroupInvitationNotification(tenantID types.TenantID, inv *types.GroupInvitation) {
|
||||
if tenantID == types.ZeroTenantID || inv == nil || inv.TargetUserID.IsZero() || store.Security == nil {
|
||||
return
|
||||
}
|
||||
eventID := stableIMEventID("group-invitation", inv.InvitationID, inv.TargetUserID.UserId(), "created")
|
||||
action := types.KVMap{
|
||||
"type": "group_invitation_accept",
|
||||
"invitation_id": inv.InvitationID,
|
||||
"topic": inv.Topic,
|
||||
"inviter_id": inv.InviterUserID.UserId(),
|
||||
}
|
||||
if inv.Message != "" {
|
||||
action["message"] = inv.Message
|
||||
}
|
||||
if err := createIMSystemNotification(tenantID, inv.TargetUserID, eventID, "group.invitation.created",
|
||||
"群聊邀请", "邀请你加入群聊。", action); err != nil {
|
||||
logs.Warn.Printf("group invitation: create notification invitation=%s target=%s: %v", inv.InvitationID, inv.TargetUserID.UserId(), err)
|
||||
}
|
||||
}
|
||||
|
||||
func deliverIMConversationSystemMessageToP2PSessions(tenantID types.TenantID, msg *types.Message, out *ServerComMessage) {
|
||||
if globals.sessionStore == nil || msg == nil || out == nil || out.Data == nil {
|
||||
return
|
||||
|
||||
Reference in New Issue
Block a user