commit e2fd9642813e299bf22707c5778afbbd9c4b95e4
parent ef3d25cb65967610a6fda98be4a0faf6e51f5072
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 7 Jun 2023 23:04:52 -0700
improve purge command
Diffstat:
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go
@@ -462,6 +462,10 @@ func (d *DkfDB) DeleteUserChatMessages(userID UserID) error {
return d.db.Where("user_id = ?", userID).Delete(&ChatMessage{}).Error
}
+func (d *DkfDB) DeleteUserHbChatMessages(userID UserID) error {
+ return d.db.Where("user_id = ? AND is_hellbanned = 1", userID).Delete(&ChatMessage{}).Error
+}
+
func (d *DkfDB) DeleteOldChatMessages() {
rooms, _ := d.GetOfficialChatRooms()
for _, room := range rooms {
diff --git a/pkg/web/handlers/api/v1/handlers.go b/pkg/web/handlers/api/v1/handlers.go
@@ -46,7 +46,7 @@ var editRgx = regexp.MustCompile(`^/e (` + chatTs + `)\s(?s:(.*))`)
var hbmtRgx = regexp.MustCompile(`^/hbmt (` + chatTs + `)$`)
var chessRgx = regexp.MustCompile(`^/chess ` + optAtGUser + `(?:\s(w|b|r))?`)
var inboxRgx = regexp.MustCompile(`^/inbox ` + optAtGUser + `(\s-e)?\s(?s:(.*))`)
-var purgeRgx = regexp.MustCompile(`^/purge ` + optAtGUserOr0)
+var purgeRgx = regexp.MustCompile(`^/purge(\s-hb)? ` + optAtGUserOr0)
var renameRgx = regexp.MustCompile(`^/rename ` + optAtGUser + ` ` + optAtGUser)
var profileRgx = regexp.MustCompile(`^/p ` + optAtGUserOr0)
var kickRgx = regexp.MustCompile(`^/(?:kick|k) ` + optAtGUser)
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -1629,15 +1629,20 @@ func handleSetChatRoomExternalLink(c *Command) (handled bool) {
}
func handlePurge(c *Command) (handled bool) {
- if m := purgeRgx.FindStringSubmatch(c.message); len(m) == 2 {
- username := database.Username(m[1])
+ if m := purgeRgx.FindStringSubmatch(c.message); len(m) == 3 {
+ isHB := m[1] == " -hb"
+ username := database.Username(m[2])
user, err := c.db.GetUserByUsername(username)
if err != nil {
c.err = err
return true
}
c.db.NewAudit(*c.authUser, fmt.Sprintf("purge %s #%d", user.Username, user.ID))
- _ = c.db.DeleteUserChatMessages(user.ID)
+ if isHB {
+ _ = c.db.DeleteUserHbChatMessages(user.ID)
+ } else {
+ _ = c.db.DeleteUserChatMessages(user.ID)
+ }
database.MsgPubSub.Pub(database.RefreshTopic, database.ChatMessageType{Typ: database.ForceRefresh})
c.err = ErrRedirect
return true