From 6fd9b6de71b037acbd096bfd6555d6c027f81b4d Mon Sep 17 00:00:00 2001 From: Michael Kochell <6913320+mickmister@users.noreply.github.com> Date: Wed, 24 Mar 2021 17:06:51 -0400 Subject: [PATCH] [MM-33989] Show bindings in all threads and post menus (#5232) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Apps bindings support (#5012) * Add redux related information * Add binding loading on channel refresh * Add channel header and post option bindings * Fix test * Minor fixes * Fix snapshots * Handle errors and show bindings only on main channel * Update Expand Levels keys and values to match latest changes * Add NAVIGATE call response handling. * Add more isolation to apps related code * Add defaults to send ephemeral * Update variable naming * Rename shouldProcessApps by a more meaningful appsEnabled * Embedded forms (#5169) * Add redux related information * Add binding loading on channel refresh * Add channel header and post option bindings * Fix test * Minor fixes * Fix snapshots * Handle errors and show bindings only on main channel * Update Expand Levels keys and values to match latest changes * Add NAVIGATE call response handling. * Add more isolation to apps related code * Add Embedded Forms * Fix snapshots * Add Embedded Forms * Improve naming, change the root element to be a binding and improve binding handling * Get post down on the buttons, remove unneeded variables and minor fixes from the review * Allow undefined bindings to fillBindingsInformation and add logging for error. * Address review feedback * Add App Forms (#5177) * Add App Forms * Address feedback and self review * Add dynamic select * Fixes and improvements * Add the ability to refresh on submit. * Use AppFormValue instead of redoing the type * Address feedback * [MM-31508] Rename URL to Path in Call (#5186) * Add user agent to call context (#5193) * Remove unneeded state reference (#5196) * Change user agent query on fetch bindings (#5201) * Add refresh websocket event to refetch bindings (#5194) * Add refresh websocket event to refetch bindings * Add missing changes * Declare socket event constant and separate the handler to a different function * Add binding validation on binding fetch (#5200) * Apps commands (#5107) * Add redux related information * Add binding loading on channel refresh * Add channel header and post option bindings * Fix test * Minor fixes * Fix snapshots * apps modals draft * Handle errors and show bindings only on main channel * Update Expand Levels keys and values to match latest changes * Add NAVIGATE call response handling. * Add more isolation to apps related code * reuse command parser throughout slash_suggestion component's lifecycle * fix prop and lint * using alert to show error message. need another way * duplicate import * types * types * types * rename file * copy webapp parser and test * dependencies moved. tests pass * move app command parser into its own folder * converted to typescript, all tests are passing * automated and manual tests work * lint * lint * remove fall throughs with blocks * types * doAppCall type * extract displayError to deps file * test types * lint * fix tests * unused import * PR feedback * fix imports and show errors * types * remove execute suggestion for mobile * watch feature flag * fix tests * change form text arugment behavior to show user input and not hint * return call response error in doAppCall * update tests to remove hint from text field suggestions * lint * use new base command structure * fix tests * wrap appsEnabled * typescript actions/command.ts * update app constants * PR feedback * fix error handling from doAppCall action * Use App CallRequest structure (#5212) * error handling * move test files * remove unused import Co-authored-by: Daniel Espino García * Add feature flag (#5207) * Add feature flag * Simplify return * Add localization, call validation and use call type on subpath (#5221) * Add localization, call validation and use call type on subpath * Add more localization to the parser and bring fixes from webapp * Fix ephemerals and channel header / post options crashes * fix app command parser deps and alert messages * Improve suggestion handling * Fix test * Fix lint * Return errors as error * Address PR feedback * return error property * fix error string wordings Co-authored-by: Michael Kochell <6913320+mickmister@users.noreply.github.com> * show bindings in threads and all post menus * unused import * fallback on post id in case this is the root post * fix ephemeral reply for modal submissions * fix merge typo Co-authored-by: Daniel Espino García Co-authored-by: Ben Schumacher --- app/screens/apps_form/apps_form_container.tsx | 2 +- app/screens/post_options/bindings/bindings.tsx | 2 +- app/screens/post_options/post_options.js | 4 ---- 3 files changed, 2 insertions(+), 6 deletions(-) diff --git a/app/screens/apps_form/apps_form_container.tsx b/app/screens/apps_form/apps_form_container.tsx index 97dd76766..4da480613 100644 --- a/app/screens/apps_form/apps_form_container.tsx +++ b/app/screens/apps_form/apps_form_container.tsx @@ -81,7 +81,7 @@ export default class AppsFormContainer extends PureComponent { switch (callResp.type) { case AppCallResponseTypes.OK: if (callResp.markdown) { - this.props.actions.sendEphemeralPost(callResp.markdown); + this.props.actions.sendEphemeralPost(callResp.markdown, call.context.channel_id, call.context.root_id || call.context.post_id); } break; case AppCallResponseTypes.FORM: diff --git a/app/screens/post_options/bindings/bindings.tsx b/app/screens/post_options/bindings/bindings.tsx index 63a4ca090..6bb9f1fe1 100644 --- a/app/screens/post_options/bindings/bindings.tsx +++ b/app/screens/post_options/bindings/bindings.tsx @@ -118,7 +118,7 @@ class Option extends React.PureComponent { } const callResp = (res as {data: AppCallResponse}).data; - const ephemeral = (message: string) => sendEphemeralPost(message, post.channel_id, post.root_id); + const ephemeral = (message: string) => sendEphemeralPost(message, post.channel_id, post.root_id || post.id); switch (callResp.type) { case AppCallResponseTypes.OK: if (callResp.markdown) { diff --git a/app/screens/post_options/post_options.js b/app/screens/post_options/post_options.js index c83021d95..4da5fa9b4 100644 --- a/app/screens/post_options/post_options.js +++ b/app/screens/post_options/post_options.js @@ -237,10 +237,6 @@ export default class PostOptions extends PureComponent { }; getAppsOptions = () => { - if (!this.props.showAppOptions) { - return null; - } - const {post} = this.props; return (