Make sidebar poll for notifications every 10s
This commit is contained in:
parent
3fedde7aa5
commit
b0a0c36141
@ -115,8 +115,6 @@ func (app *Application) ChangeSession(w http.ResponseWriter, r *http.Request) {
|
|||||||
app.error_400_with_message(w, fmt.Sprintf("User not in database: %s", form.AccountName))
|
app.error_400_with_message(w, fmt.Sprintf("User not in database: %s", form.AccountName))
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
data := Notifications{
|
data := Notifications{NumMessageNotifications: len(app.Profile.GetUnreadConversations(app.ActiveUser.ID))}
|
||||||
NumMessageNotifications: len(app.Profile.GetUnreadConversations(app.ActiveUser.ID)),
|
|
||||||
}
|
|
||||||
app.buffered_render_htmx(w, "nav-sidebar", PageGlobalData{}, data)
|
app.buffered_render_htmx(w, "nav-sidebar", PageGlobalData{}, data)
|
||||||
}
|
}
|
||||||
|
18
internal/webserver/handler_sidebar.go
Normal file
18
internal/webserver/handler_sidebar.go
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
package webserver
|
||||||
|
|
||||||
|
import (
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
func (app *Application) NavSidebarPollUpdates(w http.ResponseWriter, r *http.Request) {
|
||||||
|
app.traceLog.Printf("'NavSidebarPollUpdates' handler (path: %q)", r.URL.Path)
|
||||||
|
|
||||||
|
// Must be an HTMX request, otherwise HTTP 400
|
||||||
|
if r.Header.Get("HX-Request") != "true" {
|
||||||
|
app.error_400_with_message(w, "This is an HTMX-only endpoint, not a page")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
data := Notifications{NumMessageNotifications: len(app.Profile.GetUnreadConversations(app.ActiveUser.ID))}
|
||||||
|
app.buffered_render_htmx(w, "nav-sidebar", PageGlobalData{}, data)
|
||||||
|
}
|
@ -124,6 +124,8 @@ func (app *Application) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
|||||||
http.StripPrefix("/lists", http.HandlerFunc(app.Lists)).ServeHTTP(w, r)
|
http.StripPrefix("/lists", http.HandlerFunc(app.Lists)).ServeHTTP(w, r)
|
||||||
case "messages":
|
case "messages":
|
||||||
http.StripPrefix("/messages", http.HandlerFunc(app.Messages)).ServeHTTP(w, r)
|
http.StripPrefix("/messages", http.HandlerFunc(app.Messages)).ServeHTTP(w, r)
|
||||||
|
case "nav-sidebar-poll-updates":
|
||||||
|
app.NavSidebarPollUpdates(w, r)
|
||||||
default:
|
default:
|
||||||
app.UserFeed(w, r)
|
app.UserFeed(w, r)
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
{{define "nav-sidebar"}}
|
{{define "nav-sidebar"}}
|
||||||
<nav id="nav-sidebar" class="nav-sidebar">
|
<nav id="nav-sidebar" class="nav-sidebar" hx-trigger="load delay:10s" hx-get="/nav-sidebar-poll-updates" hx-swap="outerHTML">
|
||||||
<div id="logged-in-user-info">
|
<div id="logged-in-user-info">
|
||||||
<div class="button row" hx-get="/login" hx-trigger="click" hx-target="body" hx-push-url="true">
|
<div class="button row" hx-get="/login" hx-trigger="click" hx-target="body" hx-push-url="true">
|
||||||
{{template "author-info" active_user}}
|
{{template "author-info" active_user}}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user