[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
pull/13521/head
Marcos Spessatto Defendi 6 years ago committed by Rodrigo Nascimento
parent 9672b4ff25
commit 3e28428f5c
  1. 57
      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 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(); const id = instance.id.get();
let remoteApps;
return Promise.all([ let localApp;
fetch(`${ HOST }/v1/apps/${ id }?version=${ Info.marketplaceApiVersion }`).then((data) => data.json()), try {
APIClient.get('apps/').then((result) => result.apps.filter((app) => app.id === id)), localApp = (await APIClient.get('apps/')).apps.filter((app) => app.id === id)[0];
]).then(([remoteApps, [localApp]]) => { 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) => { remoteApps = remoteApps.sort((a, b) => {
if (semver.gt(a.version, b.version)) { if (semver.gt(a.version, b.version)) {
return -1; return -1;
@ -34,32 +42,29 @@ function getApps(instance) {
} }
return 0; return 0;
}); });
remoteApp = remoteApps[0];
}
const remoteApp = remoteApps[0]; if (localApp) {
if (localApp) { localApp.installed = true;
localApp.installed = true; if (remoteApp) {
if (remoteApp) { localApp.categories = remoteApp.categories;
localApp.categories = remoteApp.categories; if (semver.gt(remoteApp.version, localApp.version)) {
if (semver.gt(remoteApp.version, localApp.version)) { localApp.newVersion = remoteApp.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_STATUS_CHANGE, instance.onStatusChanged);
Apps.getWsListener().unregisterListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated); Apps.getWsListener().unregisterListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated);
Apps.getWsListener().registerListener(AppEvents.APP_STATUS_CHANGE, instance.onStatusChanged); Apps.getWsListener().registerListener(AppEvents.APP_STATUS_CHANGE, instance.onStatusChanged);
Apps.getWsListener().registerListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated); Apps.getWsListener().registerListener(AppEvents.APP_SETTING_UPDATED, instance.onSettingUpdated);
} }
instance.app.set(localApp || remoteApp); instance.app.set(localApp || remoteApp);
instance.ready.set(true); instance.ready.set(true);
}).catch((e) => {
instance.hasError.set(true);
instance.theError.set(e.message);
});
} }
Template.appManage.onCreated(function() { Template.appManage.onCreated(function() {

Loading…
Cancel
Save