From ebe36cdc00abf50fa16c9190bd29000fb8052349 Mon Sep 17 00:00:00 2001 From: Djorkaeff Alexandre Date: Tue, 11 Feb 2020 13:00:58 -0300 Subject: [PATCH] [FIX] Unhandled action on UIKit (#1703) --- app/containers/UIKit/utils.js | 34 ++++++++++++------- app/lib/methods/actions.js | 64 ++++++++++++++++------------------- 2 files changed, 51 insertions(+), 47 deletions(-) diff --git a/app/containers/UIKit/utils.js b/app/containers/UIKit/utils.js index 172a0d80..80b23399 100644 --- a/app/containers/UIKit/utils.js +++ b/app/containers/UIKit/utils.js @@ -29,13 +29,17 @@ export const useBlockContext = ({ loading, setLoading, error, value, language }, async({ value }) => { setLoading(true); - await action({ - blockId, - appId: appId || appIdFromContext, - actionId, - value, - viewId - }); + try { + await action({ + blockId, + appId: appId || appIdFromContext, + actionId, + value, + viewId + }); + } catch (e) { + // do nothing + } setLoading(false); }]; } @@ -44,12 +48,16 @@ export const useBlockContext = ({ loading, setLoading, value, error, language }, async({ value }) => { setLoading(true); - await state({ - blockId, - appId, - actionId, - value - }); + try { + await state({ + blockId, + appId, + actionId, + value + }); + } catch (e) { + // do nothing + } setLoading(false); }]; }; diff --git a/app/lib/methods/actions.js b/app/lib/methods/actions.js index ce4e127f..4d35e915 100644 --- a/app/lib/methods/actions.js +++ b/app/lib/methods/actions.js @@ -1,8 +1,6 @@ import random from '../../utils/random'; import EventEmitter from '../../utils/events'; import Navigation from '../Navigation'; -import { showErrorAlert } from '../../utils/info'; -import I18n from '../../i18n'; const TRIGGER_TIMEOUT = 5000; @@ -112,43 +110,41 @@ export function triggerAction({ const { userId, authToken } = this.sdk.currentLogin; const { host } = this.sdk.client; - // we need to use fetch because this.sdk.post add /v1 to url - const result = await fetch(`${ host }/api/apps/ui.interaction/${ appId }/`, { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'X-Auth-Token': authToken, - 'X-User-Id': userId - }, - body: JSON.stringify({ - type, - actionId, - payload, - container, - mid, - rid, - triggerId, - viewId - }) - }); - try { - const { type: interactionType, ...data } = await result.json(); - handlePayloadUserInteraction(interactionType, data); + // we need to use fetch because this.sdk.post add /v1 to url + const result = await fetch(`${ host }/api/apps/ui.interaction/${ appId }/`, { + method: 'POST', + headers: { + 'Content-Type': 'application/json', + 'X-Auth-Token': authToken, + 'X-User-Id': userId + }, + body: JSON.stringify({ + type, + actionId, + payload, + container, + mid, + rid, + triggerId, + viewId + }) + }); - if (data.success) { - return resolve(); + try { + const { type: interactionType, ...data } = await result.json(); + return resolve(handlePayloadUserInteraction(interactionType, data)); + } catch (e) { + // modal.close has no body, so result.json will fail + // but it returns ok status + if (result.ok) { + return resolve(); + } } - - return reject(); } catch (e) { - if (result.status !== 200) { - showErrorAlert(I18n.t('Oops')); - return reject(); - } + // do nothing } - - return resolve(); + return reject(); }); }