return group permissions in groups request

see #781
This commit is contained in:
Bernhard B 2026-02-07 00:15:21 +01:00
parent cdb7d0bf97
commit 23c53382c2
3 changed files with 60 additions and 43 deletions

View File

@ -38,28 +38,22 @@ type UpdateContactRequest struct {
ExpirationInSeconds *int `json:"expiration_in_seconds"`
}
type GroupPermissions struct {
AddMembers string `json:"add_members" enums:"only-admins,every-member"`
EditGroup string `json:"edit_group" enums:"only-admins,every-member"`
SendMessages string `json:"send_messages" enums:"only-admins,every-member"`
}
type CreateGroupRequest struct {
Name string `json:"name"`
Members []string `json:"members"`
Description string `json:"description"`
Permissions GroupPermissions `json:"permissions"`
GroupLinkState string `json:"group_link" enums:"disabled,enabled,enabled-with-approval"`
ExpirationTime *int `json:"expiration_time"`
Name string `json:"name"`
Members []string `json:"members"`
Description string `json:"description"`
Permissions ds.GroupPermissions `json:"permissions"`
GroupLinkState string `json:"group_link" enums:"disabled,enabled,enabled-with-approval"`
ExpirationTime *int `json:"expiration_time"`
}
type UpdateGroupRequest struct {
Base64Avatar *string `json:"base64_avatar"`
Description *string `json:"description"`
Name *string `json:"name"`
ExpirationTime *int `json:"expiration_time"`
GroupLinkState *string `json:"group_link" enums:"disabled,enabled,enabled-with-approval"`
Permissions *GroupPermissions `json:"permissions"`
Base64Avatar *string `json:"base64_avatar"`
Description *string `json:"description"`
Name *string `json:"name"`
ExpirationTime *int `json:"expiration_time"`
GroupLinkState *string `json:"group_link" enums:"disabled,enabled,enabled-with-approval"`
Permissions *ds.GroupPermissions `json:"permissions"`
}
type ChangeGroupMembersRequest struct {

View File

@ -113,16 +113,17 @@ func (g GroupLinkState) FromString(input string) GroupLinkState {
}
type GroupEntry struct {
Name string `json:"name"`
Description string `json:"description"`
Id string `json:"id"`
InternalId string `json:"internal_id"`
Members []string `json:"members"`
Blocked bool `json:"blocked"`
PendingInvites []string `json:"pending_invites"`
PendingRequests []string `json:"pending_requests"`
InviteLink string `json:"invite_link"`
Admins []string `json:"admins"`
Name string `json:"name"`
Description string `json:"description"`
Id string `json:"id"`
InternalId string `json:"internal_id"`
Members []string `json:"members"`
Blocked bool `json:"blocked"`
PendingInvites []string `json:"pending_invites"`
PendingRequests []string `json:"pending_requests"`
InviteLink string `json:"invite_link"`
Admins []string `json:"admins"`
Permissions ds.GroupPermissions `json:"permissions"`
}
type IdentityEntry struct {
@ -145,17 +146,20 @@ type SignalCliGroupAdmin struct {
}
type SignalCliGroupEntry struct {
Name string `json:"name"`
Description string `json:"description"`
Id string `json:"id"`
IsMember bool `json:"isMember"`
IsBlocked bool `json:"isBlocked"`
Members []SignalCliGroupMember `json:"members"`
PendingMembers []SignalCliGroupMember `json:"pendingMembers"`
RequestingMembers []SignalCliGroupMember `json:"requestingMembers"`
GroupInviteLink string `json:"groupInviteLink"`
Admins []SignalCliGroupAdmin `json:"admins"`
Uuid string `json:"uuid"`
Name string `json:"name"`
Description string `json:"description"`
Id string `json:"id"`
IsMember bool `json:"isMember"`
IsBlocked bool `json:"isBlocked"`
Members []SignalCliGroupMember `json:"members"`
PendingMembers []SignalCliGroupMember `json:"pendingMembers"`
RequestingMembers []SignalCliGroupMember `json:"requestingMembers"`
GroupInviteLink string `json:"groupInviteLink"`
Admins []SignalCliGroupAdmin `json:"admins"`
Uuid string `json:"uuid"`
PermissionEditDetails string `json:"permissionEditDetails"`
PermissionAddMember string `json:"permissionAddMember"`
PermissionSendMessage string `json:"permissionSendMessage"`
}
type SignalCliIdentityEntry struct {
@ -271,6 +275,16 @@ func getStringInBetween(str string, start string, end string) (result string) {
return str[i : i+j]
}
func signalCliGroupPermissionToRestApiGroupPermission(permission string) string {
if permission == "EVERY_MEMBER" {
return "every-member"
} else if permission == "ONLY_ADMINS" {
return "only-admins"
}
return ""
}
func parseWhitespaceDelimitedKeyValueStringList(in string, keys []string) []map[string]string {
l := []map[string]string{}
lines := strings.Split(in, "\n")
@ -1314,6 +1328,9 @@ func (s *SignalClient) GetGroups(number string) ([]GroupEntry, error) {
groupEntry.Id = convertInternalGroupIdToGroupId(signalCliGroupEntry.Id)
groupEntry.Blocked = signalCliGroupEntry.IsBlocked
groupEntry.Description = signalCliGroupEntry.Description
groupEntry.Permissions.SendMessages = signalCliGroupPermissionToRestApiGroupPermission(signalCliGroupEntry.PermissionSendMessage)
groupEntry.Permissions.EditGroup = signalCliGroupPermissionToRestApiGroupPermission(signalCliGroupEntry.PermissionSendMessage)
groupEntry.Permissions.AddMembers = signalCliGroupPermissionToRestApiGroupPermission(signalCliGroupEntry.PermissionAddMember)
members := []string{}
for _, val := range signalCliGroupEntry.Members {

View File

@ -28,10 +28,10 @@ type SendMessageRecipient struct {
}
type LinkPreviewType struct {
Url string `json:"url"`
Title string `json:"title"`
Description string `json:"description"`
Base64Thumbnail string `json:"base64_thumbnail"`
Url string `json:"url"`
Title string `json:"title"`
Description string `json:"description"`
Base64Thumbnail string `json:"base64_thumbnail"`
}
type SignalCliSendRequest struct {
@ -52,3 +52,9 @@ type SignalCliSendRequest struct {
LinkPreview *LinkPreviewType
ViewOnce *bool
}
type GroupPermissions struct {
AddMembers string `json:"add_members" enums:"only-admins,every-member"`
EditGroup string `json:"edit_group" enums:"only-admins,every-member"`
SendMessages string `json:"send_messages" enums:"only-admins,every-member"`
}