feat: notify document updates over websocket

This commit is contained in:
2026-04-29 09:14:49 -04:00
parent 9b8f2968e8
commit 6e244d55db
12 changed files with 358 additions and 19 deletions

View File

@@ -14,6 +14,7 @@ import (
"github.com/tim/md-hub-secure/apps/server/internal/config"
"github.com/tim/md-hub-secure/apps/server/internal/docs"
"github.com/tim/md-hub-secure/apps/server/internal/realtime"
"github.com/tim/md-hub-secure/apps/server/internal/store"
)
@@ -26,6 +27,7 @@ type Dependencies struct {
Documents *docs.Service
Repository *docs.Repository
ContentStore *store.ContentStore
Hub *realtime.Hub
}
type Server struct {
@@ -34,6 +36,7 @@ type Server struct {
documents *docs.Service
repository *docs.Repository
contentStore *store.ContentStore
hub *realtime.Hub
templates *template.Template
webEnabled bool
}
@@ -54,6 +57,7 @@ func New(deps Dependencies) (http.Handler, error) {
documents: deps.Documents,
repository: deps.Repository,
contentStore: deps.ContentStore,
hub: deps.Hub,
templates: templates,
}
@@ -65,12 +69,13 @@ func New(deps Dependencies) (http.Handler, error) {
router.Use(middleware.RequestID)
router.Use(middleware.RealIP)
router.Use(middleware.Recoverer)
router.Use(middleware.Timeout(30 * time.Second))
router.Use(server.timeoutExceptWebSocket(30 * time.Second))
router.Use(server.requestLogger)
router.Use(server.securityHeaders)
router.Get("/", server.handleIndex)
router.Get("/health", server.handleHealth)
router.Get("/ws", server.handleWebSocket)
router.Get("/docs", server.handleDocsIndexRedirect)
router.Get("/docs/*", server.handleDocument)
router.Post("/api/uploads", server.handleUpload)