commit 5dea9e98af623a8bc31259ee36a9827f2bf0a741
parent 41554ee65781292c6d9ec4db20dd0151650f91d0
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 20 Dec 2023 10:12:46 -0500
skip notify
Diffstat:
4 files changed, 20 insertions(+), 14 deletions(-)
diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go
@@ -89,6 +89,7 @@ type ChatMessage struct {
Moderators bool
IsHellbanned bool
Rev int64 // Revision, is incr every time a message is edited
+ SkipNotify bool `gorm:"-"`
}
func (m *ChatMessage) GetProfile(authUser *User) Username {
@@ -563,16 +564,16 @@ func makeMsg(raw, txt string, roomID RoomID, userID UserID) ChatMessage {
}
func (d *DkfDB) CreateMsg(raw, txt, roomKey string, roomID RoomID, userID UserID, toUserID *UserID) (out ChatMessage, err error) {
- return d.createMsg(raw, txt, roomKey, roomID, userID, toUserID, false)
+ return d.createMsg(raw, txt, roomKey, roomID, userID, toUserID, false, false)
}
func (d *DkfDB) CreateSysMsg(raw, txt, roomKey string, roomID RoomID, userID UserID) error {
- _, err := d.createMsg(raw, txt, roomKey, roomID, userID, nil, true)
+ _, err := d.createMsg(raw, txt, roomKey, roomID, userID, nil, true, false)
return err
}
-func (d *DkfDB) CreateSysMsg2(raw, txt, roomKey string, roomID RoomID, userID UserID, toUserID *UserID) error {
- _, err := d.createMsg(raw, txt, roomKey, roomID, userID, toUserID, true)
+func (d *DkfDB) CreateSysMsgPM(raw, txt, roomKey string, roomID RoomID, userID UserID, toUserID *UserID, skipNotify bool) error {
+ _, err := d.createMsg(raw, txt, roomKey, roomID, userID, toUserID, true, skipNotify)
return err
}
@@ -596,7 +597,7 @@ func (d *DkfDB) CreateUnkickMsg(kickedUser, kickedByUser User) {
}
}
-func (d *DkfDB) createMsg(raw, txt, roomKey string, roomID RoomID, userID UserID, toUserID *UserID, system bool) (out ChatMessage, err error) {
+func (d *DkfDB) createMsg(raw, txt, roomKey string, roomID RoomID, userID UserID, toUserID *UserID, system, skipNotify bool) (out ChatMessage, err error) {
if roomKey != "" {
var err error
txt, raw, err = encryptMessages(txt, raw, roomKey)
@@ -606,6 +607,7 @@ func (d *DkfDB) createMsg(raw, txt, roomKey string, roomID RoomID, userID UserID
}
out = makeMsg(raw, txt, roomID, userID)
+ out.SkipNotify = skipNotify
if toUserID != nil {
out.ToUserID = toUserID
}
diff --git a/pkg/web/handlers/api/v1/chat.go b/pkg/web/handlers/api/v1/chat.go
@@ -370,7 +370,7 @@ Loop:
// Sound notifications
var newMessageSound, taggedSound, pmSound bool
- if msg.User.ID != authUser.ID {
+ if msg.User.ID != authUser.ID && !msg.SkipNotify {
newMessageSound = true
if strings.Contains(renderedMsg, authUser.Username.AtStr()) {
taggedSound = true
diff --git a/pkg/web/handlers/interceptors/command/command.go b/pkg/web/handlers/interceptors/command/command.go
@@ -118,7 +118,11 @@ func (c *Command) ZeroMsg(msg string) {
}
func (c *Command) ZeroSysMsgTo(user2 *database.User, msg string) {
- c.zeroSysRawMsg(user2, msg, msg)
+ c.zeroSysRawMsg(user2, msg, msg, false)
+}
+
+func (c *Command) ZeroSysMsgToSkipNotify(user2 *database.User, msg string) {
+ c.zeroSysRawMsg(user2, msg, msg, true)
}
// ZeroPublicMsg have the "zero usser" send an unprocessed message in the current room
@@ -131,9 +135,9 @@ func (c *Command) zeroRawMsg(user2 *database.User, raw, msg string) {
c.rawMsg(zeroUser, user2, raw, msg)
}
-func (c *Command) zeroSysRawMsg(user2 *database.User, raw, msg string) {
+func (c *Command) zeroSysRawMsg(user2 *database.User, raw, msg string, skipNotify bool) {
zeroUser := c.GetZeroUser()
- c.rawSysMsg(zeroUser, user2, raw, msg)
+ c.rawSysMsg(zeroUser, user2, raw, msg, skipNotify)
}
func (c *Command) rawMsg(user1 database.User, user2 *database.User, raw, msg string) {
@@ -143,11 +147,11 @@ func (c *Command) rawMsg(user1 database.User, user2 *database.User, raw, msg str
rawMsgRoom(c.DB, user1, user2, raw, msg, c.RoomKey, c.Room.ID)
}
-func (c *Command) rawSysMsg(user1 database.User, user2 *database.User, raw, msg string) {
+func (c *Command) rawSysMsg(user1 database.User, user2 *database.User, raw, msg string, skipNotify bool) {
if c.Room.ReadOnly {
return
}
- rawSysMsgRoom(c.DB, user1, user2, raw, msg, c.RoomKey, c.Room.ID)
+ rawSysMsgRoom(c.DB, user1, user2, raw, msg, c.RoomKey, c.Room.ID, skipNotify)
}
func rawMsgRoom(db *database.DkfDB, user1 database.User, user2 *database.User, raw, msg, roomKey string, roomID database.RoomID) {
@@ -158,10 +162,10 @@ func rawMsgRoom(db *database.DkfDB, user1 database.User, user2 *database.User, r
_, _ = db.CreateMsg(raw, msg, roomKey, roomID, user1.ID, toUserID)
}
-func rawSysMsgRoom(db *database.DkfDB, user1 database.User, user2 *database.User, raw, msg, roomKey string, roomID database.RoomID) {
+func rawSysMsgRoom(db *database.DkfDB, user1 database.User, user2 *database.User, raw, msg, roomKey string, roomID database.RoomID, skipNotify bool) {
var toUserID *database.UserID
if user2 != nil {
toUserID = &user2.ID
}
- _ = db.CreateSysMsg2(raw, msg, roomKey, roomID, user1.ID, toUserID)
+ _ = db.CreateSysMsgPM(raw, msg, roomKey, roomID, user1.ID, toUserID, skipNotify)
}
diff --git a/pkg/web/handlers/interceptors/slashInterceptor.go b/pkg/web/handlers/interceptors/slashInterceptor.go
@@ -1806,7 +1806,7 @@ func handleWizzCmd(c *command.Command) (handled bool) {
}
database.MsgPubSub.Pub("wizz_"+wizzedUser.Username.String(), database.ChatMessageType{Typ: database.Wizz})
c.ZeroSysMsgTo(wizzedUser, "wizzed by "+c.AuthUser.Username.String())
- c.ZeroSysMsgTo(c.AuthUser, "you wizzed "+wizzedUser.Username.String())
+ c.ZeroSysMsgToSkipNotify(c.AuthUser, "you wizzed "+wizzedUser.Username.String())
c.Err = command.ErrRedirect
return true
}