diff --git a/changelog/unreleased/bugfix-catch-router-view-names b/changelog/unreleased/bugfix-catch-router-view-names new file mode 100644 index 00000000000..0081ca64a3a --- /dev/null +++ b/changelog/unreleased/bugfix-catch-router-view-names @@ -0,0 +1,5 @@ +Bugfix: App compatibility + +We've made sure that apps that were not made compatible with ownCloud Web 5.0.0 don't run into a non-rendered state. + +https://github.com/owncloud/web/pull/6439 diff --git a/packages/web-runtime/src/layouts/Application.vue b/packages/web-runtime/src/layouts/Application.vue index b2b5014f912..59b4ec4f2aa 100644 --- a/packages/web-runtime/src/layouts/Application.vue +++ b/packages/web-runtime/src/layouts/Application.vue @@ -7,7 +7,12 @@
- +
@@ -18,7 +23,8 @@ import { mapActions, mapGetters } from 'vuex' import TopBar from '../components/Topbar/TopBar.vue' import MessageBar from '../components/MessageBar.vue' import SidebarNav from '../components/SidebarNav/SidebarNav.vue' -import { useActiveApp } from 'web-pkg/src/composables' +import { useActiveApp, useRoute } from 'web-pkg/src/composables' +import { watch } from '@vue/composition-api' export default { components: { @@ -27,6 +33,25 @@ export default { SidebarNav }, setup() { + // FIXME: we can convert to a single router-view without name (thus without the loop) and without this watcher when we release v6.0.0 + watch( + useRoute(), + (route) => { + if (route.matched.length) { + route.matched.forEach((match) => { + const keys = Object.keys(match.components).filter((key) => key !== 'default') + if (keys.length) { + console.warn( + `named components are deprecated, use "default" instead of "${keys.join( + ', ' + )}" on route ${route.name}` + ) + } + }) + } + }, + { immediate: true } + ) return { activeApp: useActiveApp() }