diff --git a/dashboard/src/models/AppstoreModel.js b/dashboard/src/models/AppstoreModel.js index 3f959a056..93a131847 100644 --- a/dashboard/src/models/AppstoreModel.js +++ b/dashboard/src/models/AppstoreModel.js @@ -7,37 +7,29 @@ function create() { return { async list() { - let error, result; + let result; try { result = await fetcher.get(`${API_ORIGIN}/api/v1/appstore/apps`, { access_token: accessToken }); } catch (e) { - error = e; + return [e]; } - if (error || result.status !== 200) { - console.error('Failed to list apps.', error || result.status); - return []; - } - - return result.body.apps; + if (result.status !== 200) return [result]; + return [null, result.body.apps]; }, async get(id, version = '') { let url = `${API_ORIGIN}/api/v1/appstore/apps/${id}`; if (version && version !== 'latest') url += `/versions/${version}`; - let error, result; + let result; try { result = await fetcher.get(url, { access_token: accessToken }); } catch (e) { - error = e; + return [e]; } - if (error || result.status !== 200) { - console.error('Failed to get app.', error || result.status); - return null; - } - - return result.body; + if (result.status !== 200) return [result]; + return [null, result.body]; }, async getSubscription() { let error, result; diff --git a/dashboard/src/views/AppstoreView.vue b/dashboard/src/views/AppstoreView.vue index 17577f139..8a9f641e1 100644 --- a/dashboard/src/views/AppstoreView.vue +++ b/dashboard/src/views/AppstoreView.vue @@ -53,8 +53,25 @@ function onInstall(app) { appInstallDialog.value.open(app); } +async function getAppList() { + const [error, result] = await appstoreModel.list(); + if (error) return console.error(error); + + apps.value = result; +} + +async function getApp(id, version = '') { + const [error, result] = await appstoreModel.get(id, version); + if (error) { + console.error(error); + return null; + } + + return result; +} + onMounted(async () => { - apps.value = await appstoreModel.list(); + await getAppList(); ready.value = true; const query = window.location.hash.slice('#/appstore/'.length); @@ -62,7 +79,7 @@ onMounted(async () => { const appId = query.split('?')[0]; const version = query.slice(query.indexOf('version=')+'version='.length); - const app = await appstoreModel.get(appId, version); + const app = await getApp(appId, version); if (app) { appInstallDialog.value.open(app); } else { @@ -72,7 +89,7 @@ onMounted(async () => { searchInput.value.$el.focus(); } - proxyApp.value = await appstoreModel.get(PROXY_APP_ID); + proxyApp.value = await getApp(PROXY_APP_ID); });