commit f2c4247d8462c0549d532eea9205e0cd32f36743
parent 3e8457795c3dbea00742fd692a5a8f1c7bf486fa
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 26 May 2023 04:05:52 -0700
simplify code
Diffstat:
4 files changed, 45 insertions(+), 29 deletions(-)
diff --git a/pkg/database/database.go b/pkg/database/database.go
@@ -100,7 +100,7 @@ type IDkfDB interface {
DoCreateSession(userID UserID, userAgent string) Session
GetActiveUserSessions(userID UserID) (out []Session)
GetCategories() (out []CategoriesResult, err error)
- GetChatMessages(roomID RoomID, username Username, userID UserID, displayPms PmDisplayMode, mentionsOnly, displayHellbanned, displayIgnored, displayModerators, displayIgnoredMessages bool, minID1 int64) (out ChatMessages, err error)
+ GetChatMessages(roomID RoomID, roomKey string, username Username, userID UserID, displayPms PmDisplayMode, mentionsOnly, displayHellbanned, displayIgnored, displayModerators, displayIgnoredMessages bool, minID1 int64) (out ChatMessages, err error)
GetChatRoomByID(roomID RoomID) (out ChatRoom, err error)
GetChatRoomByName(roomName string) (out ChatRoom, err error)
GetChessSubscribers() (out []User, err error)
diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go
@@ -322,7 +322,9 @@ const (
PmNone
)
-func (d *DkfDB) GetChatMessages(roomID RoomID, username Username, userID UserID, displayPms PmDisplayMode, mentionsOnly, displayHellbanned, displayIgnored, displayModerators, displayIgnoredMessages bool, minID1 int64) (out ChatMessages, err error) {
+func (d *DkfDB) GetChatMessages(roomID RoomID, roomKey string, username Username, userID UserID,
+ displayPms PmDisplayMode, mentionsOnly, displayHellbanned, displayIgnored, displayModerators,
+ displayIgnoredMessages bool, minID1 int64) (out ChatMessages, err error) {
cmp := func(t, t2 ChatMessage) bool { return t.ID > t2.ID }
@@ -365,7 +367,9 @@ func (d *DkfDB) GetChatMessages(roomID RoomID, username Username, userID UserID,
q1 := q.Where("is_hellbanned = 0")
var out1 []ChatMessage
- err = q1.Find(&out1).Error
+ if err = q1.Find(&out1).Error; err != nil {
+ return out, err
+ }
var minID int64
if len(out1) > 0 {
@@ -384,12 +388,20 @@ func (d *DkfDB) GetChatMessages(roomID RoomID, username Username, userID UserID,
if minID1 > 0 {
q2 = q.Where("is_hellbanned = 1")
}
- err = q2.Find(&out2).Error
+ if err = q2.Find(&out2).Error; err != nil {
+ return out, err
+ }
}
out = sortedMerge(out1, out2, cmp)
- return
+ if roomKey != "" {
+ if err := out.DecryptAll(roomKey); err != nil {
+ return out, err
+ }
+ }
+
+ return out, nil
}
// merge two sorted slices. The output will also be sorted.
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -155,17 +155,21 @@ func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
managers.ActiveUsers.UpdateUserInRoom(room, managers.NewUserInfo(authUser))
- displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned
- displayIgnoredMessages := false
- msgs, _ := db.GetChatMessages(room.ID, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages, 0)
+ roomKey := ""
if room.IsProtected() {
key, err := hutils.GetRoomKeyCookie(c, int64(room.ID))
if err != nil {
return http.StatusForbidden, data
}
- if err := msgs.DecryptAll(key.Value); err != nil {
- return http.StatusInternalServerError, data
- }
+ roomKey = key.Value
+ }
+
+ displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned
+ displayIgnoredMessages := false
+ msgs, err := db.GetChatMessages(room.ID, roomKey, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery,
+ displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages, 0)
+ if err != nil {
+ return http.StatusInternalServerError, data
}
// Update read record
@@ -294,17 +298,21 @@ func RoomNotifierHandler(c echo.Context) error {
managers.ActiveUsers.UpdateUserInRoom(room, managers.NewUserInfo(authUser))
- displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned
- displayIgnoredMessages := false
- msgs, _ := db.GetChatMessages(roomID, authUser.Username, authUser.ID, database.PmNoFilter, false, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages, 0)
+ roomKey := ""
if room.IsProtected() {
key, err := hutils.GetRoomKeyCookie(c, int64(room.ID))
if err != nil {
return c.NoContent(http.StatusForbidden)
}
- if err := msgs.DecryptAll(key.Value); err != nil {
- return c.NoContent(http.StatusInternalServerError)
- }
+ roomKey = key.Value
+ }
+ displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned
+ mentionsOnly := false
+ displayIgnoredMessages := false
+ msgs, err := db.GetChatMessages(roomID, roomKey, authUser.Username, authUser.ID, database.PmNoFilter, mentionsOnly,
+ displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages, 0)
+ if err != nil {
+ return c.NoContent(http.StatusInternalServerError)
}
var data testData
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -5074,11 +5074,9 @@ func ChatStreamMessagesHandler(c echo.Context) error {
mentionsOnlyQuery := utils.DoParseBool(c.QueryParam("mentionsOnly"))
displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned
displayIgnoredMessages := false
- msgs, _ := db.GetChatMessages(room.ID, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages, 0)
- if room.IsProtected() {
- if err := msgs.DecryptAll(roomKey); err != nil {
- return c.Redirect(http.StatusFound, "/")
- }
+ msgs, err := db.GetChatMessages(room.ID, roomKey, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages, 0)
+ if err != nil {
+ return c.Redirect(http.StatusFound, "/")
}
data.Messages = msgs
data.NbButtons = authUser.CountUIButtons()
@@ -5142,13 +5140,11 @@ Loop:
}
if msgTyp.Typ == database.EditMsg {
- msgs, _ := db.GetChatMessages(room.ID, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery,
- displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages,
- msgTyp.Msg.ID)
- if room.IsProtected() {
- if err := msgs.DecryptAll(roomKey); err != nil {
- return c.Redirect(http.StatusFound, "/")
- }
+ msgs, err := db.GetChatMessages(room.ID, roomKey, authUser.Username, authUser.ID, pmOnlyQuery,
+ mentionsOnlyQuery, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators,
+ displayIgnoredMessages, msgTyp.Msg.ID)
+ if err != nil {
+ return c.Redirect(http.StatusFound, "/")
}
toHide := make([]string, len(msgs))