Add support for setting group member label

This commit is contained in:
Joakim Berglund 2026-05-16 23:20:59 +02:00
parent af64b772cd
commit b37f57aabd
5 changed files with 47 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

@ -2059,7 +2059,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 {
@ -2108,6 +2109,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}
@ -2138,6 +2141,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
@ -2177,6 +2183,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

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

View File

@ -649,6 +649,12 @@
], ],
"type": "string" "type": "string"
}, },
"member_label": {
"type": "string"
},
"member_label_emoji": {
"type": "string"
},
"name": { "name": {
"type": "string" "type": "string"
}, },
@ -5101,4 +5107,4 @@
"name": "Sticker Packs" "name": "Sticker Packs"
} }
] ]
} }