dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 1cca9382e5cee9560331edc3f5578dd5f4afae7d
parent aa03e82e6ddd25fa414a460bc8a4ca9f559cf026
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Mon, 22 May 2023 21:35:13 -0700

force refresh when user is kicked

Diffstat:
Mpkg/database/utils/utils.go | 1+
Mpkg/web/handlers/handlers.go | 9++++++++-
2 files changed, 9 insertions(+), 1 deletion(-)

diff --git a/pkg/database/utils/utils.go b/pkg/database/utils/utils.go @@ -142,6 +142,7 @@ func kick(db *database.DkfDB, kicked, kickedBy database.User, silent, purge bool if err := db.DeleteUserChatMessages(kicked.ID); err != nil { logrus.Error(err) } + database.MsgPubSub.Pub("refresh", database.ChatMessageType{Typ: database.ForceRefresh}) } // If user is HB, do not display system message diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -4941,6 +4941,7 @@ func ChatStreamMessagesHandler(c echo.Context) error { data := v1.ChatMessagesData{} data.ChatMenuData.RoomName = room.Name + data.ManualRefreshTimeout = 0 _, _ = c.Response().Write([]byte(v1.GenerateStyle(authUser, data))) _, _ = c.Response().Write([]byte(fmt.Sprintf(`<div style="display:flex;flex-direction:column-reverse;" id="msgs">`))) c.Response().Flush() @@ -4961,7 +4962,8 @@ func ChatStreamMessagesHandler(c echo.Context) error { c.Response().Flush() authorizedChannels := make([]string, 0) - authorizedChannels = append(authorizedChannels, "room_"+utils.FormatInt64(int64(room.ID))) + authorizedChannels = append(authorizedChannels, "refresh") + authorizedChannels = append(authorizedChannels, "room_"+room.ID.String()) sub := database.MsgPubSub.Subscribe(authorizedChannels) defer sub.Close() @@ -4982,6 +4984,11 @@ Loop: continue } + if msgTyp.Typ == database.ForceRefresh { + _, _ = c.Response().Write([]byte(`<meta http-equiv="refresh" content="0" />`)) + break + } + i++ msg := msgTyp.Msg