dkforest

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

commit 5dea9e98af623a8bc31259ee36a9827f2bf0a741
parent 41554ee65781292c6d9ec4db20dd0151650f91d0
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 20 Dec 2023 10:12:46 -0500

skip notify

Diffstat:
Mpkg/database/tableChatMessages.go | 12+++++++-----
Mpkg/web/handlers/api/v1/chat.go | 2+-
Mpkg/web/handlers/interceptors/command/command.go | 18+++++++++++-------
Mpkg/web/handlers/interceptors/slashInterceptor.go | 2+-
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 }