commit 727a062321c661e54d50a112c6a10195aabaf9e0
parent 49df6fdccb16400bccf0c46ab37353f0df7f9f96
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Sun, 18 Dec 2022 22:06:04 -0800
update user HB status in users manager when status changes
Diffstat:
4 files changed, 20 insertions(+), 0 deletions(-)
diff --git a/pkg/managers/managers.go b/pkg/managers/managers.go
@@ -122,6 +122,20 @@ func (m *ActiveUsersManager) UpdateUserInRoom(room database.ChatRoom, userInfo U
m.Unlock()
}
+func (m *ActiveUsersManager) UpdateUserHBInRooms(newUserInfo UserInfo) {
+ m.Lock()
+ for roomKey, usersMap := range m.activeUsers {
+ for username, userInfo := range usersMap {
+ if userInfo.UserID == userInfo.UserID {
+ prevUserInfo := m.activeUsers[roomKey][username]
+ prevUserInfo.IsHellbanned = newUserInfo.IsHellbanned
+ m.activeUsers[roomKey][username] = prevUserInfo
+ }
+ }
+ }
+ m.Unlock()
+}
+
func (m *ActiveUsersManager) getRoomUsersMap(roomKey RoomKey) UsersMap {
emptyUsersMap := make(UsersMap)
m.RLock()
diff --git a/pkg/web/handlers/admin.go b/pkg/web/handlers/admin.go
@@ -2,6 +2,7 @@ package handlers
import (
dutils "dkforest/pkg/database/utils"
+ "dkforest/pkg/managers"
"math"
"net/http"
"os"
@@ -649,6 +650,7 @@ func AdminEditUserHandler(c echo.Context) error {
user.IsAdmin = data.IsAdmin
if data.IsHellbanned {
user.HellBan()
+ managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil))
}
user.ApiKey = data.ApiKey
user.Verified = data.Verified
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -179,10 +179,12 @@ func UserHellbanHandler(c echo.Context) error {
if authUser.IsAdmin || !user.IsModerator() {
database.NewAudit(*authUser, fmt.Sprintf("hellban %s #%d", user.Username, user.ID))
user.HellBan()
+ managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil))
}
} else {
database.NewAudit(*authUser, fmt.Sprintf("unhellban %s #%d", user.Username, user.ID))
user.UnHellBan()
+ managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil))
}
}
return c.Redirect(http.StatusFound, c.Request().Referer())
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -314,6 +314,7 @@ func handleHellbanCmd(c *Command) (handled bool) {
}
database.NewAudit(*c.authUser, fmt.Sprintf("hellban %s #%d", user.Username, user.ID))
user.HellBan()
+ managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil))
c.err = ErrRedirect
return true
@@ -335,6 +336,7 @@ func handleUnhellbanCmd(c *Command) (handled bool) {
}
database.NewAudit(*c.authUser, fmt.Sprintf("unhellban %s #%d", user.Username, user.ID))
user.UnHellBan()
+ managers.ActiveUsers.UpdateUserHBInRooms(managers.NewUserInfo(user, nil))
c.err = ErrRedirect
return true