diff --git a/zendesk/tickets.go b/zendesk/tickets.go index e66de775..7a770f70 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"` @@ -70,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" { + 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 eef67cc2..278fe3d2 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,15 +15,18 @@ 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 } /* -------------------- 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) } @@ -66,3 +71,22 @@ 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 string(event.Rune()) { + case "f": + widget.openTicket() + return nil + } + switch event.Key() { + case tcell.KeyEnter: + widget.openTicket() + return nil + default: + return event + } +}