commit d9b11d704535b272b02c67fc440d31e8629a786e
parent 4efc72e85bc085221ee7ec549033b56eb6854c77
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Mon, 22 May 2023 04:17:01 -0700
deduplicate code
Diffstat:
5 files changed, 64 insertions(+), 77 deletions(-)
diff --git a/pkg/web/handlers/api/v1/data.go b/pkg/web/handlers/api/v1/data.go
@@ -18,20 +18,25 @@ type chatTopBarData struct {
CommandsList []string
}
+type ChatMenuData struct {
+ InboxCount int64
+ OfficialRooms []database.ChatRoomAug
+ SubscribedRooms []database.ChatRoomAug
+ Members []managers.UserInfo
+ MembersInChat []managers.UserInfo
+ VisibleMemberInChat bool // either or not at least 1 user is "visible" (not hellbanned)
+ RoomName string
+ TopBarQueryParams string
+}
+
type ChatMessagesData struct {
+ ChatMenuData
NbButtons int64
Messages []database.ChatMessage
- Members []managers.UserInfo
- MembersInChat []managers.UserInfo
- VisibleMemberInChat bool // either or not at least 1 user is "visibile" (not hellbanned)
PreventRefresh bool
- TopBarQueryParams string
RoomName string
- InboxCount int64
ManualRefreshTimeout int64
ReadMarker database.ChatReadMarker
- OfficialRooms []database.ChatRoomAug
- SubscribedRooms []database.ChatRoomAug
ForceManualRefresh bool
NewMessageSound bool
TaggedSound bool
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -86,8 +86,44 @@ var memeRenameRgx = regexp.MustCompile(`^/meme ([a-zA-Z0-9_-]{3,50}) ([a-zA-Z0-9
var memeRemoveRgx = regexp.MustCompile(`^/memerm ([a-zA-Z0-9_-]{3,50})$`)
var memesRgx = regexp.MustCompile(`^/memes$`)
-func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
+func GetChatMenuData(c echo.Context, room database.ChatRoom) ChatMenuData {
+ db := c.Get("database").(*database.DkfDB)
+ authUser := c.Get("authUser").(*database.User)
+
+ data := ChatMenuData{}
+ sessionToken := ""
authCookie, _ := c.Cookie(hutils.AuthCookieName)
+ if authCookie != nil {
+ sessionToken = authCookie.Value
+ }
+ data.InboxCount = global.GetUserNotificationCount(db, authUser.ID, sessionToken)
+ data.OfficialRooms, _ = db.GetOfficialChatRooms1(authUser.ID)
+ data.SubscribedRooms, _ = db.GetUserRoomSubscriptions(authUser.ID)
+
+ ignoredSet := hashset.New[string]()
+ // Only fill the ignored set if the user does not display the ignored users ("Toggle ignored" chat setting)
+ // and if the user has "Hide ignored users from users lists" enabled (user setting)
+ if !authUser.DisplayIgnored && authUser.HideIgnoredUsersFromList {
+ ignoredUsersUsernames, _ := db.GetIgnoredUsersUsernames(authUser.ID)
+ for _, ignoredUserUsername := range ignoredUsersUsernames {
+ ignoredSet.Insert(ignoredUserUsername)
+ }
+ }
+
+ membersInRoom, membersInChat := managers.ActiveUsers.GetRoomUsers(room, ignoredSet)
+ data.Members = membersInRoom
+ data.MembersInChat = membersInChat
+ for _, user := range membersInChat {
+ if !user.IsHellbanned {
+ data.VisibleMemberInChat = true
+ break
+ }
+ }
+ data.RoomName = room.Name
+ return data
+}
+
+func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
authUser := c.Get("authUser").(*database.User)
db := c.Get("database").(*database.DkfDB)
roomName := c.Param("roomName")
@@ -105,17 +141,6 @@ func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
managers.ActiveUsers.UpdateUserInRoom(room, managers.NewUserInfo(*authUser, nil))
- ignoredSet := hashset.New[string]()
- // Only fill the ignored set if the user does not display the ignored users ("Toggle ignored" chat setting)
- // and if the user has "Hide ignored users from users lists" enabled (user setting)
- if !authUser.DisplayIgnored && authUser.HideIgnoredUsersFromList {
- ignoredUsersUsernames, _ := db.GetIgnoredUsersUsernames(authUser.ID)
- for _, ignoredUserUsername := range ignoredUsersUsernames {
- ignoredSet.Insert(ignoredUserUsername)
- }
- }
-
- membersInRoom, membersInChat := managers.ActiveUsers.GetRoomUsers(room, ignoredSet)
displayHellbanned := authUser.DisplayHellbanned || authUser.IsHellbanned
displayIgnoredMessages := false
msgs, _ := db.GetChatMessages(room.ID, authUser.Username, authUser.ID, pmOnlyQuery, mentionsOnlyQuery, displayHellbanned, authUser.DisplayIgnored, authUser.DisplayModerators, displayIgnoredMessages)
@@ -150,15 +175,7 @@ func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
data.ManualRefreshTimeout = authUser.RefreshRate + 25
data.Messages = msgs
- data.Members = membersInRoom
- data.MembersInChat = membersInChat
- for _, user := range membersInChat {
- if !user.IsHellbanned {
- data.VisibleMemberInChat = true
- break
- }
- }
- data.RoomName = room.Name
+
if _, found := c.QueryParams()["ml"]; found {
topBarQueryParams := url.Values{}
topBarQueryParams.Set("ml", "1")
@@ -170,15 +187,7 @@ func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
}
data.PreventRefresh = utils.DoParseBool(c.QueryParam("r"))
- sessionToken := ""
- if authCookie != nil {
- sessionToken = authCookie.Value
- }
- data.InboxCount = global.GetUserNotificationCount(db, authUser.ID, sessionToken)
-
data.ReadMarker, _ = db.GetUserReadMarker(authUser.ID, room.ID)
- data.OfficialRooms, _ = db.GetOfficialChatRooms1(authUser.ID)
- data.SubscribedRooms, _ = db.GetUserRoomSubscriptions(authUser.ID)
bools := []bool{authUser.DisplayDeleteButton}
if authUser.IsModerator() {
@@ -198,6 +207,8 @@ func chatMessages(c echo.Context) (status int, data ChatMessagesData) {
data.TaggedSound = utils.TernaryOrZero(authUser.NotifyTagged, taggedSound)
}
+ data.ChatMenuData = GetChatMenuData(c, room)
+
return http.StatusOK, data
}
diff --git a/pkg/web/handlers/api/v1/messages.qtpl b/pkg/web/handlers/api/v1/messages.qtpl
@@ -208,7 +208,7 @@
</div>
{% if !AuthUser.HideRightColumn %}
- {%-= RenderRightColumn(AuthUser, Data) -%}
+ {%-= RenderRightColumn(AuthUser, Data.ChatMenuData) -%}
{%- endif -%}
{%- if AuthUser.CollectMetadata -%}
<div class="div_1"></div>
@@ -220,7 +220,7 @@
{% endfunc %}
-{%- func RenderRightColumn(AuthUser *database.User, Data ChatMessagesData) -%}
+{%- func RenderRightColumn(AuthUser *database.User, Data ChatMenuData) -%}
<div id="rgt-pane">
<div class="mb-20px">
<div class="rgt-title">Inbox (<a href="/settings/inbox" target="_top"{% if Data.InboxCount > 0 %}class="notif"{% endif %}>{%dl Data.InboxCount %}</a>)</div>
@@ -389,7 +389,7 @@
{%- endfunc -%}
-{% func Member(AuthUser *database.User, Data ChatMessagesData, El managers.UserInfo) %}
+{% func Member(AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) %}
{%- code baseTopBarURL := "/api/v1/chat/top-bar/" + Data.RoomName -%}
{%- if El.Username == AuthUser.Username -%}
<div>
diff --git a/pkg/web/handlers/api/v1/messages.qtpl.go b/pkg/web/handlers/api/v1/messages.qtpl.go
@@ -362,7 +362,7 @@ func StreamMessages(qw422016 *qt422016.Writer, VERSION, CSRF, NullUsername strin
qw422016.N().S(`
`)
//line messages.qtpl:211
- StreamRenderRightColumn(qw422016, AuthUser, Data)
+ StreamRenderRightColumn(qw422016, AuthUser, Data.ChatMenuData)
//line messages.qtpl:212
}
//line messages.qtpl:213
@@ -408,7 +408,7 @@ func Messages(VERSION, CSRF, NullUsername string, AuthUser *database.User, Data
}
//line messages.qtpl:223
-func StreamRenderRightColumn(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData) {
+func StreamRenderRightColumn(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData) {
//line messages.qtpl:223
qw422016.N().S(`<div id="rgt-pane">
<div class="mb-20px">
@@ -575,7 +575,7 @@ func StreamRenderRightColumn(qw422016 *qt422016.Writer, AuthUser *database.User,
}
//line messages.qtpl:268
-func WriteRenderRightColumn(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData) {
+func WriteRenderRightColumn(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData) {
//line messages.qtpl:268
qw422016 := qt422016.AcquireWriter(qq422016)
//line messages.qtpl:268
@@ -586,7 +586,7 @@ func WriteRenderRightColumn(qq422016 qtio422016.Writer, AuthUser *database.User,
}
//line messages.qtpl:268
-func RenderRightColumn(AuthUser *database.User, Data ChatMessagesData) string {
+func RenderRightColumn(AuthUser *database.User, Data ChatMenuData) string {
//line messages.qtpl:268
qb422016 := qt422016.AcquireByteBuffer()
//line messages.qtpl:268
@@ -1091,7 +1091,7 @@ func RenderMessage(idx int, e database.ChatMessage, AuthUser *database.User,
}
//line messages.qtpl:392
-func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMessagesData, El managers.UserInfo) {
+func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
//line messages.qtpl:392
qw422016.N().S(`
`)
@@ -1235,7 +1235,7 @@ func StreamMember(qw422016 *qt422016.Writer, AuthUser *database.User, Data ChatM
}
//line messages.qtpl:428
-func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMessagesData, El managers.UserInfo) {
+func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) {
//line messages.qtpl:428
qw422016 := qt422016.AcquireWriter(qq422016)
//line messages.qtpl:428
@@ -1246,7 +1246,7 @@ func WriteMember(qq422016 qtio422016.Writer, AuthUser *database.User, Data ChatM
}
//line messages.qtpl:428
-func Member(AuthUser *database.User, Data ChatMessagesData, El managers.UserInfo) string {
+func Member(AuthUser *database.User, Data ChatMenuData, El managers.UserInfo) string {
//line messages.qtpl:428
qb422016 := qt422016.AcquireByteBuffer()
//line messages.qtpl:428
diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go
@@ -4892,39 +4892,10 @@ func ChatStreamMenuHandler(c echo.Context) error {
return c.NoContent(http.StatusForbidden)
}
- data := v1.ChatMessagesData{}
- sessionToken := ""
- authCookie, _ := c.Cookie(hutils.AuthCookieName)
- if authCookie != nil {
- sessionToken = authCookie.Value
- }
- data.InboxCount = global.GetUserNotificationCount(db, authUser.ID, sessionToken)
- data.OfficialRooms, _ = db.GetOfficialChatRooms1(authUser.ID)
- data.SubscribedRooms, _ = db.GetUserRoomSubscriptions(authUser.ID)
-
- ignoredSet := hashset.New[string]()
- // Only fill the ignored set if the user does not display the ignored users ("Toggle ignored" chat setting)
- // and if the user has "Hide ignored users from users lists" enabled (user setting)
- if !authUser.DisplayIgnored && authUser.HideIgnoredUsersFromList {
- ignoredUsersUsernames, _ := db.GetIgnoredUsersUsernames(authUser.ID)
- for _, ignoredUserUsername := range ignoredUsersUsernames {
- ignoredSet.Insert(ignoredUserUsername)
- }
- }
+ data := v1.GetChatMenuData(c, room)
- membersInRoom, membersInChat := managers.ActiveUsers.GetRoomUsers(room, ignoredSet)
- data.Members = membersInRoom
- data.MembersInChat = membersInChat
- for _, user := range membersInChat {
- if !user.IsHellbanned {
- data.VisibleMemberInChat = true
- break
- }
- }
- data.RoomName = room.Name
- //data.TopBarQueryParams
s := `<meta http-equiv="refresh" content="5" />`
- s += v1.GenerateStyle(authUser, data)
+ s += v1.GenerateStyle(authUser, v1.ChatMessagesData{})
s += v1.RenderRightColumn(authUser, data)
return c.HTML(http.StatusOK, s)
}