@@ -5,13 +5,14 @@ import (
5
5
"encoding/json"
6
6
"errors"
7
7
"fmt"
8
- log "github.com/sirupsen/logrus"
9
8
"io/ioutil"
10
9
"os"
11
10
"path/filepath"
12
11
"strconv"
13
12
"strings"
14
13
14
+ log "github.com/sirupsen/logrus"
15
+
15
16
securejoin "github.com/cyphar/filepath-securejoin"
16
17
"github.com/h2non/filetype"
17
18
@@ -509,7 +510,7 @@ func (s *SignalClient) send(signalCliSendRequest ds.SignalCliSendRequest) (*Send
509
510
PreviewTitle * string `json:"preview-title,omitempty"`
510
511
PreviewImage * string `json:"preview-image,omitempty"`
511
512
PreviewDescription * string `json:"preview-description,omitempty"`
512
- ViewOnce bool `json:"view-once,omitempty"`
513
+ ViewOnce bool `json:"view-once,omitempty"`
513
514
}
514
515
515
516
request := Request {Message : signalCliSendRequest .Message }
@@ -981,17 +982,19 @@ func (s *SignalClient) RemoveReceiveChannel(channelUuid string) {
981
982
jsonRpc2Client .RemoveReceiveChannel (channelUuid )
982
983
}
983
984
984
- func (s * SignalClient ) CreateGroup (number string , name string , members []string , description string , editGroupPermission GroupPermission , addMembersPermission GroupPermission , groupLinkState GroupLinkState , expirationTime * int ) (string , error ) {
985
+ func (s * SignalClient ) CreateGroup (number string , name string , members []string , description string , editGroupPermission GroupPermission , addMembersPermission GroupPermission ,
986
+ sendMessagesPermission GroupPermission , groupLinkState GroupLinkState , expirationTime * int ) (string , error ) {
985
987
var internalGroupId string
986
988
if s .signalCliMode == JsonRpc {
987
989
type Request struct {
988
- Name string `json:"name"`
989
- Members []string `json:"members"`
990
- Link string `json:"link,omitempty"`
991
- Description string `json:"description,omitempty"`
992
- EditGroupPermissions string `json:"setPermissionEditDetails,omitempty"`
993
- AddMembersPermissions string `json:"setPermissionAddMember,omitempty"`
994
- Expiration int `json:"expiration,omitempty"`
990
+ Name string `json:"name"`
991
+ Members []string `json:"members"`
992
+ Link string `json:"link,omitempty"`
993
+ Description string `json:"description,omitempty"`
994
+ EditGroupPermissions string `json:"setPermissionEditDetails,omitempty"`
995
+ AddMembersPermissions string `json:"setPermissionAddMember,omitempty"`
996
+ SendMessagesPermissions string `json:"setPermissionSendMessages,omitempty"`
997
+ Expiration int `json:"expiration,omitempty"`
995
998
}
996
999
request := Request {Name : name , Members : prefixUsernameMembers (members )}
997
1000
@@ -1011,6 +1014,10 @@ func (s *SignalClient) CreateGroup(number string, name string, members []string,
1011
1014
request .AddMembersPermissions = addMembersPermission .String ()
1012
1015
}
1013
1016
1017
+ if sendMessagesPermission != DefaultGroupPermission {
1018
+ request .SendMessagesPermissions = sendMessagesPermission .String ()
1019
+ }
1020
+
1014
1021
if expirationTime != nil {
1015
1022
request .Expiration = * expirationTime
1016
1023
}
@@ -1046,6 +1053,10 @@ func (s *SignalClient) CreateGroup(number string, name string, members []string,
1046
1053
cmd = append (cmd , []string {"--set-permission-edit-details" , editGroupPermission .String ()}... )
1047
1054
}
1048
1055
1056
+ if sendMessagesPermission != DefaultGroupPermission {
1057
+ cmd = append (cmd , []string {"--set-permission-send-messages" , sendMessagesPermission .String ()}... )
1058
+ }
1059
+
1049
1060
if groupLinkState != DefaultGroupLinkState {
1050
1061
cmd = append (cmd , []string {"--link" , groupLinkState .String ()}... )
1051
1062
}
@@ -1077,7 +1088,7 @@ func prefixUsernameMembers(members []string) []string {
1077
1088
for _ , member := range members {
1078
1089
recipientType , err := getRecipientType (member )
1079
1090
if err == nil && recipientType == ds .Username {
1080
- res = append (res , "u:" + member )
1091
+ res = append (res , "u:" + member )
1081
1092
} else {
1082
1093
res = append (res , member )
1083
1094
}
@@ -1767,8 +1778,8 @@ func (s *SignalClient) QuitGroup(number string, groupId string) error {
1767
1778
return err
1768
1779
}
1769
1780
1770
- func (s * SignalClient ) UpdateGroup (number string , groupId string , base64Avatar * string , groupDescription * string ,
1771
- groupName * string , expirationTime * int , groupLinkState * GroupLinkState ) error {
1781
+ func (s * SignalClient ) UpdateGroup (number string , groupId string , base64Avatar * string , groupDescription * string , groupName * string , expirationTime * int ,
1782
+ groupLinkState * GroupLinkState , editGroupPermission GroupPermission , addMembersPermission GroupPermission , sendMessagesPermission GroupPermission ) error {
1772
1783
var err error
1773
1784
var avatarTmpPath string = ""
1774
1785
if base64Avatar != nil {
@@ -1808,12 +1819,15 @@ func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *
1808
1819
1809
1820
if s .signalCliMode == JsonRpc {
1810
1821
type Request struct {
1811
- GroupId string `json:"groupId"`
1812
- Avatar string `json:"avatar,omitempty"`
1813
- Description * string `json:"description,omitempty"`
1814
- Name * string `json:"name,omitempty"`
1815
- Expiration int `json:"expiration,omitempty"`
1816
- Link string `json:"link,omitempty"`
1822
+ GroupId string `json:"groupId"`
1823
+ Avatar string `json:"avatar,omitempty"`
1824
+ Description * string `json:"description,omitempty"`
1825
+ Name * string `json:"name,omitempty"`
1826
+ Expiration int `json:"expiration,omitempty"`
1827
+ Link string `json:"link,omitempty"`
1828
+ EditGroupPermissions string `json:"setPermissionEditDetails,omitempty"`
1829
+ AddMembersPermissions string `json:"setPermissionAddMember,omitempty"`
1830
+ SendMessagesPermissions string `json:"setPermissionSendMessages,omitempty"`
1817
1831
}
1818
1832
request := Request {GroupId : groupId }
1819
1833
@@ -1832,6 +1846,18 @@ func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *
1832
1846
request .Link = (* groupLinkState ).String ()
1833
1847
}
1834
1848
1849
+ if editGroupPermission != DefaultGroupPermission {
1850
+ request .EditGroupPermissions = editGroupPermission .String ()
1851
+ }
1852
+
1853
+ if addMembersPermission != DefaultGroupPermission {
1854
+ request .AddMembersPermissions = addMembersPermission .String ()
1855
+ }
1856
+
1857
+ if sendMessagesPermission != DefaultGroupPermission {
1858
+ request .SendMessagesPermissions = sendMessagesPermission .String ()
1859
+ }
1860
+
1835
1861
jsonRpc2Client , err := s .getJsonRpc2Client ()
1836
1862
if err != nil {
1837
1863
return err
@@ -1859,6 +1885,18 @@ func (s *SignalClient) UpdateGroup(number string, groupId string, base64Avatar *
1859
1885
cmd = append (cmd , []string {"--link" , (* groupLinkState ).String ()}... )
1860
1886
}
1861
1887
1888
+ if addMembersPermission != DefaultGroupPermission {
1889
+ cmd = append (cmd , []string {"--set-permission-add-member" , addMembersPermission .String ()}... )
1890
+ }
1891
+
1892
+ if editGroupPermission != DefaultGroupPermission {
1893
+ cmd = append (cmd , []string {"--set-permission-edit-details" , editGroupPermission .String ()}... )
1894
+ }
1895
+
1896
+ if sendMessagesPermission != DefaultGroupPermission {
1897
+ cmd = append (cmd , []string {"--set-permission-send-messages" , sendMessagesPermission .String ()}... )
1898
+ }
1899
+
1862
1900
_ , err = s .cliClient .Execute (true , cmd , "" )
1863
1901
}
1864
1902
0 commit comments