dkforest

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

commit 0b413f30e95976ea1a5715dffe1b27a57fd6ff63
parent 652836bf0995604ec6e17a0f7f222e5ff0669baa
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 24 May 2023 22:39:07 -0700

filter group messages for stream

Diffstat:
Mpkg/database/tableChatRoomGroups.go | 8++++++++
Mpkg/web/handlers/handlers.go | 4++++
2 files changed, 12 insertions(+), 0 deletions(-)

diff --git a/pkg/database/tableChatRoomGroups.go b/pkg/database/tableChatRoomGroups.go @@ -34,6 +34,14 @@ func (d *DkfDB) GetUserRoomGroups(userID UserID, roomID RoomID) (out []ChatRoomU return } +func (d *DkfDB) GetUserRoomGroupsIDs(userID UserID, roomID RoomID) (out []GroupID, err error) { + err = d.db.Model(&ChatRoomUserGroup{}). + Where("user_id = ? AND room_id = ?", userID, roomID). + Pluck("group_id", &out). + Error + return +} + func (d *DkfDB) GetRoomGroupByName(roomID RoomID, groupName string) (out ChatRoomGroup, err error) { err = d.db.First(&out, "room_id = ? AND name = ?", roomID, groupName).Error return diff --git a/pkg/web/handlers/handlers.go b/pkg/web/handlers/handlers.go @@ -5073,6 +5073,10 @@ Loop: msg.User, _ = db.GetUserByID(msg.UserID) } if msg.GroupID != nil { + userGroupsIDs, _ := db.GetUserRoomGroupsIDs(authUser.ID, msg.RoomID) + if !utils.InArr(*msg.GroupID, userGroupsIDs) { + continue + } if msg.Group == nil { group, _ := db.GetRoomGroupByID(msg.RoomID, *msg.GroupID) msg.Group = &group