dkforest

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

commit 1e9a2ea13d212c877ce579e9cab78e96b6fd2970
parent 6faa4e6c7f0afad8f7a3162c2c9d0088ce1d85e1
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun, 15 Jan 2023 19:39:27 -0800

cleanup

Diffstat:
Mpkg/database/tableChatMessages.go | 17+++++++++++++----
Mpkg/database/utils/utils.go | 15+++++++++++++++
Mpkg/web/handlers/api/v1/handlers.go | 4++--
3 files changed, 30 insertions(+), 6 deletions(-)

diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go @@ -275,7 +275,15 @@ func GetRoomChatMessagesByDate(roomID RoomID, dt time.Time) (out []ChatMessage, return } -func GetChatMessages(roomID RoomID, username string, userID UserID, displayPms int64, mentionsOnly, displayHellbanned, displayIgnored, displayModerators bool) (out ChatMessages, err error) { +type PmDisplayMode int64 + +const ( + PmNoFilter PmDisplayMode = iota + PmOnly + PmNone +) + +func GetChatMessages(roomID RoomID, username string, userID UserID, displayPms PmDisplayMode, mentionsOnly, displayHellbanned, displayIgnored, displayModerators bool) (out ChatMessages, err error) { cmp := func(t, t2 ChatMessage) bool { return t.ID > t2.ID } @@ -296,11 +304,12 @@ func GetChatMessages(roomID RoomID, username string, userID UserID, displayPms i if mentionsOnly { q = q.Where(`raw_message LIKE ?`, "%@"+username+"%") } - if displayPms == 0 { // Display all messages + switch displayPms { + case PmNoFilter: // Display all messages q = q.Where(`to_user_id is null OR to_user_id = ? OR user_id = ?`, userID, userID) - } else if displayPms == 1 { // Display PMs only + case PmOnly: // Display PMs only q = q.Where(`to_user_id = ? OR (user_id = ? AND to_user_id IS NOT NULL)`, userID, userID) - } else { // No PMs displayed + case PmNone: // No PMs displayed q = q.Where(`to_user_id is null`) } diff --git a/pkg/database/utils/utils.go b/pkg/database/utils/utils.go @@ -42,6 +42,21 @@ func SendNewChessGameMessages(key, roomKey string, roomID database.RoomID, zeroU } } +func DoParsePmDisplayMode(v string) database.PmDisplayMode { + p, err := utils.ParseInt64(v) + if err != nil { + return database.PmNoFilter + } + switch p { + case 1: + return database.PmOnly + case 2: + return database.PmNone + default: + return database.PmNoFilter + } +} + func ParseUserID(v string) (database.UserID, error) { p, err := utils.ParseInt64(v) if err != nil { diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go @@ -82,7 +82,7 @@ func ChatMessagesHandler(c echo.Context) error { authUser := c.Get("authUser").(*database.User) roomName := c.Param("roomName") - pmOnlyQuery := utils.DoParseInt64(c.QueryParam("pmonly")) + pmOnlyQuery := dutils.DoParsePmDisplayMode(c.QueryParam("pmonly")) mentionsOnlyQuery := utils.DoParseBool(c.QueryParam("mentionsOnly")) room, err := database.GetChatRoomByName(roomName) @@ -448,7 +448,7 @@ func RoomNotifierHandler(c echo.Context) error { managers.ActiveUsers.UpdateUserInRoom(room, managers.NewUserInfo(*authUser, nil)) displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned - msgs, _ := database.GetChatMessages(roomID, authUser.Username, authUser.ID, 0, false, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators) + msgs, _ := database.GetChatMessages(roomID, authUser.Username, authUser.ID, database.PmNoFilter, false, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators) if room.IsProtected() { key, err := hutils.GetRoomKeyCookie(c, int64(room.ID)) if err != nil {