dashboard/utils/install-redirect.js

51 lines
1.5 KiB
JavaScript

import { REPO_TYPE, REPO, CHART, VERSION } from '@/config/query-params';
export default function(product, chartName, defaultResourceOrRoute) {
return async function middleware({ redirect, store } ) {
const cluster = store.getters['currentCluster']?.id || 'local';
if ( store.getters['type-map/isProductActive'](product) ) {
// If the product is installed and there's a default resource, redirect there
if ( defaultResourceOrRoute ) {
if ( typeof defaultResourceOrRoute === 'object' ) {
return redirect(defaultResourceOrRoute);
}
return redirect({
name: 'c-cluster-product-resource',
params: {
cluster,
product,
resource: defaultResourceOrRoute
},
});
}
// Otherwise just let the middleware pass through
} else {
// The product is not installed, redirect to the details chart
await store.dispatch('catalog/load');
const chart = store.getters['catalog/chart']({ chartName });
if ( chart ) {
return redirect({
name: 'c-cluster-apps-charts-chart',
params: { cluster },
query: {
[REPO_TYPE]: chart.repoType,
[REPO]: chart.repoName,
[CHART]: chart.chartName,
[VERSION]: chart.versions[0].version
},
});
} else {
// The chart's not available
store.dispatch('loadingError', `Chart not found for ${ product }`);
}
}
};
}