Browse Source

Trigger the title updated webhook event whenever a title is changed (#2823)

* wip: trigger the title updated webhook event whenever a title is changed

* Commit updated API documentation

* fix: add STREAM_TITLE_CHANGED to list of valid events

* feat: Add support for STREAM_TITLE_CHANGED webhook event on admin dashboard

* fix: transmit webhook event after stream has changed to fix race conditions where older title was sent

---------

Co-authored-by: Owncast <owncast@owncast.online>
pull/2882/head
Pranav Joglekar 2 years ago committed by GitHub
parent
commit
07c5cabfe8
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 2
      controllers/admin/config.go
  2. 2
      core/chat/events/eventtype.go
  3. 6
      docs/api/index.html
  4. 2
      models/eventType.go
  5. 1
      models/webhook.go
  6. 5
      web/pages/admin/webhooks.tsx

2
controllers/admin/config.go

@ -15,6 +15,7 @@ import ( @@ -15,6 +15,7 @@ import (
"github.com/owncast/owncast/core/chat"
"github.com/owncast/owncast/core/data"
"github.com/owncast/owncast/core/user"
"github.com/owncast/owncast/core/webhooks"
"github.com/owncast/owncast/models"
"github.com/owncast/owncast/utils"
log "github.com/sirupsen/logrus"
@ -75,6 +76,7 @@ func SetStreamTitle(w http.ResponseWriter, r *http.Request) { @@ -75,6 +76,7 @@ func SetStreamTitle(w http.ResponseWriter, r *http.Request) {
}
if value != "" {
sendSystemChatAction(fmt.Sprintf("Stream title changed to **%s**", value), true)
go webhooks.SendStreamStatusEvent(models.StreamTitleUpdated)
}
controllers.WriteSimpleResponse(w, true, "changed")
}

2
core/chat/events/eventtype.go

@ -22,6 +22,8 @@ const ( @@ -22,6 +22,8 @@ const (
StreamStarted EventType = "STREAM_STARTED"
// StreamStopped represents a stream stopped event.
StreamStopped EventType = "STREAM_STOPPED"
// StreamTitleUpdated is the event sent when a stream's title changes.
StreamTitleUpdated EventType = "STREAM_TITLE_UPDATED"
// SystemMessageSent is the event sent when a system message is sent.
SystemMessageSent EventType = "SYSTEM"
// ChatDisabled is when a user is explicitly disabled and blocked from using chat.

6
docs/api/index.html

File diff suppressed because one or more lines are too long

2
models/eventType.go

@ -20,6 +20,8 @@ const ( @@ -20,6 +20,8 @@ const (
StreamStarted EventType = "STREAM_STARTED"
// StreamStopped represents a stream stopped event.
StreamStopped EventType = "STREAM_STOPPED"
// StreamTitleUpdated is the event sent when a stream's title changes.
StreamTitleUpdated EventType = "STREAM_TITLE_UPDATED"
// SystemMessageSent is the event sent when a system message is sent.
SystemMessageSent EventType = "SYSTEM"
// ChatActionSent is a generic chat action that can be used for anything that doesn't need specific handling or formatting.

1
models/webhook.go

@ -23,6 +23,7 @@ var validEvents = []EventType{ @@ -23,6 +23,7 @@ var validEvents = []EventType{
VisibiltyToggled,
StreamStarted,
StreamStopped,
StreamTitleUpdated,
}
// HasValidEvents will verify that all the events provided are valid.

5
web/pages/admin/webhooks.tsx

@ -42,6 +42,11 @@ const availableEvents = { @@ -42,6 +42,11 @@ const availableEvents = {
},
STREAM_STARTED: { name: 'Stream started', description: 'When a stream starts', color: 'orange' },
STREAM_STOPPED: { name: 'Stream stopped', description: 'When a stream stops', color: 'cyan' },
STREAM_TITLE_UPDATED: {
name: 'Stream title updated',
description: 'When a stream title is changed',
color: 'yellow',
},
};
function convertEventStringToTag(eventString: string) {

Loading…
Cancel
Save