dkforest

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

commit 4c5786d5e7eeb7d3ab9ba4dd914c4f97f451a489
parent 485305f8fd37ce6677039178ac8ba74ce6418562
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Sun, 23 Apr 2023 02:16:57 -0700

only send chess notifs to online users

Diffstat:
Mpkg/database/tableUsers.go | 5+++++
Mpkg/database/utils/utils.go | 9++++++++-
2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/pkg/database/tableUsers.go b/pkg/database/tableUsers.go @@ -125,6 +125,11 @@ func UserPtrID(user *User) *UserID { return nil } +func (d *DkfDB) GetOnlineChessSubscribers(userIDs []UserID) (out []User, err error) { + err = d.db.Find(&out, "notify_chess_games == 1 AND id IN (?)", userIDs).Error + return +} + func (d *DkfDB) GetChessSubscribers() (out []User, err error) { err = d.db.Find(&out, "notify_chess_games == 1").Error return diff --git a/pkg/database/utils/utils.go b/pkg/database/utils/utils.go @@ -36,7 +36,14 @@ func SendNewChessGameMessages(db *database.DkfDB, key, roomKey string, roomID da // Send notifications to chess games subscribers raw = `Chess game: ` + player1.Username + ` VS ` + player2.Username msg = `<a href="/chess/` + key + `" rel="noopener noreferrer" target="_blank">Chess game: ` + player1.Username + ` VS ` + player2.Username + `</a>` - users, _ := db.GetChessSubscribers() + + activeUsers := managers.ActiveUsers.GetActiveUsers() + activeUsersIDs := make([]database.UserID, 0) + for _, activeUser := range activeUsers { + activeUsersIDs = append(activeUsersIDs, activeUser.UserID) + } + + users, _ := db.GetOnlineChessSubscribers(activeUsersIDs) for _, user := range users { if user.ID == player1.ID || user.ID == player2.ID { continue