From 23471e1333b8289063e97cf27b6ad7796f593b47 Mon Sep 17 00:00:00 2001 From: wxiaoguang Date: Sun, 8 Dec 2024 20:44:17 +0800 Subject: Refactor issue list (#32755) 1. add backend support for filtering "poster" and "assignee" * due to the limits, there is no frontend support at the moment 2. rewrite TS code without jquery, now there are 14 jQuery files left: --- routers/web/shared/user/helper.go | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'routers/web/shared') diff --git a/routers/web/shared/user/helper.go b/routers/web/shared/user/helper.go index dfd65420c1..7268767e0a 100644 --- a/routers/web/shared/user/helper.go +++ b/routers/web/shared/user/helper.go @@ -4,7 +4,9 @@ package user import ( + "context" "slices" + "strconv" "code.gitea.io/gitea/models/user" ) @@ -24,3 +26,22 @@ func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User { } return users } + +// GetFilterUserIDByName tries to get the user ID from the given username. +// Before, the "issue filter" passes user ID to query the list, but in many cases, it's impossible to pre-fetch the full user list. +// So it's better to make it work like GitHub: users could input username directly. +// Since it only converts the username to ID directly and is only used internally (to search issues), so no permission check is needed. +// Old usage: poster=123, new usage: poster=the-username (at the moment, non-existing username is treated as poster=0, not ideal but acceptable) +func GetFilterUserIDByName(ctx context.Context, name string) int64 { + if name == "" { + return 0 + } + u, err := user.GetUserByName(ctx, name) + if err != nil { + if id, err := strconv.ParseInt(name, 10, 64); err == nil { + return id + } + return 0 + } + return u.ID +} -- cgit v1.2.3