From abb616699fe561fab7f32d17ff72732e0b484b13 Mon Sep 17 00:00:00 2001 From: fimtitzgerald Date: Mon, 23 Jul 2018 22:54:19 -0700 Subject: [PATCH 1/4] Add ability to open ticket queue with Enter key --- zendesk/tickets.go | 4 ---- zendesk/widget.go | 20 +++++++++++++++++++- 2 files changed, 19 insertions(+), 5 deletions(-) diff --git a/zendesk/tickets.go b/zendesk/tickets.go index e66de775..b9e6f36f 100644 --- a/zendesk/tickets.go +++ b/zendesk/tickets.go @@ -13,10 +13,6 @@ type TicketArray struct { Tickets []Ticket } -type SingleTicket struct { - Ticket *Ticket `json:"ticket"` -} - type Ticket struct { Id uint64 `json:"id"` URL string `json:"url"` diff --git a/zendesk/widget.go b/zendesk/widget.go index eef67cc2..d9b557af 100644 --- a/zendesk/widget.go +++ b/zendesk/widget.go @@ -4,6 +4,8 @@ import ( "fmt" "log" + "github.com/gdamore/tcell" + "github.com/senorprogrammer/wtf/wtf" ) @@ -13,9 +15,11 @@ type Widget struct { func NewWidget() *Widget { widget := Widget{ - TextWidget: wtf.NewTextWidget(" Zendesk ", "zendesk", false), + TextWidget: wtf.NewTextWidget(" Zendesk ", "zendesk", true), } + widget.View.SetInputCapture(widget.keyboardIntercept) + return &widget } @@ -66,3 +70,17 @@ func (widget *Widget) parseRequester(ticket Ticket) interface{} { fromName := fromValMap["name"] return fromName } + +func (widget *Widget) openTicket() { + wtf.OpenFile("https://" + subdomain + ".zendesk.com") +} + +func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey { + switch event.Key() { + case tcell.KeyEnter: + widget.openTicket() + return nil + default: + return event + } +} From 766af8479dc8c7c05726efedf9c55194a356a904 Mon Sep 17 00:00:00 2001 From: fimtitzgerald Date: Mon, 23 Jul 2018 22:58:37 -0700 Subject: [PATCH 2/4] Not currently functioning - WIP stash --- zendesk/widget.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/zendesk/widget.go b/zendesk/widget.go index d9b557af..c5d0f861 100644 --- a/zendesk/widget.go +++ b/zendesk/widget.go @@ -76,6 +76,11 @@ func (widget *Widget) openTicket() { } func (widget *Widget) keyboardIntercept(event *tcell.EventKey) *tcell.EventKey { + switch string(event.Rune()) { + case "f": + widget.openTicket() + return nil + } switch event.Key() { case tcell.KeyEnter: widget.openTicket() From f14743c94f5baff157ab0d7d71a133066fd0841d Mon Sep 17 00:00:00 2001 From: Tim Fitzgerald Date: Wed, 25 Jul 2018 09:43:37 -0700 Subject: [PATCH 3/4] Ignore closed and solved tickets --- zendesk/tickets.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zendesk/tickets.go b/zendesk/tickets.go index b9e6f36f..fe826faa 100644 --- a/zendesk/tickets.go +++ b/zendesk/tickets.go @@ -73,7 +73,7 @@ func newTickets() ([]Ticket, error) { log.Fatal(err) } for _, Ticket := range tickets.Tickets { - if Ticket.Status == "new" { + if Ticket.Status == "new" && Ticket.Status != "closed" && Ticket.Status != "solved" { newTickets = append(newTickets, Ticket) } } From 6f63d7e6871f1f0f0ff3ddfb885500f62fe60a4a Mon Sep 17 00:00:00 2001 From: Tim Fitzgerald Date: Wed, 25 Jul 2018 09:51:15 -0700 Subject: [PATCH 4/4] Desired status can be set from config --- zendesk/tickets.go | 4 ++-- zendesk/widget.go | 3 ++- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/zendesk/tickets.go b/zendesk/tickets.go index fe826faa..7a770f70 100644 --- a/zendesk/tickets.go +++ b/zendesk/tickets.go @@ -66,14 +66,14 @@ func listTickets(pag ...string) (*TicketArray, error) { } -func newTickets() ([]Ticket, error) { +func newTickets(ticketStatus string) ([]Ticket, error) { newTickets := []Ticket{} tickets, err := listTickets() if err != nil { log.Fatal(err) } for _, Ticket := range tickets.Tickets { - if Ticket.Status == "new" && Ticket.Status != "closed" && Ticket.Status != "solved" { + if Ticket.Status == ticketStatus && Ticket.Status != "closed" && Ticket.Status != "solved" { newTickets = append(newTickets, Ticket) } } diff --git a/zendesk/widget.go b/zendesk/widget.go index c5d0f861..278fe3d2 100644 --- a/zendesk/widget.go +++ b/zendesk/widget.go @@ -25,7 +25,8 @@ func NewWidget() *Widget { /* -------------------- Exported Functions -------------------- */ func (widget *Widget) Refresh() { - tickets, err := newTickets() + ticketStatus := wtf.Config.UString("wtf.mods.zendesk.status") + tickets, err := newTickets(ticketStatus) if err != nil { log.Fatal(err) }