mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-21 10:14:40 +02:00
Improve string join code for projects id
This commit is contained in:
parent
e912b7e3db
commit
4c72c32f9b
@ -288,3 +288,14 @@ func RemoveValue[T comparable](a []T, target T) []T {
|
||||
}
|
||||
return a[:n]
|
||||
}
|
||||
|
||||
func JoinSlice[T any](items []T, toString func(T) string) string {
|
||||
var b strings.Builder
|
||||
sep := ""
|
||||
for _, item := range items {
|
||||
b.WriteString(sep)
|
||||
b.WriteString(toString(item))
|
||||
sep = ","
|
||||
}
|
||||
return b.String()
|
||||
}
|
||||
|
@ -272,13 +272,12 @@ func ValidateRepoMetasForNewIssue(ctx *context.Context, form forms.CreateIssueFo
|
||||
allProjects := append(slices.Clone(pageMetaData.ProjectsData.OpenProjects), pageMetaData.ProjectsData.ClosedProjects...)
|
||||
candidateProjects := toSet(allProjects, func(project *project_model.Project) int64 { return project.ID })
|
||||
inputProjectIDs, _ := base.StringsToInt64s(strings.Split(form.ProjectIDs, ","))
|
||||
var projectIDStrings []string
|
||||
for _, inputProjectID := range inputProjectIDs {
|
||||
if candidateProjects.Contains(inputProjectID) {
|
||||
projectIDStrings = append(projectIDStrings, strconv.FormatInt(inputProjectID, 10))
|
||||
pageMetaData.ProjectsData.SelectedProjectID = util.JoinSlice(inputProjectIDs, func(v int64) string {
|
||||
if candidateProjects.Contains(v) {
|
||||
return strconv.FormatInt(v, 10)
|
||||
}
|
||||
}
|
||||
pageMetaData.ProjectsData.SelectedProjectID = strings.Join(projectIDStrings, ",")
|
||||
return ""
|
||||
})
|
||||
|
||||
// prepare assignees
|
||||
candidateAssignees := toSet(pageMetaData.AssigneesData.CandidateAssignees, func(user *user_model.User) int64 { return user.ID })
|
||||
|
@ -16,6 +16,7 @@ import (
|
||||
user_model "code.gitea.io/gitea/models/user"
|
||||
"code.gitea.io/gitea/modules/container"
|
||||
"code.gitea.io/gitea/modules/optional"
|
||||
"code.gitea.io/gitea/modules/util"
|
||||
shared_user "code.gitea.io/gitea/routers/web/shared/user"
|
||||
"code.gitea.io/gitea/services/context"
|
||||
issue_service "code.gitea.io/gitea/services/issue"
|
||||
@ -161,11 +162,9 @@ func (d *IssuePageMetaData) retrieveAssigneesData(ctx *context.Context) {
|
||||
|
||||
func (d *IssuePageMetaData) retrieveProjectsDataForIssueWriter(ctx *context.Context) {
|
||||
if d.Issue != nil && len(d.Issue.Projects) > 0 {
|
||||
ids := make([]string, 0, len(d.Issue.Projects))
|
||||
for _, a := range d.Issue.Projects {
|
||||
ids = append(ids, strconv.FormatInt(a.ID, 10))
|
||||
}
|
||||
d.ProjectsData.SelectedProjectID = strings.Join(ids, ",")
|
||||
d.ProjectsData.SelectedProjectID = util.JoinSlice(d.Issue.Projects, func(v *project_model.Project) string {
|
||||
return strconv.FormatInt(v.ID, 10)
|
||||
})
|
||||
}
|
||||
d.ProjectsData.OpenProjects, d.ProjectsData.ClosedProjects = retrieveProjectsInternal(ctx, ctx.Repo.Repository)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user