summaryrefslogtreecommitdiffstats
path: root/routers
diff options
context:
space:
mode:
Diffstat (limited to 'routers')
-rw-r--r--routers/web/repo/helper.go12
-rw-r--r--routers/web/repo/helper_test.go11
2 files changed, 17 insertions, 6 deletions
diff --git a/routers/web/repo/helper.go b/routers/web/repo/helper.go
index 5e1e116018..6fa7579231 100644
--- a/routers/web/repo/helper.go
+++ b/routers/web/repo/helper.go
@@ -5,7 +5,7 @@ package repo
import (
"net/url"
- "sort"
+ "slices"
"code.gitea.io/gitea/models/user"
"code.gitea.io/gitea/modules/git"
@@ -14,12 +14,12 @@ import (
func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
if doer != nil {
- sort.Slice(users, func(i, j int) bool {
- if users[i].ID == users[j].ID {
- return false
- }
- return users[i].ID == doer.ID // if users[i] is self, put it before others, so less=true
+ doerIndex := slices.IndexFunc(users, func(user *user.User) bool {
+ return user.ID == doer.ID
})
+ if doerIndex != -1 {
+ return slices.Insert(slices.Delete(users, doerIndex, doerIndex+1), 0, doer)
+ }
}
return users
}
diff --git a/routers/web/repo/helper_test.go b/routers/web/repo/helper_test.go
index 978758e77f..844ad5bf79 100644
--- a/routers/web/repo/helper_test.go
+++ b/routers/web/repo/helper_test.go
@@ -23,4 +23,15 @@ func TestMakeSelfOnTop(t *testing.T) {
users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 2}, {ID: 1}})
assert.Len(t, users, 2)
assert.EqualValues(t, 2, users[0].ID)
+
+ users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 1}})
+ assert.Len(t, users, 1)
+ assert.EqualValues(t, 1, users[0].ID)
+
+ users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 1}, {ID: 2}, {ID: 3}, {ID: 4}})
+ assert.Len(t, users, 4)
+ assert.EqualValues(t, 2, users[0].ID)
+ assert.EqualValues(t, 1, users[1].ID)
+ assert.EqualValues(t, 3, users[2].ID)
+ assert.EqualValues(t, 4, users[3].ID)
}