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:
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