From 78b94ff85b678e1eb78fc0c3bf812ad2709334b2 Mon Sep 17 00:00:00 2001 From: Anbraten <6918444+anbraten@users.noreply.github.com> Date: Fri, 16 Feb 2024 17:50:49 +0100 Subject: [PATCH] finish --- services/websocket/websocket.go | 12 ++++++------ templates/base/head.tmpl | 2 +- web_src/js/htmx.js | 5 +++++ 3 files changed, 12 insertions(+), 7 deletions(-) diff --git a/services/websocket/websocket.go b/services/websocket/websocket.go index d6a7fd07ee9..c77ff3d9469 100644 --- a/services/websocket/websocket.go +++ b/services/websocket/websocket.go @@ -4,8 +4,7 @@ package websocket import ( - "fmt" - + "github.com/mitchellh/mapstructure" "github.com/olahol/melody" "code.gitea.io/gitea/modules/context" @@ -17,7 +16,7 @@ var m *melody.Melody type websocketMessage struct { Action string `json:"action"` - Data string `json:"data"` + Data any `json:"data"` } type subscribeMessageData struct { @@ -68,9 +67,10 @@ func handleMessage(s *melody.Session, _msg []byte) { } func handleSubscribeMessage(data *sessionData, _data any) error { - msgData, ok := _data.(*subscribeMessageData) - if !ok { - return fmt.Errorf("invalid message data") + msgData := &subscribeMessageData{} + err := mapstructure.Decode(_data, &msgData) + if err != nil { + return err } data.onURL = msgData.URL diff --git a/templates/base/head.tmpl b/templates/base/head.tmpl index 77eab677b2e..f9fb32a70d5 100644 --- a/templates/base/head.tmpl +++ b/templates/base/head.tmpl @@ -29,7 +29,7 @@ {{template "base/head_style" .}} {{template "custom/header" .}} - + {{ctx.DataRaceCheck $.Context}} {{template "custom/body_outer_pre" .}} diff --git a/web_src/js/htmx.js b/web_src/js/htmx.js index ceecb11b47a..fc245abc06a 100644 --- a/web_src/js/htmx.js +++ b/web_src/js/htmx.js @@ -20,3 +20,8 @@ document.body.addEventListener('htmx:responseError', (event) => { // TODO: add translations showErrorToast(`Error ${event.detail.xhr.status} when calling ${event.detail.requestConfig.path}`); }); + +document.body.addEventListener('htmx:wsOpen', (evt) => { + const socket = evt.detail.socketWrapper; + socket.send(JSON.stringify({action: 'subscribe', data: {url: window.location.href}})); +});