From 236224dc44b88a40eafed0a67b9c2f7b17a4faff Mon Sep 17 00:00:00 2001 From: "Babak K. Shandiz" Date: Tue, 14 Apr 2026 11:52:52 +0100 Subject: [PATCH] fix(discussion list): replace state with closed in domain types Signed-off-by: Babak K. Shandiz --- pkg/cmd/discussion/client/client_impl.go | 7 +------ pkg/cmd/discussion/client/types.go | 6 +++--- pkg/cmd/discussion/list/list.go | 13 ++++++++++--- pkg/cmd/discussion/list/list_test.go | 4 +--- pkg/cmd/discussion/shared/fields.go | 2 +- 5 files changed, 16 insertions(+), 16 deletions(-) diff --git a/pkg/cmd/discussion/client/client_impl.go b/pkg/cmd/discussion/client/client_impl.go index 8c6825785..597303bef 100644 --- a/pkg/cmd/discussion/client/client_impl.go +++ b/pkg/cmd/discussion/client/client_impl.go @@ -67,17 +67,12 @@ type discussionNode struct { // mapDiscussion converts a GraphQL discussionNode response into the domain Discussion type. func mapDiscussion(n discussionNode) Discussion { - state := "OPEN" - if n.Closed { - state = "CLOSED" - } - d := Discussion{ ID: n.ID, Number: n.Number, Title: n.Title, URL: n.URL, - State: state, + Closed: n.Closed, StateReason: n.StateReason, Author: DiscussionAuthor{Login: n.Author.Login}, Category: DiscussionCategory{ diff --git a/pkg/cmd/discussion/client/types.go b/pkg/cmd/discussion/client/types.go index 15cd45936..d0fc0fadf 100644 --- a/pkg/cmd/discussion/client/types.go +++ b/pkg/cmd/discussion/client/types.go @@ -10,7 +10,7 @@ type Discussion struct { Title string Body string URL string - State string + Closed bool StateReason string Author DiscussionAuthor Category DiscussionCategory @@ -43,8 +43,8 @@ func (d Discussion) ExportData(fields []string) map[string]interface{} { data[f] = d.Body case "url": data[f] = d.URL - case "state": - data[f] = d.State + case "closed": + data[f] = d.Closed case "stateReason": data[f] = d.StateReason case "author": diff --git a/pkg/cmd/discussion/list/list.go b/pkg/cmd/discussion/list/list.go index e45f784a8..119d3ff9d 100644 --- a/pkg/cmd/discussion/list/list.go +++ b/pkg/cmd/discussion/list/list.go @@ -20,13 +20,16 @@ import ( const defaultLimit = 30 +// discussionListFields lists the field names available for --json output +// on the discussion list command. This excludes fields like "comments" +// that are only populated by the view command. var discussionListFields = []string{ "id", "number", "title", "body", "url", - "state", + "closed", "stateReason", "author", "category", @@ -306,13 +309,17 @@ func printDiscussions(opts *ListOptions, discussions []client.Discussion, totalC for _, d := range discussions { if isTerminal { idColor := cs.Green - if strings.EqualFold(d.State, "CLOSED") { + if d.Closed { idColor = cs.Gray } tp.AddField(fmt.Sprintf("#%d", d.Number), tableprinter.WithColor(idColor)) } else { tp.AddField(fmt.Sprintf("%d", d.Number)) - tp.AddField(d.State) + if d.Closed { + tp.AddField("CLOSED") + } else { + tp.AddField("OPEN") + } } tp.AddField(text.RemoveExcessiveWhitespace(d.Title)) diff --git a/pkg/cmd/discussion/list/list_test.go b/pkg/cmd/discussion/list/list_test.go index 20702a2a5..72cc92a89 100644 --- a/pkg/cmd/discussion/list/list_test.go +++ b/pkg/cmd/discussion/list/list_test.go @@ -24,7 +24,6 @@ func sampleDiscussions() []client.Discussion { Number: 42, Title: "Bug report discussion", URL: "https://github.com/OWNER/REPO/discussions/42", - State: "OPEN", Author: client.DiscussionAuthor{Login: "monalisa"}, Category: client.DiscussionCategory{ ID: "CAT1", @@ -41,7 +40,6 @@ func sampleDiscussions() []client.Discussion { Number: 41, Title: "Feature request", URL: "https://github.com/OWNER/REPO/discussions/41", - State: "OPEN", Author: client.DiscussionAuthor{Login: "octocat"}, Category: client.DiscussionCategory{ ID: "CAT2", @@ -576,7 +574,7 @@ func TestListRun_closedState(t *testing.T) { { Number: 10, Title: "Old discussion", - State: "CLOSED", + Closed: true, Category: client.DiscussionCategory{Name: "General"}, Labels: []client.DiscussionLabel{}, UpdatedAt: time.Date(2025, 1, 1, 0, 0, 0, 0, time.UTC), diff --git a/pkg/cmd/discussion/shared/fields.go b/pkg/cmd/discussion/shared/fields.go index 47d750314..0feb789d9 100644 --- a/pkg/cmd/discussion/shared/fields.go +++ b/pkg/cmd/discussion/shared/fields.go @@ -8,7 +8,7 @@ var DiscussionFields = []string{ "title", "body", "url", - "state", + "closed", "stateReason", "author", "category",