Skip to content
Permalink
Browse files

fix(Recipes): Fix recipe install when directly accessing recipe

  • Loading branch information...
adlk committed Jun 12, 2019
1 parent 1075df8 commit eba50bc5a41b8492c0350b73936405eab1b8c453
Showing with 28 additions and 17 deletions.
  1. +27 −0 src/stores/RecipesStore.js
  2. +1 −17 src/stores/ServicesStore.js
@@ -20,6 +20,11 @@ export default class RecipesStore extends Store {
// Register action handlers
this.actions.recipe.install.listen(this._install.bind(this));
this.actions.recipe.update.listen(this._update.bind(this));

// Reactions
this.registerReactions([
this._checkIfRecipeIsInstalled.bind(this),
]);
}

setup() {
@@ -99,4 +104,26 @@ export default class RecipesStore extends Store {
syncUpdate(0);
}
}

async _checkIfRecipeIsInstalled() {
const { router } = this.stores;

const match = matchRoute('/settings/services/add/:id', router.location.pathname);
if (match) {
const recipeId = match.id;

if (!this.stores.recipes.isInstalled(recipeId)) {
router.push('/settings/recipes');
debug(`Recipe ${recipeId} is not installed, trying to install it`);

const recipe = await this.installRecipeRequest.execute(recipeId)._promise;
if (recipe) {
await this.allRecipesRequest.invalidate({ immediately: true })._promise;
router.push(`/settings/services/add/${recipeId}`);
} else {
router.push('/settings/recipes');
}
}
}
}
}
@@ -148,18 +148,7 @@ export default class ServicesStore extends Store {
}

async _showAddServiceInterface({ recipeId }) {
const recipesStore = this.stores.recipes;

if (recipesStore.isInstalled(recipeId)) {
debug(`Recipe ${recipeId} is installed`);
this._redirectToAddServiceRoute(recipeId);
} else {
debug(`Recipe ${recipeId} is not installed`);
// We access the RecipeStore action directly
// returns Promise instead of action
await this.stores.recipes._install({ recipeId });
this._redirectToAddServiceRoute(recipeId);
}
this.stores.router.push(`/settings/services/add/${recipeId}`);
}

// Actions
@@ -690,11 +679,6 @@ export default class ServicesStore extends Store {
}

// Helper
_redirectToAddServiceRoute(recipeId) {
const route = `/settings/services/add/${recipeId}`;
this.stores.router.push(route);
}

_initializeServiceRecipeInWebview(serviceId) {
const service = this.one(serviceId);

0 comments on commit eba50bc

Please sign in to comment.
You can’t perform that action at this time.