commit 1e9a2ea13d212c877ce579e9cab78e96b6fd2970
parent 6faa4e6c7f0afad8f7a3162c2c9d0088ce1d85e1
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 15 Jan 2023 19:39:27 -0800
cleanup
Diffstat:
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 {