Noah
8085e092bc
* Enhance user experience replying to a forum thread. An inline reply textarea is added to page footers, "Quote" buttons on posts will quote the markdown source and focus the reply textarea, and "Reply" buttons will put an "@ mention" and focus the reply textarea. Users with scripts disabled will still be sent to the regular reply page as before. * Improve all pagers by adding a "QueryPlus" template function that merges the page number with other current query parameters. * Fix private profile picture avatars not displaying in your Notifications for profile pics you're allowed to see.
57 lines
1.5 KiB
Go
57 lines
1.5 KiB
Go
package account
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"code.nonshy.com/nonshy/website/pkg/config"
|
|
"code.nonshy.com/nonshy/website/pkg/models"
|
|
"code.nonshy.com/nonshy/website/pkg/session"
|
|
"code.nonshy.com/nonshy/website/pkg/templates"
|
|
)
|
|
|
|
// User dashboard or landing page (/me).
|
|
func Dashboard() http.HandlerFunc {
|
|
tmpl := templates.Must("account/dashboard.html")
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
currentUser, err := session.CurrentUser(r)
|
|
if err != nil {
|
|
http.Error(w, "Couldn't get currentUser", http.StatusInternalServerError)
|
|
return
|
|
}
|
|
|
|
// Mark all notifications read?
|
|
if r.FormValue("intent") == "read-notifications" {
|
|
models.MarkNotificationsRead(currentUser)
|
|
session.Flash(w, r, "All of your notifications have been marked as 'read!'")
|
|
templates.Redirect(w, "/me")
|
|
return
|
|
}
|
|
|
|
// Get our notifications.
|
|
pager := &models.Pagination{
|
|
Page: 1,
|
|
PerPage: config.PageSizeDashboardNotifications,
|
|
Sort: "created_at desc",
|
|
}
|
|
pager.ParsePage(r)
|
|
notifs, err := models.PaginateNotifications(currentUser, pager)
|
|
if err != nil {
|
|
session.FlashError(w, r, "Couldn't get your notifications: %s", err)
|
|
}
|
|
|
|
// Map our notifications.
|
|
notifMap := models.MapNotifications(notifs)
|
|
models.SetUserRelationshipsInNotifications(currentUser, notifs)
|
|
|
|
var vars = map[string]interface{}{
|
|
"Notifications": notifs,
|
|
"NotifMap": notifMap,
|
|
"Pager": pager,
|
|
}
|
|
if err := tmpl.Execute(w, r, vars); err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
})
|
|
}
|