~gitpocket/gitpocket

1

refactor(profile): rename the repositories tab and route to repos

commit
af815685d040d56e317c6675f43a4150693c1916 browse tree
parent
eabb2664019294b468e16cdf90f9ac326eef554b
author
james <j@cpl0.zip>
signature
Unverified signed with an unregistered key
date
2026-11-13 13:02 UTC

6 files changed, +12 −12

flow_test.go modified

@@ -298,7 +298,7 @@ func TestPins(t *testing.T) {
298298 if s.store.Pins(alice.ID)[ids[0]] != 0 {
299299 t.Error("unticking the box did not unpin")
300300 }
301- if w := get(h, "/~alice/repositories", ""); w.Code != 200 || !strings.Contains(w.Body.String(), `href="/~alice/g"`) {
302- t.Error("repositories page does not list every repo")
301+ if w := get(h, "/~alice/repos", ""); w.Code != 200 || !strings.Contains(w.Body.String(), `href="/~alice/g"`) {
302+ t.Error("repos page does not list every repo")
303303 }
304304 }

store.go modified

@@ -1084,7 +1084,7 @@ func validEmail(email string) bool {
10841084 const maxPins = 6
10851085
10861086 func reservedRepo(name string) bool {
1087- return name == "avatar" || name == "stars" || name == "feed" || name == "repositories"
1087+ return name == "avatar" || name == "stars" || name == "feed" || name == "repos"
10881088 }
10891089
10901090 func (s *Store) Pins(owner int64) map[int64]int {
@@ -1110,7 +1110,7 @@ func (s *Store) Pin(owner, repo int64, on bool) error {
11101110 return err
11111111 }
11121112 if len(s.Pins(owner)) >= maxPins {
1113- return fmt.Errorf("Only %d repositories can be pinned, unpin one first", maxPins)
1113+ return fmt.Errorf("Only %d repos can be pinned, unpin one first", maxPins)
11141114 }
11151115 _, err := s.db.Exec(`update repos set pinned = (select coalesce(max(pinned), 0) + 1 from repos where owner = ?) where id = ? and owner = ? and pinned = 0`, owner, repo, owner)
11161116 return err

templates/repositories.html → templates/repos.html renamed

@@ -2,7 +2,7 @@
22 {{$d := .Data}}
33 <div class="userhead">
44 <h2>~{{$d.Owner.Name}}</h2>
5-<nav class="tabs small"><a href="/~{{$d.Owner.Name}}">about</a><a class="active" href="/~{{$d.Owner.Name}}/repositories">repositories{{if $d.Repos}} <span class="count">{{len $d.Repos}}</span>{{end}}</a>{{if not $d.Org}}<a href="/~{{$d.Owner.Name}}/stars">stars{{if $d.Count}} <span class="count">{{$d.Count}}</span>{{end}}</a>{{end}}<a href="/~{{$d.Owner.Name}}/feed">feed</a></nav>
5+<nav class="tabs small"><a href="/~{{$d.Owner.Name}}">about</a><a class="active" href="/~{{$d.Owner.Name}}/repos">repos{{if $d.Repos}} <span class="count">{{len $d.Repos}}</span>{{end}}</a>{{if not $d.Org}}<a href="/~{{$d.Owner.Name}}/stars">stars{{if $d.Count}} <span class="count">{{$d.Count}}</span>{{end}}</a>{{end}}<a href="/~{{$d.Owner.Name}}/feed">feed</a></nav>
66 </div>
7-{{if $d.Repos}}<div class="events">{{range $d.Repos}}{{$pin := index $d.Pins .ID}}<div class="event"><h4><a href="/{{.Path}}">{{.Name}}</a>{{if .Private}} <span class="tag">private</span>{{else if .Unlisted}} <span class="tag">unlisted</span>{{end}}{{if $pin}} <span class="tag">pinned</span>{{end}}{{if .Stars}}<span class="starcount" title="{{.Stars}} stars">☆ {{.Stars}}</span>{{end}}</h4>{{if .Description}}<p>{{.Description}}</p>{{end}}{{if .Tags}}<p class="tags">{{range .Tags}}<a href="/search?q=tag:{{.}}">#{{.}}</a> {{end}}</p>{{end}}</div>{{end}}</div>{{else}}<p class="info">No repositories yet.</p>{{end}}
7+{{if $d.Repos}}<div class="events">{{range $d.Repos}}{{$pin := index $d.Pins .ID}}<div class="event"><h4><a href="/{{.Path}}">{{.Name}}</a>{{if .Private}} <span class="tag">private</span>{{else if .Unlisted}} <span class="tag">unlisted</span>{{end}}{{if $pin}} <span class="tag">pinned</span>{{end}}{{if .Stars}}<span class="starcount" title="{{.Stars}} stars">☆ {{.Stars}}</span>{{end}}</h4>{{if .Description}}<p>{{.Description}}</p>{{end}}{{if .Tags}}<p class="tags">{{range .Tags}}<a href="/search?q=tag:{{.}}">#{{.}}</a> {{end}}</p>{{end}}</div>{{end}}</div>{{else}}<p class="info">No repos yet.</p>{{end}}
88 {{end}}

templates/stars.html modified

@@ -1,7 +1,7 @@
11 {{define "content"}}
22 <div class="userhead">
33 <h2>~{{.Data.Owner.Name}}</h2>
4-<nav class="tabs small"><a href="/~{{.Data.Owner.Name}}">about</a><a href="/~{{.Data.Owner.Name}}/repositories">repositories</a><a class="active" href="/~{{.Data.Owner.Name}}/stars">stars{{if .Data.Count}} <span class="count">{{.Data.Count}}</span>{{end}}</a></nav>
4+<nav class="tabs small"><a href="/~{{.Data.Owner.Name}}">about</a><a href="/~{{.Data.Owner.Name}}/repos">repos</a><a class="active" href="/~{{.Data.Owner.Name}}/stars">stars{{if .Data.Count}} <span class="count">{{.Data.Count}}</span>{{end}}</a></nav>
55 </div>
66 {{if .Data.Starred}}<div class="events">{{range .Data.Starred}}<div class="event"><h4><a href="/~{{.Owner.Name}}">~{{.Owner.Name}}</a>/<a href="/{{.Path}}">{{.Name}}</a>{{if .Stars}}<span class="starcount" title="{{.Stars}} stars">☆ {{.Stars}}</span>{{end}}</h4>{{if .Description}}<p>{{.Description}}</p>{{end}}{{if .Tags}}<p class="tags">{{range .Tags}}<a href="/search?q=tag:{{.}}">#{{.}}</a> {{end}}</p>{{end}}</div>{{end}}</div>{{else}}<p class="info">~{{.Data.Owner.Name}} has not starred anything yet.</p>{{end}}
77 {{end}}

templates/user.html modified

@@ -3,7 +3,7 @@
33 {{$own := and .User (eq .User.ID .Data.Owner.ID)}}
44 <div class="userhead">
55 <h2>~{{.Data.Owner.Name}}</h2>
6-<nav class="tabs small"><a class="active" href="/~{{.Data.Owner.Name}}">about</a><a href="/~{{.Data.Owner.Name}}/repositories">repositories{{if .Data.Total}} <span class="count">{{.Data.Total}}</span>{{end}}</a><a href="/~{{.Data.Owner.Name}}/stars">stars{{if .Data.Count}} <span class="count">{{.Data.Count}}</span>{{end}}</a><a href="/~{{.Data.Owner.Name}}/feed">feed</a></nav>
6+<nav class="tabs small"><a class="active" href="/~{{.Data.Owner.Name}}">about</a><a href="/~{{.Data.Owner.Name}}/repos">repos{{if .Data.Total}} <span class="count">{{.Data.Total}}</span>{{end}}</a><a href="/~{{.Data.Owner.Name}}/stars">stars{{if .Data.Count}} <span class="count">{{.Data.Count}}</span>{{end}}</a><a href="/~{{.Data.Owner.Name}}/feed">feed</a></nav>
77 </div>
88 <div class="columns user">
99 <aside class="profile">

web.go modified

@@ -857,8 +857,8 @@ func (s *Server) route(w http.ResponseWriter, r *http.Request) {
857857 s.orgSettings(w, r, owner, name)
858858 return
859859 }
860- if name == "repositories" && len(parts) == 2 && r.Method == "GET" {
861- s.repositories(w, r, owner, user)
860+ if name == "repos" && len(parts) == 2 && r.Method == "GET" {
861+ s.repos(w, r, owner, user)
862862 return
863863 }
864864 if name == "stars" && len(parts) == 2 && r.Method == "GET" {
@@ -1592,7 +1592,7 @@ func pinnedRepos(repos []Repo, pins map[int64]int) []Repo {
15921592 return out
15931593 }
15941594
1595-func (s *Server) repositories(w http.ResponseWriter, r *http.Request, owner User, user *User) {
1595+func (s *Server) repos(w http.ResponseWriter, r *http.Request, owner User, user *User) {
15961596 member := user != nil && (user.ID == owner.ID || s.store.IsMember(owner.ID, user.ID))
15971597 repos, err := s.store.ReposByOwner(owner.ID, member)
15981598 if err != nil {
@@ -1601,5 +1601,5 @@ func (s *Server) repositories(w http.ResponseWriter, r *http.Request, owner User
16011601 }
16021602 starred, _ := s.store.StarredRepos(owner.ID)
16031603 data := map[string]any{"Owner": owner, "Repos": s.byUpdate(repos), "Pins": s.store.Pins(owner.ID), "Count": len(starred), "Org": s.store.IsOrg(owner.ID)}
1604- s.render(w, r, "repositories", page{Title: "~" + owner.Name + " repositories", User: user, Data: data})
1604+ s.render(w, r, "repos", page{Title: "~" + owner.Name + " repos", User: user, Data: data})
16051605 }