mirror of
https://codeberg.org/forgejo/forgejo.git
synced 2024-12-22 15:23:14 -05:00
Merge pull request 'feat: avoid sorting for MakeSelfOnTop
' (#6130) from gusted/forgejo-sort into forgejo
Reviewed-on: https://codeberg.org/forgejo/forgejo/pulls/6130 Reviewed-by: Earl Warren <earl-warren@noreply.codeberg.org>
This commit is contained in:
commit
3d92dc861f
2 changed files with 17 additions and 6 deletions
|
@ -5,7 +5,7 @@ package repo
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"net/url"
|
"net/url"
|
||||||
"sort"
|
"slices"
|
||||||
|
|
||||||
"code.gitea.io/gitea/models/user"
|
"code.gitea.io/gitea/models/user"
|
||||||
"code.gitea.io/gitea/modules/git"
|
"code.gitea.io/gitea/modules/git"
|
||||||
|
@ -14,12 +14,12 @@ import (
|
||||||
|
|
||||||
func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
|
func MakeSelfOnTop(doer *user.User, users []*user.User) []*user.User {
|
||||||
if doer != nil {
|
if doer != nil {
|
||||||
sort.Slice(users, func(i, j int) bool {
|
doerIndex := slices.IndexFunc(users, func(user *user.User) bool {
|
||||||
if users[i].ID == users[j].ID {
|
return user.ID == doer.ID
|
||||||
return false
|
|
||||||
}
|
|
||||||
return users[i].ID == doer.ID // if users[i] is self, put it before others, so less=true
|
|
||||||
})
|
})
|
||||||
|
if doerIndex != -1 {
|
||||||
|
return slices.Insert(slices.Delete(users, doerIndex, doerIndex+1), 0, doer)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return users
|
return users
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,4 +23,15 @@ func TestMakeSelfOnTop(t *testing.T) {
|
||||||
users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 2}, {ID: 1}})
|
users = MakeSelfOnTop(&user.User{ID: 2}, []*user.User{{ID: 2}, {ID: 1}})
|
||||||
assert.Len(t, users, 2)
|
assert.Len(t, users, 2)
|
||||||
assert.EqualValues(t, 2, users[0].ID)
|
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)
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue