aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/api/server/ServerApi.js48
-rw-r--r--yarn.lock22
2 files changed, 37 insertions, 33 deletions
diff --git a/src/api/server/ServerApi.js b/src/api/server/ServerApi.js
index 8581beef7..8b0b7563c 100644
--- a/src/api/server/ServerApi.js
+++ b/src/api/server/ServerApi.js
@@ -447,6 +447,10 @@ export default class ServerApi {
447 447
448 // Helper 448 // Helper
449 async _mapServiceModels(services) { 449 async _mapServiceModels(services) {
450 const recipes = services.map(s => s.recipeId);
451
452 await this._bulkRecipeCheck(recipes);
453
450 return Promise.all(services 454 return Promise.all(services
451 .map(async service => await this._prepareServiceModel(service)) // eslint-disable-line 455 .map(async service => await this._prepareServiceModel(service)) // eslint-disable-line
452 ); 456 );
@@ -458,19 +462,8 @@ export default class ServerApi {
458 recipe = this.recipes.find(r => r.id === service.recipeId); 462 recipe = this.recipes.find(r => r.id === service.recipeId);
459 463
460 if (!recipe) { 464 if (!recipe) {
461 console.warn(`Recipe '${service.recipeId}' not installed, trying to fetch from server`); 465 console.warn(`Recipe ${service.recipeId} not loaded`);
462 466 return null;
463 await this.getRecipePackage(service.recipeId);
464
465 console.debug('Rerun ServerAPI::getInstalledRecipes');
466 await this.getInstalledRecipes();
467
468 recipe = this.recipes.find(r => r.id === service.recipeId);
469
470 if (!recipe) {
471 console.warn(`Could not load recipe ${service.recipeId}`);
472 return null;
473 }
474 } 467 }
475 468
476 return new ServiceModel(service, recipe); 469 return new ServiceModel(service, recipe);
@@ -480,6 +473,35 @@ export default class ServerApi {
480 } 473 }
481 } 474 }
482 475
476 async _bulkRecipeCheck(unfilteredRecipes) {
477 // Filter recipe duplicates as we don't need to download 3 Slack recipes
478 const recipes = unfilteredRecipes.filter((elem, pos, arr) => arr.indexOf(elem) === pos);
479
480 return Promise.all(recipes
481 .map(async (recipeId) => {
482 let recipe = this.recipes.find(r => r.id === recipeId);
483
484 if (!recipe) {
485 console.warn(`Recipe '${recipeId}' not installed, trying to fetch from server`);
486
487 await this.getRecipePackage(recipeId);
488
489 console.debug('Rerun ServerAPI::getInstalledRecipes');
490 await this.getInstalledRecipes();
491
492 recipe = this.recipes.find(r => r.id === recipeId);
493
494 if (!recipe) {
495 console.warn(`Could not load recipe ${recipeId}`);
496 return null;
497 }
498 }
499
500 return recipe;
501 }),
502 ).catch(err => console.error(err));
503 }
504
483 _mapRecipePreviewModel(recipes) { 505 _mapRecipePreviewModel(recipes) {
484 return recipes.map((recipe) => { 506 return recipes.map((recipe) => {
485 try { 507 try {
diff --git a/yarn.lock b/yarn.lock
index 719f6bf9e..4e596b555 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -1174,10 +1174,6 @@ bluebird-lst@^1.0.2, bluebird-lst@^1.0.3:
1174 dependencies: 1174 dependencies:
1175 bluebird "^3.5.0" 1175 bluebird "^3.5.0"
1176 1176
1177bluebird@^2.9.34:
1178 version "2.11.0"
1179 resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1"
1180
1181bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0: 1177bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0:
1182 version "3.5.0" 1178 version "3.5.0"
1183 resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c" 1179 resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.5.0.tgz#791420d7f551eea2897453a8a77653f96606d67c"
@@ -2656,7 +2652,7 @@ fstream-ignore@^1.0.5:
2656 inherits "2" 2652 inherits "2"
2657 minimatch "^3.0.0" 2653 minimatch "^3.0.0"
2658 2654
2659fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2, fstream@^1.0.8: 2655fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
2660 version "1.0.11" 2656 version "1.0.11"
2661 resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171" 2657 resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
2662 dependencies: 2658 dependencies:
@@ -4195,10 +4191,6 @@ moment@2.x.x, moment@^2.17.1:
4195 version "2.18.1" 4191 version "2.18.1"
4196 resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f" 4192 resolved "https://registry.yarnpkg.com/moment/-/moment-2.18.1.tgz#c36193dd3ce1c2eed2adb7c802dbbc77a81b1c0f"
4197 4193
4198mout@^0.11.0:
4199 version "0.11.1"
4200 resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99"
4201
4202ms@0.6.2: 4194ms@0.6.2:
4203 version "0.6.2" 4195 version "0.6.2"
4204 resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c" 4196 resolved "https://registry.yarnpkg.com/ms/-/ms-0.6.2.tgz#d89c2124c6fdc1353d65a8b77bf1aac4b193708c"
@@ -5724,17 +5716,7 @@ tar-pack@^3.4.0:
5724 tar "^2.2.1" 5716 tar "^2.2.1"
5725 uid-number "^0.0.6" 5717 uid-number "^0.0.6"
5726 5718
5727tar.gz@^1.0.5: 5719tar@^2.0.0, tar@^2.2.1:
5728 version "1.0.5"
5729 resolved "https://registry.yarnpkg.com/tar.gz/-/tar.gz-1.0.5.tgz#e1ada7e45ef2241b4b1ee58123c8f40b5d3c1bc4"
5730 dependencies:
5731 bluebird "^2.9.34"
5732 commander "^2.8.1"
5733 fstream "^1.0.8"
5734 mout "^0.11.0"
5735 tar "^2.1.1"
5736
5737tar@^2.0.0, tar@^2.1.1, tar@^2.2.1:
5738 version "2.2.1" 5720 version "2.2.1"
5739 resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1" 5721 resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
5740 dependencies: 5722 dependencies: