Skip to content

Commit 4f3ebf0

Browse files
author
Bernhard B
committed
fixed bug in create group endpoint
link & permissions weren't correctly set see #410
1 parent f21925e commit 4f3ebf0

File tree

2 files changed

+69
-16
lines changed

2 files changed

+69
-16
lines changed

src/api/api.go

Lines changed: 22 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -546,24 +546,33 @@ func (a *Api) CreateGroup(c *gin.Context) {
546546
return
547547
}
548548

549-
if req.Permissions.AddMembers != "" && !utils.StringInSlice(req.Permissions.AddMembers, []string{"every-member", "only-admins"}) {
550-
c.JSON(400, Error{Msg: "Invalid add members permission provided - only 'every-member' and 'only-admins' allowed!"})
551-
return
552-
}
549+
editGroupPermission := client.DefaultGroupPermission
550+
addMembersPermission := client.DefaultGroupPermission
551+
groupLinkState := client.DefaultGroupLinkState
553552

554-
if req.Permissions.EditGroup != "" && !utils.StringInSlice(req.Permissions.EditGroup, []string{"every-member", "only-admins"}) {
555-
c.JSON(400, Error{Msg: "Invalid edit group permissions provided - only 'every-member' and 'only-admins' allowed!"})
556-
return
553+
if req.Permissions.AddMembers != "" {
554+
if !utils.StringInSlice(req.Permissions.AddMembers, []string{"every-member", "only-admins"}) {
555+
c.JSON(400, Error{Msg: "Invalid add members permission provided - only 'every-member' and 'only-admins' allowed!"})
556+
return
557+
}
558+
addMembersPermission = addMembersPermission.FromString(req.Permissions.AddMembers)
557559
}
558560

559-
if req.GroupLinkState != "" && !utils.StringInSlice(req.GroupLinkState, []string{"enabled", "enabled-with-approval", "disabled"}) {
560-
c.JSON(400, Error{Msg: "Invalid group link provided - only 'enabled', 'enabled-with-approval' and 'disabled' allowed!"})
561-
return
561+
if req.Permissions.EditGroup != "" {
562+
if !utils.StringInSlice(req.Permissions.EditGroup, []string{"every-member", "only-admins"}) {
563+
c.JSON(400, Error{Msg: "Invalid edit group permissions provided - only 'every-member' and 'only-admins' allowed!"})
564+
return
565+
}
566+
editGroupPermission = editGroupPermission.FromString(req.Permissions.EditGroup)
562567
}
563568

564-
editGroupPermission := client.DefaultGroupPermission
565-
addMembersPermission := client.DefaultGroupPermission
566-
groupLinkState := client.DefaultGroupLinkState
569+
if req.GroupLinkState != "" {
570+
if !utils.StringInSlice(req.GroupLinkState, []string{"enabled", "enabled-with-approval", "disabled"}) {
571+
c.JSON(400, Error{Msg: "Invalid group link provided - only 'enabled', 'enabled-with-approval' and 'disabled' allowed!"})
572+
return
573+
}
574+
groupLinkState = groupLinkState.FromString(req.GroupLinkState)
575+
}
567576

568577
groupId, err := a.signalClient.CreateGroup(number, req.Name, req.Members, req.Description, editGroupPermission, addMembersPermission, groupLinkState)
569578
if err != nil {

src/client/client.go

Lines changed: 47 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,37 @@ const (
5252
)
5353

5454
func (g GroupPermission) String() string {
55-
return []string{"", "default", "every-member", "only-admins"}[g]
55+
return []string{"", "every-member", "only-admins"}[g]
56+
}
57+
58+
func (g GroupPermission) FromString(input string) GroupPermission {
59+
if input == "every-member" {
60+
return EveryMember
61+
}
62+
if input == "only-admins" {
63+
return OnlyAdmins
64+
}
65+
return DefaultGroupPermission
5666
}
5767

5868
func (g GroupLinkState) String() string {
5969
return []string{"", "enabled", "enabled-with-approval", "disabled"}[g]
6070
}
6171

72+
func (g GroupLinkState) FromString(input string) GroupLinkState {
73+
if input == "enabled" {
74+
return Enabled
75+
}
76+
if input == "enabled-with-approval" {
77+
return EnabledWithApproval
78+
}
79+
if input == "disabled" {
80+
return Disabled
81+
}
82+
83+
return DefaultGroupLinkState
84+
}
85+
6286
type MessageMention struct {
6387
Start int64 `json:"start"`
6488
Length int64 `json:"length"`
@@ -662,11 +686,31 @@ func (s *SignalClient) CreateGroup(number string, name string, members []string,
662686
var internalGroupId string
663687
if s.signalCliMode == JsonRpc {
664688
type Request struct {
665-
Name string `json:"name"`
666-
Members []string `json:"members"`
689+
Name string `json:"name"`
690+
Members []string `json:"members"`
691+
Link string `json:"link,omitempty"`
692+
Description string `json:"description,omitempty"`
693+
EditGroupPermissions string `json:"setPermissionEditDetails,omitempty"`
694+
AddMembersPermissions string `json:"setPermissionAddMember,omitempty"`
667695
}
668696
request := Request{Name: name, Members: members}
669697

698+
if groupLinkState != DefaultGroupLinkState {
699+
request.Link = groupLinkState.String()
700+
}
701+
702+
if description != "" {
703+
request.Description = description
704+
}
705+
706+
if editGroupPermission != DefaultGroupPermission {
707+
request.EditGroupPermissions = editGroupPermission.String()
708+
}
709+
710+
if addMembersPermission != DefaultGroupPermission {
711+
request.AddMembersPermissions = addMembersPermission.String()
712+
}
713+
670714
jsonRpc2Client, err := s.getJsonRpc2Client(number)
671715
if err != nil {
672716
return "", err

0 commit comments

Comments
 (0)