dkforest

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

commit c374ba1204adab59601b3ccfb35e5e0f69b639a9
parent 53a42ef8e65031033232a4e4e2fbfaaccd96a313
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 20 Dec 2023 00:49:16 -0500

fix wizz

Diffstat:
Mpkg/database/tableChatMessages.go | 5+++++
Mpkg/web/handlers/interceptors/command/command.go | 24++++++++++++++++++++++++
Mpkg/web/handlers/interceptors/slashInterceptor.go | 10++++------
3 files changed, 33 insertions(+), 6 deletions(-)

diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go @@ -571,6 +571,11 @@ func (d *DkfDB) CreateSysMsg(raw, txt, roomKey string, roomID RoomID, userID Use 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) + return err +} + func (d *DkfDB) CreateKickMsg(kickedUser, kickedByUser User) { // Display kick message styledUsername := fmt.Sprintf(`<span %s>%s</span>`, kickedUser.GenerateChatStyle(), kickedUser.Username) diff --git a/pkg/web/handlers/interceptors/command/command.go b/pkg/web/handlers/interceptors/command/command.go @@ -117,6 +117,10 @@ func (c *Command) ZeroMsg(msg string) { c.zeroRawMsg(c.AuthUser, msg, msg) } +func (c *Command) ZeroSysMsgTo(user2 *database.User, msg string) { + c.zeroSysRawMsg(user2, msg, msg) +} + // ZeroPublicMsg have the "zero usser" send an unprocessed message in the current room func (c *Command) ZeroPublicMsg(raw, msg string) { c.zeroRawMsg(nil, raw, msg) @@ -127,6 +131,11 @@ 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) { + zeroUser := c.GetZeroUser() + c.rawSysMsg(zeroUser, user2, raw, msg) +} + func (c *Command) rawMsg(user1 database.User, user2 *database.User, raw, msg string) { if c.Room.ReadOnly { return @@ -134,6 +143,13 @@ 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) { + if c.Room.ReadOnly { + return + } + rawSysMsgRoom(c.DB, user1, user2, raw, msg, c.RoomKey, c.Room.ID) +} + func rawMsgRoom(db *database.DkfDB, user1 database.User, user2 *database.User, raw, msg, roomKey string, roomID database.RoomID) { var toUserID *database.UserID if user2 != nil { @@ -141,3 +157,11 @@ 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) { + var toUserID *database.UserID + if user2 != nil { + toUserID = &user2.ID + } + _ = db.CreateSysMsg2(raw, msg, roomKey, roomID, user1.ID, toUserID) +} diff --git a/pkg/web/handlers/interceptors/slashInterceptor.go b/pkg/web/handlers/interceptors/slashInterceptor.go @@ -1789,9 +1789,8 @@ func handleRefreshCmd(c *command.Command) (handled bool) { func handleWizzCmd(c *command.Command) (handled bool) { if c.Message == "/wizz" { database.MsgPubSub.Pub("wizz_"+c.AuthUser.Username.String(), database.ChatMessageType{Typ: database.Wizz}) - c.SystemMsg = true - c.Message = "wizzed by " + c.AuthUser.Username.String() - c.ToUser = c.AuthUser + c.ZeroSysMsgTo(c.AuthUser, "wizzed by "+c.AuthUser.Username.String()) + c.Err = command.ErrRedirect return true } else if m := wizzRgx.FindStringSubmatch(c.Message); len(m) == 2 { @@ -1806,9 +1805,8 @@ func handleWizzCmd(c *command.Command) (handled bool) { wizzedUser = &user } database.MsgPubSub.Pub("wizz_"+wizzedUser.Username.String(), database.ChatMessageType{Typ: database.Wizz}) - c.SystemMsg = true - c.Message = "wizzed by " + c.AuthUser.Username.String() - c.ToUser = wizzedUser + c.ZeroSysMsgTo(wizzedUser, "wizzed by "+c.AuthUser.Username.String()) + c.Err = command.ErrRedirect return true } return