dkforest

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

commit 582ce5dc58f933bc58ad21df598f8c5437a08f68
parent 2b4aec93d60a45d5af0ea0e834915d5a7d21febf
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 20 Dec 2023 11:28:16 -0500

add itr command

Diffstat:
Mpkg/managers/managers.go | 13+++++++++++++
Mpkg/web/handlers/api/v1/handlers.go | 13+------------
Mpkg/web/handlers/interceptors/slashInterceptor.go | 21+++++++++++++++++++++
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])