mirror of
https://github.com/go-gitea/gitea.git
synced 2025-07-21 03:48:30 +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]
|
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...)
|
allProjects := append(slices.Clone(pageMetaData.ProjectsData.OpenProjects), pageMetaData.ProjectsData.ClosedProjects...)
|
||||||
candidateProjects := toSet(allProjects, func(project *project_model.Project) int64 { return project.ID })
|
candidateProjects := toSet(allProjects, func(project *project_model.Project) int64 { return project.ID })
|
||||||
inputProjectIDs, _ := base.StringsToInt64s(strings.Split(form.ProjectIDs, ","))
|
inputProjectIDs, _ := base.StringsToInt64s(strings.Split(form.ProjectIDs, ","))
|
||||||
var projectIDStrings []string
|
pageMetaData.ProjectsData.SelectedProjectID = util.JoinSlice(inputProjectIDs, func(v int64) string {
|
||||||
for _, inputProjectID := range inputProjectIDs {
|
if candidateProjects.Contains(v) {
|
||||||
if candidateProjects.Contains(inputProjectID) {
|
return strconv.FormatInt(v, 10)
|
||||||
projectIDStrings = append(projectIDStrings, strconv.FormatInt(inputProjectID, 10))
|
|
||||||
}
|
}
|
||||||
}
|
return ""
|
||||||
pageMetaData.ProjectsData.SelectedProjectID = strings.Join(projectIDStrings, ",")
|
})
|
||||||
|
|
||||||
// prepare assignees
|
// prepare assignees
|
||||||
candidateAssignees := toSet(pageMetaData.AssigneesData.CandidateAssignees, func(user *user_model.User) int64 { return user.ID })
|
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"
|
user_model "code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/container"
|
"code.gitea.io/gitea/modules/container"
|
||||||
"code.gitea.io/gitea/modules/optional"
|
"code.gitea.io/gitea/modules/optional"
|
||||||
|
"code.gitea.io/gitea/modules/util"
|
||||||
shared_user "code.gitea.io/gitea/routers/web/shared/user"
|
shared_user "code.gitea.io/gitea/routers/web/shared/user"
|
||||||
"code.gitea.io/gitea/services/context"
|
"code.gitea.io/gitea/services/context"
|
||||||
issue_service "code.gitea.io/gitea/services/issue"
|
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) {
|
func (d *IssuePageMetaData) retrieveProjectsDataForIssueWriter(ctx *context.Context) {
|
||||||
if d.Issue != nil && len(d.Issue.Projects) > 0 {
|
if d.Issue != nil && len(d.Issue.Projects) > 0 {
|
||||||
ids := make([]string, 0, len(d.Issue.Projects))
|
d.ProjectsData.SelectedProjectID = util.JoinSlice(d.Issue.Projects, func(v *project_model.Project) string {
|
||||||
for _, a := range d.Issue.Projects {
|
return strconv.FormatInt(v.ID, 10)
|
||||||
ids = append(ids, strconv.FormatInt(a.ID, 10))
|
})
|
||||||
}
|
|
||||||
d.ProjectsData.SelectedProjectID = strings.Join(ids, ",")
|
|
||||||
}
|
}
|
||||||
d.ProjectsData.OpenProjects, d.ProjectsData.ClosedProjects = retrieveProjectsInternal(ctx, ctx.Repo.Repository)
|
d.ProjectsData.OpenProjects, d.ProjectsData.ClosedProjects = retrieveProjectsInternal(ctx, ctx.Repo.Repository)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user