Skip to content

Commit f7e2c37

Browse files
frontend: use extensionsv2 when possible
1 parent 1110305 commit f7e2c37

File tree

5 files changed

+37
-3
lines changed

5 files changed

+37
-3
lines changed

core/frontend/src/App.vue

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -189,9 +189,10 @@
189189

190190
<v-list-item
191191
v-else
192-
:to="menu.new_page ? null : menu.route"
192+
:to="menu.new_page || menu.disabled ? null : menu.route"
193193
:target="menu.new_page ? '_blank' : '_self'"
194-
:href="menu.extension ? menu.route : undefined"
194+
:href="menu.extension && !menu.disabled ? menu.route : undefined"
195+
:disabled="menu.disabled"
195196
>
196197
<template #default>
197198
<v-list-item-icon style="min-width:28px;">
@@ -235,7 +236,27 @@
235236
</div>
236237
</v-theme-provider>
237238
<v-theme-provider
238-
v-if="menu.extension"
239+
v-if="menu.disabled"
240+
dark
241+
>
242+
<div
243+
v-tooltip="'This feature is not accessible'"
244+
class="extension-marker ma-0"
245+
>
246+
<v-avatar
247+
class="ma-0"
248+
color="error"
249+
size="15"
250+
>
251+
<v-icon
252+
size="12"
253+
v-text="'mdi-cloud-off'"
254+
/>
255+
</v-avatar>
256+
</div>
257+
</v-theme-provider>
258+
<v-theme-provider
259+
v-else-if="menu.extension"
239260
dark
240261
>
241262
<div
@@ -443,6 +464,9 @@ export default Vue.extend({
443464
build_clicks: 0,
444465
}),
445466
computed: {
467+
isBehindWebProxy(): boolean {
468+
return window.location.host.endsWith('.cloud')
469+
},
446470
topWidgetsName(): string[] {
447471
return this.widgets.map((item) => item.name)
448472
},
@@ -485,6 +509,7 @@ export default Vue.extend({
485509
advanced: false,
486510
text: service.metadata?.description ?? 'Service text',
487511
extension: true,
512+
disabled: !service.metadata?.works_in_relative_paths,
488513
}
489514
})
490515
@@ -697,6 +722,9 @@ export default Vue.extend({
697722
const base_url = window.location.origin.split(':').slice(0, 2).join(':')
698723
return `${base_url}:${service.port}`
699724
}
725+
if (service.metadata?.works_in_relative_paths) {
726+
return `/extensionv2/${service.metadata.sanitized_name}/`
727+
}
700728
let address = `/extension/${service?.metadata?.sanitized_name}`
701729
if (service?.metadata?.new_page) {
702730
address += '?full_page=true'

core/frontend/src/menus.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ export interface menuItem {
137137
new_page?: string, // The address will open in a new page
138138
route?: string, // The option routes to a different address
139139
submenus?: menuItem[], // Menus that the main option provide
140+
disabled?: boolean, // The option is disabled
140141
}
141142

142143
export default menus

core/frontend/src/types/helper.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ export interface ServiceMetadata {
1111
sanitized_name?: string
1212
extra_query?: string
1313
avoid_iframes?: boolean
14+
works_in_relative_paths?: boolean
1415
}
1516

1617
export interface Service {

core/frontend/vite.config.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ export default defineConfig(({ command, mode }) => {
9595
'^/docker': {
9696
target: SERVER_ADDRESS,
9797
},
98+
'^/extensionv2': {
99+
target: SERVER_ADDRESS,
100+
},
98101
'^/file-browser': {
99102
target: SERVER_ADDRESS,
100103
},

core/services/helper/main.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ class ServiceMetadata(BaseModel):
105105
avoid_iframes: Optional[bool]
106106
api: str
107107
sanitized_name: Optional[str]
108+
works_in_relative_paths: Optional[bool]
108109

109110

110111
class ServiceInfo(BaseModel):

0 commit comments

Comments
 (0)