65 lines
1.1 KiB
Go
65 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"go.etcd.io/bbolt"
|
|
"html/template"
|
|
"log"
|
|
"net/http"
|
|
"time"
|
|
)
|
|
|
|
type indexHandler struct {
|
|
DB *bbolt.DB
|
|
}
|
|
|
|
func (h *indexHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|
sess, err := NewSession(w, r)
|
|
if err != nil {
|
|
log.Printf("Error loading session: %s", err)
|
|
return
|
|
}
|
|
defer sess.Flush()
|
|
|
|
if !sess.LoggedIn {
|
|
http.Redirect(w, r, "/auth/", 302)
|
|
return
|
|
}
|
|
|
|
moments, err := loadMoments(h.DB, time.Now().Format("2006-01-02"))
|
|
if err != nil {
|
|
log.Println(err)
|
|
}
|
|
|
|
type indexPageInfo struct {
|
|
Moments []Moment
|
|
LastMomentSeconds int64
|
|
Me string
|
|
}
|
|
|
|
indexPage := indexPageInfo{Moments: moments}
|
|
indexPage.Me = sess.Me
|
|
|
|
if len(moments) > 0 {
|
|
a := moments
|
|
for i := len(a)/2 - 1; i >= 0; i-- {
|
|
opp := len(a) - 1 - i
|
|
a[i], a[opp] = a[opp], a[i]
|
|
}
|
|
lastMoment := moments[0]
|
|
indexPage.LastMomentSeconds = lastMoment.Time.Unix()
|
|
}
|
|
|
|
t, err := template.New("index").Parse(indexPageTemplate)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
|
|
err = t.Execute(w, indexPage)
|
|
if err != nil {
|
|
log.Println(err)
|
|
return
|
|
}
|
|
}
|
|
|