Merge pull request #9 from tailscale-dev/Xe/recent-paste-homepage

cmd/web: show up to top 5 recent pastes on homescreen
This commit is contained in:
Xe Iaso 2023-02-23 13:32:38 -05:00 committed by GitHub
commit 336965494b
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 59 additions and 11 deletions

View file

@ -82,12 +82,47 @@ func (s *Server) TailnetIndex(w http.ResponseWriter, r *http.Request) {
return
}
q := `
SELECT p.id
, p.filename
, p.created_at
, u.display_name
FROM pastes p
INNER JOIN users u
ON p.user_id = u.id
ORDER BY p.rowid DESC
LIMIT 5
`
jpis := make([]JoinedPasteInfo, 0, 5)
rows, err := s.db.QueryContext(r.Context(), q)
if err != nil {
s.ShowError(w, r, err, http.StatusInternalServerError)
return
}
defer rows.Close()
for rows.Next() {
jpi := JoinedPasteInfo{}
err := rows.Scan(&jpi.ID, &jpi.Filename, &jpi.CreatedAt, &jpi.PasterDisplayName)
if err != nil {
s.ShowError(w, r, err, http.StatusInternalServerError)
return
}
jpis = append(jpis, jpi)
}
err = s.tmpls.ExecuteTemplate(w, "create.tmpl", struct {
UserInfo *tailcfg.UserProfile
Title string
UserInfo *tailcfg.UserProfile
Title string
RecentPastes []JoinedPasteInfo
}{
UserInfo: ui.UserProfile,
Title: "Create new paste",
UserInfo: ui.UserProfile,
Title: "Create new paste",
RecentPastes: jpis,
})
if err != nil {
log.Printf("%s: %v", r.RemoteAddr, err)
@ -214,6 +249,13 @@ VALUES
}
type JoinedPasteInfo struct {
ID string `json:"id"`
Filename string `json:"fname"`
CreatedAt string `json:"created_at"`
PasterDisplayName string `json:"created_by"`
}
func (s *Server) TailnetPasteIndex(w http.ResponseWriter, r *http.Request) {
userInfo, err := upsertUserInfo(r.Context(), s.db, s.lc, r.RemoteAddr)
if err != nil {
@ -223,13 +265,6 @@ func (s *Server) TailnetPasteIndex(w http.ResponseWriter, r *http.Request) {
_ = userInfo
type JoinedPasteInfo struct {
ID string `json:"id"`
Filename string `json:"fname"`
CreatedAt string `json:"created_at"`
PasterDisplayName string `json:"created_by"`
}
q := `
SELECT p.id
, p.filename

View file

@ -9,5 +9,18 @@
<br />
<br />
{{if len .RecentPastes | eq 0}}
<p>There are no pastes in the list. Create one to share with your team!</p>
{{else}}
<h2>Recent pastes</h2>
<ul>
{{range .RecentPastes}}
<li><a href="/paste/{{.ID}}">{{.Filename}}</a> - {{.CreatedAt}} - {{.PasterDisplayName}}</li>
{{end}}
</ul>
<a href="/paste/list">See all pastes</a>
{{end}}
{{template "footer" .}}