commit 582ce5dc58f933bc58ad21df598f8c5437a08f68
parent 2b4aec93d60a45d5af0ea0e834915d5a7d21febf
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 20 Dec 2023 11:28:16 -0500
add itr command
Diffstat:
3 files changed, 35 insertions(+), 12 deletions(-)
diff --git a/pkg/managers/managers.go b/pkg/managers/managers.go
@@ -199,6 +199,19 @@ func (m *ActiveUsersManager) GetActiveUsers() []UserInfo {
return activeUsers.ToArray()
}
+func GetUserIgnoreSet(db *database.DkfDB, authUser *database.User) *hashset.HashSet[database.Username] {
+ ignoredSet := hashset.New[database.Username]()
+ // 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)
+ }
+ }
+ return ignoredSet
+}
+
func (m *ActiveUsersManager) GetRoomUsers(room database.ChatRoom, ignoredSet *hashset.HashSet[database.Username]) (inRoom, inChat []UserInfo) {
outsideUsers := make(UsersMap)
newRoomUsersMap := make(UsersMap)
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -7,7 +7,6 @@ import (
"dkforest/pkg/database"
dutils "dkforest/pkg/database/utils"
"dkforest/pkg/global"
- "dkforest/pkg/hashset"
"dkforest/pkg/managers"
"dkforest/pkg/utils"
"dkforest/pkg/web/handlers/interceptors"
@@ -42,17 +41,7 @@ func GetChatMenuData(c echo.Context, room database.ChatRoom) ChatMenuData {
data.OfficialRooms, _ = db.GetOfficialChatRooms1(authUser.ID)
data.SubscribedRooms, _ = db.GetUserRoomSubscriptions(authUser.ID)
- ignoredSet := hashset.New[database.Username]()
- // 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)
+ membersInRoom, membersInChat := managers.ActiveUsers.GetRoomUsers(room, managers.GetUserIgnoreSet(db, authUser))
data.Members = membersInRoom
data.MembersInChat = membersInChat
for _, user := range membersInChat {
diff --git a/pkg/web/handlers/interceptors/slashInterceptor.go b/pkg/web/handlers/interceptors/slashInterceptor.go
@@ -91,6 +91,7 @@ var userCmdsMap = map[string]CmdHandler{
"/chips": handleChipsBalanceCmd,
"/chips-reset": handleChipsResetCmd,
"/wizz": handleWizzCmd,
+ "/itr": handleInThisRoomCmd,
//"/chips-send": handleChipsSendCmd,
}
@@ -249,6 +250,26 @@ func handleListModeratorsCmd(c *command.Command) (handled bool) {
return false
}
+func handleInThisRoomCmd(c *command.Command) (handled bool) {
+ if c.Message == "/itr" {
+ membersInRoom, _ := managers.ActiveUsers.GetRoomUsers(c.Room, managers.GetUserIgnoreSet(c.DB, c.AuthUser))
+
+ msg := "In this room:"
+ if len(membersInRoom) > 0 {
+ msg += " "
+ for _, mod := range membersInRoom {
+ msg += mod.Username.AtStr() + " "
+ }
+ } else {
+ msg += "no one"
+ }
+ c.ZeroProcMsg(msg)
+ c.Err = command.ErrRedirect
+ return true
+ }
+ return false
+}
+
func handleKickCmd(c *command.Command) (handled bool) {
if m := kickRgx.FindStringSubmatch(c.Message); len(m) == 2 {
username := database.Username(m[1])