diff --git a/dashboard/src/components/app/Display.vue b/dashboard/src/components/app/Display.vue new file mode 100644 index 000000000..ebe2e9385 --- /dev/null +++ b/dashboard/src/components/app/Display.vue @@ -0,0 +1,164 @@ + + + diff --git a/dashboard/src/models/AppsModel.js b/dashboard/src/models/AppsModel.js index 6f3bd2878..77691053f 100644 --- a/dashboard/src/models/AppsModel.js +++ b/dashboard/src/models/AppsModel.js @@ -137,6 +137,7 @@ function create() { for (const app of result.body.apps) { app.ssoAuth = app.sso && (app.manifest.addons['ldap'] || app.manifest.addons['oidc'] || app.manifest.addons['proxyAuth']); // checking app.sso first ensures app.manifest.addons is not null app.type = app.manifest.id === PROXY_APP_ID ? APP_TYPES.PROXIED : APP_TYPES.APP; + app.iconUrl = app.iconUrl ? (origin + app.iconUrl + '?ts=' + (new Date(app.ts).getTime())) : null; // calculate full icon url with cache busting // only fetch if we have permissions and a taskId is set/active if (!app.taskId || (app.accessLevel !== 'operator' && app.accessLevel !== 'admin')) { @@ -174,6 +175,7 @@ function create() { app.ssoAuth = app.sso && (app.manifest.addons['ldap'] || app.manifest.addons['oidc'] || app.manifest.addons['proxyAuth']); // checking app.sso first ensures app.manifest.addons is not null app.type = app.manifest.id === PROXY_APP_ID ? APP_TYPES.PROXIED : APP_TYPES.APP; + app.iconUrl = app.iconUrl ? (origin + app.iconUrl + '?ts=' + (new Date(app.ts).getTime())) : null; // calculate full icon url with cache busting // only fetch if we have permissions and a taskId is set/active if (!app.taskId || (app.accessLevel !== 'operator' && app.accessLevel !== 'admin')) { diff --git a/dashboard/src/views/AppConfigureView.vue b/dashboard/src/views/AppConfigureView.vue index 4866517f7..a7f6aee43 100644 --- a/dashboard/src/views/AppConfigureView.vue +++ b/dashboard/src/views/AppConfigureView.vue @@ -9,6 +9,7 @@ const t = i18n.t; import { ref, onMounted, onBeforeUnmount, computed } from 'vue'; import { Button, ButtonGroup } from 'pankow'; import Info from '../components/app/Info.vue'; +import Display from '../components/app/Display.vue'; import Security from '../components/app/Security.vue'; import Cron from '../components/app/Cron.vue'; import Resources from '../components/app/Resources.vue'; @@ -140,7 +141,7 @@ onBeforeUnmount(() => {
- +

{{ app.label || app.fqdn }}
@@ -189,7 +190,7 @@ onBeforeUnmount(() => {
-
+
diff --git a/dashboard/src/views/AppsView.vue b/dashboard/src/views/AppsView.vue index 5ae2b14c8..3185286d0 100644 --- a/dashboard/src/views/AppsView.vue +++ b/dashboard/src/views/AppsView.vue @@ -155,7 +155,7 @@ async function refreshApps() { applink.installationState = ISTATES.INSTALLED; applink.runState = RSTATES.RUNNING; applink.health = HSTATES.HEALTHY; - applink.iconUrl = `/api/v1/applinks/${applink.id}/icon?access_token=${localStorage.token}&ts=${applink.ts}`; + applink.iconUrl = `${API_ORIGIN}/api/v1/applinks/${applink.id}/icon?access_token=${localStorage.token}&ts=${applink.ts}`; applink.accessLevel = profile.value.isAtLeastAdmin ? 'admin' : 'user'; result.push(applink); @@ -220,7 +220,7 @@ onUnmounted(() => { - +
{{ app.label || app.subdomain || app.fqdn }}
{{ installationStateLabel(app) }}
@@ -233,7 +233,7 @@ onUnmounted(() => {