Update chat message visibility for moderation (#524)
* update message viz in db * create admin endpoint to update message visibility * convert UpdateMessageVisibility api to take in an array of IDs to change visibility on instead * Support requesting filtered or unfiltered chat messages * Handle UPDATE chat events on front and backend for toggling messages * Return entire message with UPDATE events * Remove the UPDATE message type * Revert "Remove the UPDATE message type" This reverts commit 3a83df3d492f7ecf2bab65e845aa2b0365d3a7f6. * update -> visibility update * completely remove messages when they turn hidden on VISIBILITY-UPDATEs, and insert them if they turn visible * Explicitly set visibility * Fix multi-id sql updates * increate scroll buffer a bit so chat scrolls when new large messages come in * Add automated test around chat moderation * Add new chat admin APIs to api spec * Commit updated API documentation Co-authored-by: Gabe Kangas <gabek@real-ity.com> Co-authored-by: Owncast <owncast@owncast.online>
This commit is contained in:
@@ -12,26 +12,26 @@ import (
|
||||
"mvdan.cc/xurls"
|
||||
)
|
||||
|
||||
// ChatMessage represents a single chat message.
|
||||
type ChatMessage struct {
|
||||
// ChatEvent represents a single chat message.
|
||||
type ChatEvent struct {
|
||||
ClientID string `json:"-"`
|
||||
|
||||
Author string `json:"author"`
|
||||
Body string `json:"body"`
|
||||
Author string `json:"author,omitempty"`
|
||||
Body string `json:"body,omitempty"`
|
||||
ID string `json:"id"`
|
||||
MessageType string `json:"type"`
|
||||
Visible bool `json:"visible"`
|
||||
Timestamp time.Time `json:"timestamp"`
|
||||
Timestamp time.Time `json:"timestamp,omitempty"`
|
||||
}
|
||||
|
||||
// Valid checks to ensure the message is valid.
|
||||
func (m ChatMessage) Valid() bool {
|
||||
func (m ChatEvent) Valid() bool {
|
||||
return m.Author != "" && m.Body != "" && m.ID != ""
|
||||
}
|
||||
|
||||
// RenderAndSanitizeMessageBody will turn markdown into HTML, sanitize raw user-supplied HTML and standardize
|
||||
// the message into something safe and renderable for clients.
|
||||
func (m *ChatMessage) RenderAndSanitizeMessageBody() {
|
||||
func (m *ChatEvent) RenderAndSanitizeMessageBody() {
|
||||
raw := m.Body
|
||||
|
||||
// Set the new, sanitized and rendered message body
|
||||
|
||||
Reference in New Issue
Block a user