From 9d7df1af9d9cd95c4437dbade2dba268c0794735 Mon Sep 17 00:00:00 2001 From: djKooks Date: Wed, 13 Mar 2019 15:44:45 +0900 Subject: [PATCH] Add issue function --- api.go | 33 +++++++++++++++++++++++++++++++++ prompter.go | 31 +++++++++++++++++++++++++++++++ 2 files changed, 64 insertions(+) diff --git a/api.go b/api.go index b41bd57..acacf5a 100644 --- a/api.go +++ b/api.go @@ -40,6 +40,39 @@ func GetRepositories() (RepositoryResponse, error) { return response, nil } +func GetIssues() { + client := defaultGraphQLConnection() + issueRequest := graphql.NewRequest(` + query getIssues($login: String!, $last: Int!){ + user(login: $login) { + issues(last: $last states:OPEN orderBy:{ + field:UPDATED_AT + direction: ASC + }) { + nodes { + title + resourcePath + url + } + } + } + } + `) + + SetupRequest(issueRequest) + issueRequest.Var("last", 10) + + ctx := context.Background() + + var response IssueResponse + if err := client.Run(ctx, issueRequest, &response); err != nil { + log.Fatal(err) + return + } + + IssuePrompter(response) +} + func SetupRequest(req *graphql.Request) { user, err := ConfigReader() if err != nil { diff --git a/prompter.go b/prompter.go index e9dc3af..c61076b 100644 --- a/prompter.go +++ b/prompter.go @@ -48,3 +48,34 @@ func RepositoryPrompter(repo RepositoryResponse) { fmt.Printf("You choose %q\n", repoList[index].Url) OpenBrowser(repoList[index].Url) } + +func IssuePrompter(issue IssueResponse) { + issueList := issue.User.Issues.Nodes + templates := &promptui.SelectTemplates{ + Label: " [ {{ . }} ]", + Active: "\U0001F47F {{ .Title | red }}", + Inactive: " {{ .Title | cyan }}", + Selected: "\U0001F47F {{ .Title | green | red }}", + Details: ` +--------- Repo ---------- +{{ "Title:" | faint }} {{ .Title }} +{{ "Resource:" | faint }} {{ .ResourcePath }} +`, + } + + prompt := promptui.Select{ + Label: "Issues", + Items: issueList, + Templates: templates, + } + + index, _, err := prompt.Run() + + if err != nil { + fmt.Printf("Prompt failed %v\n", err) + return + } + + fmt.Printf("Go to issue %q\n", issueList[index].Title) + OpenBrowser(issueList[index].Url) +}