From a9f5918a9df9fca2fcab97e2c7e623187755ae78 Mon Sep 17 00:00:00 2001 From: JoramWilander Date: Tue, 29 Sep 2015 08:38:26 -0400 Subject: Update incoming webhooks to hide DMs and accept direct JSON payloads. --- .../components/user_settings/manage_incoming_hooks.jsx | 16 +++++++++------- web/react/utils/constants.jsx | 1 + web/web.go | 7 ++++++- 3 files changed, 16 insertions(+), 8 deletions(-) (limited to 'web') diff --git a/web/react/components/user_settings/manage_incoming_hooks.jsx b/web/react/components/user_settings/manage_incoming_hooks.jsx index 1bbfbd162..fa2e2e5e4 100644 --- a/web/react/components/user_settings/manage_incoming_hooks.jsx +++ b/web/react/components/user_settings/manage_incoming_hooks.jsx @@ -21,7 +21,7 @@ export default class ManageIncomingHooks extends React.Component { this.getHooks(); } addNewHook() { - let hook = {}; //eslint-disable-line prefer-const + const hook = {}; hook.channel_id = this.state.channelId; Client.addIncomingHook( @@ -40,13 +40,13 @@ export default class ManageIncomingHooks extends React.Component { ); } removeHook(id) { - let data = {}; //eslint-disable-line prefer-const + const data = {}; data.id = id; Client.deleteIncomingHook( data, () => { - let hooks = this.state.hooks; //eslint-disable-line prefer-const + const hooks = this.state.hooks; let index = -1; for (let i = 0; i < hooks.length; i++) { if (hooks[i].id === id) { @@ -69,7 +69,7 @@ export default class ManageIncomingHooks extends React.Component { getHooks() { Client.listIncomingHooks( (data) => { - let state = this.state; //eslint-disable-line prefer-const + const state = this.state; if (data) { state.hooks = data; @@ -93,9 +93,11 @@ export default class ManageIncomingHooks extends React.Component { } const channels = ChannelStore.getAll(); - let options = []; //eslint-disable-line prefer-const + const options = []; channels.forEach((channel) => { - options.push(); + if (channel.type !== Constants.DM_CHANNEL) { + options.push(); + } }); let disableButton = ''; @@ -103,7 +105,7 @@ export default class ManageIncomingHooks extends React.Component { disableButton = ' disable'; } - let hooks = []; //eslint-disable-line prefer-const + const hooks = []; this.state.hooks.forEach((hook) => { const c = ChannelStore.get(hook.channel_id); hooks.push( diff --git a/web/react/utils/constants.jsx b/web/react/utils/constants.jsx index 75e80bc7e..da59f8e5a 100644 --- a/web/react/utils/constants.jsx +++ b/web/react/utils/constants.jsx @@ -111,6 +111,7 @@ module.exports = { ], MONTHS: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December'], MAX_DMS: 20, + DM_CHANNEL: 'D', MAX_POST_LEN: 4000, EMOJI_SIZE: 16, ONLINE_ICON_SVG: "", diff --git a/web/web.go b/web/web.go index da7eff13d..bf985a5a0 100644 --- a/web/web.go +++ b/web/web.go @@ -850,7 +850,12 @@ func incomingWebhook(c *api.Context, w http.ResponseWriter, r *http.Request) { r.ParseForm() - props := model.MapFromJson(strings.NewReader(r.FormValue("payload"))) + var props map[string]string + if r.Header.Get("Content-Type") == "application/json" { + props = model.MapFromJson(r.Body) + } else { + props = model.MapFromJson(strings.NewReader(r.FormValue("payload"))) + } text := props["text"] if len(text) == 0 { -- cgit v1.2.3-1-g7c22