From 8cd60ff6c399e9cbc95bdc09b0a2c370e395ec6e Mon Sep 17 00:00:00 2001 From: ahatius Date: Wed, 7 Aug 2024 18:54:24 +0200 Subject: [PATCH] Add support to disable notify-self flag on /v2/send endpoint --- src/api/api.go | 8 +++++--- src/client/client.go | 9 ++++++--- src/datastructs/datastructs.go | 1 + src/docs/docs.go | 3 +++ src/docs/swagger.json | 5 ++++- src/docs/swagger.yaml | 2 ++ 6 files changed, 21 insertions(+), 7 deletions(-) diff --git a/src/api/api.go b/src/api/api.go index 06443a1..1083761 100644 --- a/src/api/api.go +++ b/src/api/api.go @@ -7,8 +7,8 @@ import ( "net/http" "strconv" "strings" - "time" "sync" + "time" "github.com/gabriel-vasile/mimetype" "github.com/gin-gonic/gin" @@ -121,6 +121,7 @@ type SendMessageV2 struct { QuoteMentions []ds.MessageMention `json:"quote_mentions"` TextMode *string `json:"text_mode" enums:"normal,styled"` EditTimestamp *int64 `json:"edit_timestamp"` + NotifySelf *bool `json:"notify_self"` } type TypingIndicatorRequest struct { @@ -199,7 +200,7 @@ type AddStickerPackRequest struct { type Api struct { signalClient *client.SignalClient - wsMutex sync.Mutex + wsMutex sync.Mutex } func NewApi(signalClient *client.SignalClient) *Api { @@ -418,7 +419,8 @@ func (a *Api) SendV2(c *gin.Context) { data, err := a.signalClient.SendV2( req.Number, req.Message, req.Recipients, req.Base64Attachments, req.Sticker, - req.Mentions, req.QuoteTimestamp, req.QuoteAuthor, req.QuoteMessage, req.QuoteMentions, req.TextMode, req.EditTimestamp) + req.Mentions, req.QuoteTimestamp, req.QuoteAuthor, req.QuoteMessage, req.QuoteMentions, + req.TextMode, req.EditTimestamp, req.NotifySelf) if err != nil { switch err.(type) { case *client.RateLimitErrorType: diff --git a/src/client/client.go b/src/client/client.go index 335a68b..20de172 100644 --- a/src/client/client.go +++ b/src/client/client.go @@ -562,7 +562,10 @@ func (s *SignalClient) send(signalCliSendRequest ds.SignalCliSendRequest) (*Send cmd = append(cmd, strconv.FormatInt(*signalCliSendRequest.EditTimestamp, 10)) } - cmd = append(cmd, "--notify-self") + // for backwards compatibility, if nothing is set, use the notify-self flag + if signalCliSendRequest.NotifySelf == nil || *signalCliSendRequest.NotifySelf { + cmd = append(cmd, "--notify-self") + } rawData, err := s.cliClient.Execute(true, cmd, signalCliSendRequest.Message) if err != nil { @@ -719,7 +722,7 @@ func (s *SignalClient) getJsonRpc2Clients() []*JsonRpc2Client { } func (s *SignalClient) SendV2(number string, message string, recps []string, base64Attachments []string, sticker string, mentions []ds.MessageMention, - quoteTimestamp *int64, quoteAuthor *string, quoteMessage *string, quoteMentions []ds.MessageMention, textMode *string, editTimestamp *int64) (*[]SendResponse, error) { + quoteTimestamp *int64, quoteAuthor *string, quoteMessage *string, quoteMentions []ds.MessageMention, textMode *string, editTimestamp *int64, notifySelf *bool) (*[]SendResponse, error) { if len(recps) == 0 { return nil, errors.New("Please provide at least one recipient") } @@ -770,7 +773,7 @@ func (s *SignalClient) SendV2(number string, message string, recps []string, bas signalCliSendRequest := ds.SignalCliSendRequest{Number: number, Message: message, Recipients: []string{group}, Base64Attachments: base64Attachments, RecipientType: ds.Group, Sticker: sticker, Mentions: mentions, QuoteTimestamp: quoteTimestamp, QuoteAuthor: quoteAuthor, QuoteMessage: quoteMessage, QuoteMentions: quoteMentions, - TextMode: textMode, EditTimestamp: editTimestamp} + TextMode: textMode, EditTimestamp: editTimestamp, NotifySelf: notifySelf} timestamp, err := s.send(signalCliSendRequest) if err != nil { return nil, err diff --git a/src/datastructs/datastructs.go b/src/datastructs/datastructs.go index 69290d8..aef07ac 100644 --- a/src/datastructs/datastructs.go +++ b/src/datastructs/datastructs.go @@ -41,4 +41,5 @@ type SignalCliSendRequest struct { QuoteMentions []MessageMention TextMode *string EditTimestamp *int64 + NotifySelf *bool } diff --git a/src/docs/docs.go b/src/docs/docs.go index 00a3b6e..ffcf328 100644 --- a/src/docs/docs.go +++ b/src/docs/docs.go @@ -2282,6 +2282,9 @@ var doc = `{ "normal", "styled" ] + }, + "notify_self": { + "type": "boolean" } } }, diff --git a/src/docs/swagger.json b/src/docs/swagger.json index bf63f6c..00d3b1b 100644 --- a/src/docs/swagger.json +++ b/src/docs/swagger.json @@ -2266,6 +2266,9 @@ "normal", "styled" ] + }, + "notify_self": { + "type": "boolean" } } }, @@ -2589,4 +2592,4 @@ "name": "Sticker Packs" } ] -} \ No newline at end of file +} diff --git a/src/docs/swagger.yaml b/src/docs/swagger.yaml index 4bb3446..5acc934 100644 --- a/src/docs/swagger.yaml +++ b/src/docs/swagger.yaml @@ -195,6 +195,8 @@ definitions: - normal - styled type: string + notify_self: + type: boolean type: object api.SetUsernameRequest: properties: