summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bridge/mattermost/mattermost.go6
-rw-r--r--matterbridge.toml.sample8
-rw-r--r--matterclient/matterclient.go14
3 files changed, 25 insertions, 3 deletions
diff --git a/bridge/mattermost/mattermost.go b/bridge/mattermost/mattermost.go
index b9d082e3..31c8b603 100644
--- a/bridge/mattermost/mattermost.go
+++ b/bridge/mattermost/mattermost.go
@@ -143,12 +143,16 @@ func (b *Bmattermost) handleMatterClient(mchan chan *MMMessage) {
}
// do not post our own messages back to irc
// only listen to message from our team
- if message.Raw.Event == "posted" && b.mc.User.Username != message.Username && message.Raw.Data["team_id"].(string) == b.TeamId {
+ if (message.Raw.Event == "posted" || message.Raw.Event == "post_edited") &&
+ b.mc.User.Username != message.Username && message.Raw.Data["team_id"].(string) == b.TeamId {
flog.Debugf("Receiving from matterclient %#v", message)
m := &MMMessage{}
m.Username = message.Username
m.Channel = message.Channel
m.Text = message.Text
+ if message.Raw.Event == "post_edited" && !b.Config.EditDisable {
+ m.Text = message.Text + b.Config.EditSuffix
+ }
if len(message.Post.FileIds) > 0 {
for _, link := range b.mc.GetPublicLinks(message.Post.FileIds) {
m.Text = m.Text + "\n" + link
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index 69c18164..33a01fc5 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -241,6 +241,14 @@ NicksPerRow=4
#OPTIONAL (default false)
PrefixMessagesWithNick=false
+#Disable sending of edits to other bridges
+#OPTIONAL (default false)
+EditDisable=false
+
+#Message to be appended to every edited message
+#OPTIONAL (default empty)
+EditSuffix=" (edited)"
+
#Nicks you want to ignore.
#Messages from those users will not be sent to other bridges.
#OPTIONAL
diff --git a/matterclient/matterclient.go b/matterclient/matterclient.go
index a066d654..d234fb34 100644
--- a/matterclient/matterclient.go
+++ b/matterclient/matterclient.go
@@ -251,7 +251,7 @@ func (m *MMClient) WsReceiver() {
func (m *MMClient) parseMessage(rmsg *Message) {
switch rmsg.Raw.Event {
- case model.WEBSOCKET_EVENT_POSTED:
+ case model.WEBSOCKET_EVENT_POSTED, model.WEBSOCKET_EVENT_POST_EDITED:
m.parseActionPost(rmsg)
/*
case model.ACTION_USER_REMOVED:
@@ -280,7 +280,17 @@ func (m *MMClient) parseActionPost(rmsg *Message) {
rmsg.Username = m.GetUser(data.UserId).Username
rmsg.Channel = m.GetChannelName(data.ChannelId)
rmsg.Type = data.Type
- rmsg.Team = m.GetTeamName(rmsg.Raw.Data["team_id"].(string))
+ teamid, _ := rmsg.Raw.Data["team_id"].(string)
+ // edit messsages have no team_id for some reason
+ if teamid == "" {
+ // we can find the team_id from the channelid
+ result, _ := m.Client.GetChannel(data.ChannelId, "")
+ teamid = result.Data.(*model.ChannelData).Channel.TeamId
+ rmsg.Raw.Data["team_id"] = teamid
+ }
+ if teamid != "" {
+ rmsg.Team = m.GetTeamName(teamid)
+ }
// direct message
if rmsg.Raw.Data["channel_type"] == "D" {
rmsg.Channel = m.GetUser(data.UserId).Username