From 3e28428f5c1cb52ee55463f5ff4d5d570ce3fb8a Mon Sep 17 00:00:00 2001 From: Marcos Spessatto Defendi Date: Sat, 2 Mar 2019 16:27:18 -0300 Subject: [PATCH] [FIX] Ability to activate an app installed by zip even offline (#13563) * ability to activate an app installed by zip even offline * Remove finally statement --- .../rocketchat-apps/client/admin/appManage.js | 57 ++++++++++--------- 1 file changed, 31 insertions(+), 26 deletions(-) diff --git a/packages/rocketchat-apps/client/admin/appManage.js b/packages/rocketchat-apps/client/admin/appManage.js index 1bd1f97ac9e..eb475371653 100644 --- a/packages/rocketchat-apps/client/admin/appManage.js +++ b/packages/rocketchat-apps/client/admin/appManage.js @@ -18,13 +18,21 @@ import semver from 'semver'; const HOST = 'https://marketplace.rocket.chat'; // TODO move this to inside RocketChat.API -function getApps(instance) { +async function getApps(instance) { const id = instance.id.get(); - - return Promise.all([ - fetch(`${ HOST }/v1/apps/${ id }?version=${ Info.marketplaceApiVersion }`).then((data) => data.json()), - APIClient.get('apps/').then((result) => result.apps.filter((app) => app.id === id)), - ]).then(([remoteApps, [localApp]]) => { + let remoteApps; + let localApp; + try { + localApp = (await APIClient.get('apps/')).apps.filter((app) => app.id === id)[0]; + remoteApps = await fetch(`${ HOST }/v1/apps/${ id }?version=${ Info.marketplaceApiVersion }`).then((data) => data.json()); + } catch (error) { + if (!localApp) { + instance.hasError.set(true); + instance.theError.set(error.message); + } + } + let remoteApp; + if (remoteApps && remoteApps.length) { remoteApps = remoteApps.sort((a, b) => { if (semver.gt(a.version, b.version)) { return -1; @@ -34,32 +42,29 @@ function getApps(instance) { } return 0; }); + remoteApp = remoteApps[0]; + } - const remoteApp = remoteApps[0]; - if (localApp) { - localApp.installed = true; - if (remoteApp) { - localApp.categories = remoteApp.categories; - if (semver.gt(remoteApp.version, localApp.version)) { - localApp.newVersion = remoteApp.version; - } + if (localApp) { + localApp.installed = true; + if (remoteApp) { + localApp.categories = remoteApp.categories; + if (semver.gt(remoteApp.version, localApp.version)) { + localApp.newVersion = remoteApp.version; } + } - instance.onSettingUpdated({ appId: id }); + instance.onSettingUpdated({ appId: id }); - Apps.getWsListener().unregisterListener(AppEvents.APP_STATUS_CHANGE, instance.onStatusChanged); - Apps.getWsListener().unregisterListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated); - Apps.getWsListener().registerListener(AppEvents.APP_STATUS_CHANGE, instance.onStatusChanged); - Apps.getWsListener().registerListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated); - } + Apps.getWsListener().unregisterListener(AppEvents.APP_STATUS_CHANGE, instance.onStatusChanged); + Apps.getWsListener().unregisterListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated); + Apps.getWsListener().registerListener(AppEvents.APP_STATUS_CHANGE, instance.onStatusChanged); + Apps.getWsListener().registerListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated); + } - instance.app.set(localApp || remoteApp); + instance.app.set(localApp || remoteApp); - instance.ready.set(true); - }).catch((e) => { - instance.hasError.set(true); - instance.theError.set(e.message); - }); + instance.ready.set(true); } Template.appManage.onCreated(function() {