commit c374ba1204adab59601b3ccfb35e5e0f69b639a9
parent 53a42ef8e65031033232a4e4e2fbfaaccd96a313
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 20 Dec 2023 00:49:16 -0500
fix wizz
Diffstat:
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