Add support for setting group member label

This commit is contained in:
Joakim Berglund 2026-05-16 23:20:59 +02:00
parent db63fd15e0
commit f07c587309
6 changed files with 51 additions and 9 deletions

View File

@ -115,6 +115,16 @@ e.g:
`curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/+431212131491291'` `curl -X GET -H "Content-Type: application/json" 'http://127.0.0.1:8080/v1/groups/+431212131491291'`
- Update your group member label
Updates the member label for the registered number in the given group. The group id can be obtained via the "List groups" REST call.
`curl -X PUT -H "Content-Type: application/json" -d '{"member_label": "<label>", "member_label_emoji": "<emoji>"}' 'http://127.0.0.1:8080/v1/groups/<number>/<group id>'`
e.g:
`curl -X PUT -H "Content-Type: application/json" -d '{"member_label": "Dad", "member_label_emoji": "👨‍👧"}' 'http://127.0.0.1:8080/v1/groups/+431212131491291/<group id>'`
- Delete a group - Delete a group
Delete the group with the given group id. The group id can be obtained via the "List groups" REST call. Delete the group with the given group id. The group id can be obtained via the "List groups" REST call.

View File

@ -48,12 +48,14 @@ type CreateGroupRequest struct {
} }
type UpdateGroupRequest struct { type UpdateGroupRequest struct {
Base64Avatar *string `json:"base64_avatar,omitempty"` Base64Avatar *string `json:"base64_avatar,omitempty"`
Description *string `json:"description,omitempty"` Description *string `json:"description,omitempty"`
Name *string `json:"name,omitempty"` Name *string `json:"name,omitempty"`
ExpirationTime *int `json:"expiration_time,omitempty"` MemberLabel *string `json:"member_label,omitempty"`
GroupLinkState *string `json:"group_link,omitempty" enums:"disabled,enabled,enabled-with-approval"` MemberLabelEmoji *string `json:"member_label_emoji,omitempty"`
Permissions *ds.GroupPermissions `json:"permissions,omitempty"` ExpirationTime *int `json:"expiration_time,omitempty"`
GroupLinkState *string `json:"group_link,omitempty" enums:"disabled,enabled,enabled-with-approval"`
Permissions *ds.GroupPermissions `json:"permissions,omitempty"`
} }
type PinMessageInGroupRequest struct { type PinMessageInGroupRequest struct {
@ -1860,7 +1862,7 @@ func (a *Api) UpdateGroup(c *gin.Context) {
} }
err = a.signalClient.UpdateGroup(number, internalGroupId, req.Base64Avatar, req.Description, req.Name, req.ExpirationTime, groupLinkState, err = a.signalClient.UpdateGroup(number, internalGroupId, req.Base64Avatar, req.Description, req.Name, req.ExpirationTime, groupLinkState,
editGroupPermission, addMembersPermission, sendMessagesPermission) editGroupPermission, addMembersPermission, sendMessagesPermission, req.MemberLabel, req.MemberLabelEmoji)
if err != nil { if err != nil {
c.JSON(400, Error{Msg: err.Error()}) c.JSON(400, Error{Msg: err.Error()})
return return

View File

@ -2053,7 +2053,8 @@ func (s *SignalClient) QuitGroup(number string, groupId string) error {
} }
func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *string, groupDescription *string, groupName *string, expirationTime *int, func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *string, groupDescription *string, groupName *string, expirationTime *int,
groupLinkState *GroupLinkState, editGroupPermission GroupPermission, addMembersPermission GroupPermission, sendMessagesPermission GroupPermission) error { groupLinkState *GroupLinkState, editGroupPermission GroupPermission, addMembersPermission GroupPermission, sendMessagesPermission GroupPermission,
memberLabel *string, memberLabelEmoji *string) error {
var err error var err error
var avatarTmpPath string = "" var avatarTmpPath string = ""
if base64Avatar != nil { if base64Avatar != nil {
@ -2102,6 +2103,8 @@ func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *
EditGroupPermissions string `json:"setPermissionEditDetails,omitempty"` EditGroupPermissions string `json:"setPermissionEditDetails,omitempty"`
AddMembersPermissions string `json:"setPermissionAddMember,omitempty"` AddMembersPermissions string `json:"setPermissionAddMember,omitempty"`
SendMessagesPermissions string `json:"setPermissionSendMessages,omitempty"` SendMessagesPermissions string `json:"setPermissionSendMessages,omitempty"`
MemberLabel *string `json:"memberLabel,omitempty"`
MemberLabelEmoji *string `json:"memberLabelEmoji,omitempty"`
} }
request := Request{GroupId: groupId} request := Request{GroupId: groupId}
@ -2132,6 +2135,9 @@ func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *
request.SendMessagesPermissions = sendMessagesPermission.String() request.SendMessagesPermissions = sendMessagesPermission.String()
} }
request.MemberLabel = memberLabel
request.MemberLabelEmoji = memberLabelEmoji
jsonRpc2Client, err := s.getJsonRpc2Client() jsonRpc2Client, err := s.getJsonRpc2Client()
if err != nil { if err != nil {
return err return err
@ -2171,6 +2177,14 @@ func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *
cmd = append(cmd, []string{"--set-permission-send-messages", sendMessagesPermission.String()}...) cmd = append(cmd, []string{"--set-permission-send-messages", sendMessagesPermission.String()}...)
} }
if memberLabelEmoji != nil {
cmd = append(cmd, []string{"--member-label-emoji", *memberLabelEmoji}...)
}
if memberLabel != nil {
cmd = append(cmd, []string{"--member-label", *memberLabel}...)
}
_, err = s.cliClient.Execute(true, cmd, "") _, err = s.cliClient.Execute(true, cmd, "")
} }

View File

@ -3353,6 +3353,12 @@ const docTemplate = `{
"enabled-with-approval" "enabled-with-approval"
] ]
}, },
"member_label": {
"type": "string"
},
"member_label_emoji": {
"type": "string"
},
"name": { "name": {
"type": "string" "type": "string"
}, },

View File

@ -3350,6 +3350,12 @@
"enabled-with-approval" "enabled-with-approval"
] ]
}, },
"member_label": {
"type": "string"
},
"member_label_emoji": {
"type": "string"
},
"name": { "name": {
"type": "string" "type": "string"
}, },
@ -3835,4 +3841,4 @@
"name": "Sticker Packs" "name": "Sticker Packs"
} }
] ]
} }

View File

@ -438,6 +438,10 @@ definitions:
- enabled - enabled
- enabled-with-approval - enabled-with-approval
type: string type: string
member_label:
type: string
member_label_emoji:
type: string
name: name:
type: string type: string
permissions: permissions: