diff options
-rw-r--r-- | src/api/server/ServerApi.js | 48 | ||||
-rw-r--r-- | yarn.lock | 22 |
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 { |
@@ -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 | ||
1177 | bluebird@^2.9.34: | ||
1178 | version "2.11.0" | ||
1179 | resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-2.11.0.tgz#534b9033c022c9579c56ba3b3e5a5caafbb650e1" | ||
1180 | |||
1181 | bluebird@^3.1.1, bluebird@^3.4.7, bluebird@^3.5.0: | 1177 | bluebird@^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 | ||
2659 | fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2, fstream@^1.0.8: | 2655 | fstream@^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 | ||
4198 | mout@^0.11.0: | ||
4199 | version "0.11.1" | ||
4200 | resolved "https://registry.yarnpkg.com/mout/-/mout-0.11.1.tgz#ba3611df5f0e5b1ffbfd01166b8f02d1f5fa2b99" | ||
4201 | |||
4202 | ms@0.6.2: | 4194 | ms@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 | ||
5727 | tar.gz@^1.0.5: | 5719 | tar@^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 | |||
5737 | tar@^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: |