fix: harden group lifecycle and registration writes
This commit is contained in:
+10
-3
@@ -6210,6 +6210,14 @@ func serveIMGroupOwnerTransfer(wrt http.ResponseWriter, req *http.Request, topic
|
||||
}
|
||||
if err = store.GroupBusiness.TransferOwner(principal.TenantID, topic, principal.Uid, target,
|
||||
body.Version, time.Now().UTC().Round(time.Millisecond)); err != nil {
|
||||
if errors.Is(err, types.ErrInvalidResponse) {
|
||||
currentVersion := 0
|
||||
if settings, settingsErr := store.GroupBusiness.GetSettings(principal.TenantID, topic); settingsErr == nil && settings != nil {
|
||||
currentVersion = settings.Version
|
||||
}
|
||||
writeIMError(wrt, req, http.StatusConflict, 30006, "VERSION_CONFLICT", "version conflict", map[string]any{"current_version": currentVersion})
|
||||
return
|
||||
}
|
||||
writeIMRelationError(wrt, req, err)
|
||||
return
|
||||
}
|
||||
@@ -7996,9 +8004,8 @@ func mergeGroupSettingsPayload(payload map[string]any, settings *types.GroupSett
|
||||
payload["description"] = settings.Description
|
||||
payload["owner"] = settings.OwnerUserID.UserId()
|
||||
payload["member_count"] = settings.MemberCount
|
||||
if _, exists := payload["version"]; !exists {
|
||||
payload["version"] = settings.Version
|
||||
}
|
||||
payload["status"] = settings.GroupStatus
|
||||
payload["version"] = settings.Version
|
||||
return payload
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user