a314aab7ec
* Add support for Web Push Notifications when users receive a new Message or Friend Request on the main website. * Users opt in or out of this on their Notification Settings. They can also individually opt out of Message and Friend Request push notifications.
50 lines
1.3 KiB
Go
50 lines
1.3 KiB
Go
package index
|
|
|
|
import (
|
|
"net/http"
|
|
|
|
"code.nonshy.com/nonshy/website/pkg/config"
|
|
"code.nonshy.com/nonshy/website/pkg/log"
|
|
"code.nonshy.com/nonshy/website/pkg/templates"
|
|
)
|
|
|
|
// Create the controller.
|
|
func Create() http.HandlerFunc {
|
|
tmpl := templates.Must("index.html")
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
if r.URL.Path != "/" || r.Method != http.MethodGet {
|
|
log.Error("404 Not Found: %s", r.URL.Path)
|
|
templates.NotFoundPage(w, r)
|
|
return
|
|
}
|
|
|
|
if err := tmpl.Execute(w, r, nil); err != nil {
|
|
http.Error(w, err.Error(), http.StatusInternalServerError)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
|
|
// Favicon
|
|
func Favicon() http.HandlerFunc {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
http.ServeFile(w, r, config.StaticPath+"/favicon.ico")
|
|
})
|
|
}
|
|
|
|
// PWA Manifest
|
|
func Manifest() http.HandlerFunc {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
http.ServeFile(w, r, config.StaticPath+"/manifest.json")
|
|
})
|
|
}
|
|
|
|
// Service Worker for web push.
|
|
func ServiceWorker() http.HandlerFunc {
|
|
return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
|
|
w.Header().Add("Content-Type", "application/javascript; charset=UTF-8")
|
|
w.Header().Add("Service-Worker-Allowed", "/")
|
|
http.ServeFile(w, r, config.StaticPath+"/js/service-worker.js")
|
|
})
|
|
}
|