Disable notificaiton for new list

This commit is contained in:
Balakrishnan Balasubramanian 2023-04-05 07:32:11 -04:00
parent 0b1d455bc5
commit 347823b0bd
3 changed files with 23 additions and 11 deletions

View File

@ -109,16 +109,24 @@ func (g *GList) ClearChecked() {
persistReqC <- g
}
type SendMethod string
var (
NEWLIST SendMethod = "sendMessage"
EDITLIST SendMethod = "editMessageText"
)
type button struct {
Text string `json:"text"`
CallbackData string `json:"callback_data"`
}
type newListReq struct {
ChatID int `json:"chat_id"`
MessageID *int `json:"message_id,omitempty"`
Text string `json:"text"`
ReplyMarkup struct {
ChatID int `json:"chat_id"`
MessageID *int `json:"message_id,omitempty"`
Text string `json:"text"`
DisableNotification *bool `json:"disable_notification,omitempty"`
ReplyMarkup struct {
InlineKeyboard [][]button `json:"inline_keyboard"`
} `json:"reply_markup"`
}
@ -147,8 +155,12 @@ func makeButtons(items []Entry) [][]button {
return buttons
}
func (g *GList) GenSendListReq() ([]byte, error) {
func (g *GList) GenSendListReq(method SendMethod) ([]byte, error) {
req := newListReq{ChatID: g.ChatID, MessageID: g.MessageID, Text: "List:"}
if method == NEWLIST {
disableNotification := true
req.DisableNotification = &disableNotification
}
itemButtons := makeButtons(g.Items)
controlButtons := []button{{"clear checked", "clear"}}
req.ReplyMarkup.InlineKeyboard = append(itemButtons, controlButtons)

View File

@ -7,12 +7,12 @@ import (
func TestGList(t *testing.T) {
g := NewGList(4342, "foo")
data, err := g.GenSendListReq()
data, err := g.GenSendListReq(NEWLIST)
if err != nil {
t.Fatal(err)
}
expected := `{"chat_id":4342,"text":"List:","reply_markup":{"inline_keyboard":[[{"text":"foo","callback_data":"foo"}],[{"text":"clear checked","callback_data":"clear"}]]}}`
expected := `{"chat_id":4342,"text":"List:","disable_notification":true,"reply_markup":{"inline_keyboard":[[{"text":"foo","callback_data":"foo"}],[{"text":"clear checked","callback_data":"clear"}]]}}`
if expected != string(data) {
t.Fatalf("expected: %s\n got:%s\n", expected, string(data))
}

View File

@ -177,7 +177,7 @@ func handleTextAdded(gl *glist.GList, text string) {
gl.Mutex.Lock()
defer gl.Mutex.Unlock()
if count == gl.AllMsgCounter {
resp := sendList(gl, "sendMessage")
resp := sendList(gl, glist.NEWLIST)
if resp == nil {
return
}
@ -219,13 +219,13 @@ func handleButtonClick(gl *glist.GList, messageID int, text string) {
deleteMessage(gl.ChatID, messageID)
gl.MessageID = nil
} else {
sendList(gl, "editMessageText")
sendList(gl, glist.EDITLIST)
}
}
func sendList(gl *glist.GList, method string) []byte {
func sendList(gl *glist.GList, method glist.SendMethod) []byte {
url := fmt.Sprintf("https://api.telegram.org/bot%s/%s", apiToken, method)
sendMsgReq, err := gl.GenSendListReq()
sendMsgReq, err := gl.GenSendListReq(method)
if err != nil {
log.Println(err)
return nil