diff --git a/dashboard/src/Index.vue b/dashboard/src/Index.vue index a5a17d4df..48766e1ce 100644 --- a/dashboard/src/Index.vue +++ b/dashboard/src/Index.vue @@ -228,10 +228,18 @@ async function refreshProfile() { profile.value = result; } +async function refreshConfigAndFeatures() { + const [error, result] = await dashboardModel.config(); + if (error) return console.error(error); + config.value = result; + features.value = result.features; +} + provide('subscriptionRequiredDialog', subscriptionRequiredDialog); provide('features', features); provide('profile', profile); provide('refreshProfile', refreshProfile); +provide('refreshFeatures', refreshConfigAndFeatures); onMounted(async () => { let [error, result] = await provisionModel.status(); @@ -253,10 +261,7 @@ onMounted(async () => { // ensure language from profile if set if (profile.value.language) await setLanguage(profile.value.language, true); - [error, result] = await dashboardModel.config(); - if (error) return console.error(error); - config.value = result; - features.value = result.features; + await refreshConfigAndFeatures(); avatarUrl.value = `https://${config.value.adminFqdn}/api/v1/cloudron/avatar`; if (document.querySelector('link[rel="icon"]')) document.querySelector('link[rel="icon"]').href = `${API_ORIGIN}/api/v1/cloudron/avatar?ts=${Date.now()}`; diff --git a/dashboard/src/views/CloudronAccountView.vue b/dashboard/src/views/CloudronAccountView.vue index f4cc9db8d..19a1b92e4 100644 --- a/dashboard/src/views/CloudronAccountView.vue +++ b/dashboard/src/views/CloudronAccountView.vue @@ -4,7 +4,7 @@ import { useI18n } from 'vue-i18n'; const i18n = useI18n(); const t = i18n.t; -import { ref, onMounted, onUnmounted, useTemplateRef, computed } from 'vue'; +import { ref, onMounted, onUnmounted, useTemplateRef, computed, inject } from 'vue'; import { Button, ProgressBar, InputDialog, ClipboardAction } from '@cloudron/pankow'; import { prettyLongDate } from '@cloudron/pankow/utils'; import Section from '../components/Section.vue'; @@ -26,6 +26,8 @@ const planName = ref(''); const cancelAt = ref(0); const status = ref(''); +const refreshFeatures = inject('refreshFeatures'); + let pollTimeoutId = 0; async function refresh() { @@ -44,6 +46,8 @@ async function refresh() { planName.value = result.plan.name; cancelAt.value = result.cancel_at; status.value = result.status; + + await refreshFeatures(); } const appstoreCloudronLink = computed(() => {