fix(issues): fix non-interactive assignee matching to logins&IDs

This commit is contained in:
Kynan Ware 2025-05-15 09:56:35 -06:00
parent eace1e889a
commit 9a5ea87d75
3 changed files with 16 additions and 2 deletions

View file

@ -97,6 +97,14 @@ type AssignedActors struct {
TotalCount int
}
func (a AssignedActors) Logins() []string {
logins := make([]string, len(a.Nodes))
for i, a := range a.Nodes {
logins[i] = a.Login
}
return logins
}
// DisplayNames returns a list of display names for the assigned actors.
func (a AssignedActors) DisplayNames() []string {
// These display names are used for populating the "default" assigned actors
@ -119,7 +127,7 @@ func (a AssignedActors) DisplayNames() []string {
// repository's assignableActors, treating the assignableActors DisplayName
// methods as the sources of truth.
// TODO KW: make this comment less of a wall of text if needed.
displayNames := make([]string, len(a.Nodes))
var displayNames []string
for _, a := range a.Nodes {
if a.TypeName == "User" {
u := NewAssignableUser(

View file

@ -268,6 +268,7 @@ func editRun(opts *EditOptions) error {
// on this GitHub host.
if editable.Assignees.ActorAssignees {
editable.Assignees.Default = issue.AssignedActors.DisplayNames()
editable.Assignees.DefaultLogins = issue.AssignedActors.Logins()
} else {
editable.Assignees.Default = issue.Assignees.Logins()
}

View file

@ -43,6 +43,7 @@ type EditableSlice struct {
type EditableAssignees struct {
EditableSlice
ActorAssignees bool
DefaultLogins []string
}
// ProjectsV2 mutations require a mapping of an item ID to a project ID.
@ -115,7 +116,11 @@ func (e Editable) AssigneeIds(client *api.Client, repo ghrepo.Interface) (*[]str
if len(e.Assignees.Add) != 0 || len(e.Assignees.Remove) != 0 {
meReplacer := NewMeReplacer(client, repo.RepoHost())
s := set.NewStringSet()
s.AddValues(e.Assignees.Default)
if e.Assignees.ActorAssignees {
s.AddValues(e.Assignees.DefaultLogins)
} else {
s.AddValues(e.Assignees.Default)
}
add, err := meReplacer.ReplaceSlice(e.Assignees.Add)
if err != nil {
return nil, err