dkforest

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

commit e2fd9642813e299bf22707c5778afbbd9c4b95e4
parent ef3d25cb65967610a6fda98be4a0faf6e51f5072
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed,  7 Jun 2023 23:04:52 -0700

improve purge command

Diffstat:
Mpkg/database/tableChatMessages.go | 4++++
Mpkg/web/handlers/api/v1/handlers.go | 2+-
Mpkg/web/handlers/api/v1/slashInterceptor.go | 11++++++++---
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