Fix legacy tabs

Signed-off-by: John Molakvoæ (skjnldsv) <skjnldsv@protonmail.com>
This commit is contained in:
John Molakvoæ (skjnldsv) 2020-01-29 16:31:47 +01:00
parent cd6a193793
commit b476659ac8
No known key found for this signature in database
GPG Key ID: 60C25B8C072916CF
7 changed files with 24 additions and 23 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -3658,10 +3658,9 @@
*/ */
registerTabView: function(tabView) { registerTabView: function(tabView) {
console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.'); console.warn('registerTabView is deprecated! It will be removed in nextcloud 20.');
const name = tabView.getLabel()
const enabled = tabView.canDisplay || undefined const enabled = tabView.canDisplay || undefined
if (name) { if (tabView.id) {
OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab(name, tabView, enabled, true)) OCA.Files.Sidebar.registerTab(new OCA.Files.Sidebar.Tab(tabView.id, tabView, enabled, true))
} }
}, },

View File

@ -21,7 +21,9 @@
--> -->
<template> <template>
<AppSidebarTab :icon="icon" <AppSidebarTab
:id="id"
:icon="icon"
:name="name" :name="name"
:active-tab="activeTab" /> :active-tab="activeTab" />
</template> </template>
@ -38,7 +40,7 @@ export default {
type: Object, type: Object,
required: true, required: true,
}, },
name: { id: {
type: String, type: String,
required: true, required: true,
}, },
@ -52,9 +54,8 @@ export default {
icon() { icon() {
return this.component.getIcon() return this.component.getIcon()
}, },
id() { name() {
// copied from AppSidebarTab return this.component.getLabel()
return this.name.toLowerCase().replace(/ /g, '-')
}, },
order() { order() {
return this.component.order return this.component.order

View File

@ -24,23 +24,23 @@ export default class Tab {
#component #component
#legacy #legacy
#name #id
#enabled #enabled
/** /**
* Create a new tab instance * Create a new tab instance
* *
* @param {string} name the name of this tab * @param {string} id the unique id of this tab
* @param {Object} component the vue component * @param {Object} component the vue component
* @param {Function} [enabled] function that returns if the tab should be shown or not * @param {Function} [enabled] function that returns if the tab should be shown or not
* @param {boolean} [legacy] is this a legacy tab * @param {boolean} [legacy] is this a legacy tab
*/ */
constructor(name, component, enabled = () => true, legacy) { constructor(id, component, enabled = () => true, legacy) {
if (typeof enabled !== 'function') { if (typeof enabled !== 'function') {
throw new Error('The enabled argument should be a function') throw new Error('The enabled argument should be a function')
} }
this.#name = name this.#id = id
this.#component = component this.#component = component
this.#enabled = enabled this.#enabled = enabled
this.#legacy = legacy === true this.#legacy = legacy === true
@ -51,8 +51,8 @@ export default class Tab {
} }
get name() { get id() {
return this.#name return this.#id
} }
get component() { get component() {

View File

@ -56,17 +56,17 @@ export default class Sidebar {
* @returns {Boolean} * @returns {Boolean}
*/ */
registerTab(tab) { registerTab(tab) {
const hasDuplicate = this.#state.tabs.findIndex(check => check.name === tab.name) > -1 const hasDuplicate = this.#state.tabs.findIndex(check => check.id === tab.id) > -1
if (!hasDuplicate) { if (!hasDuplicate) {
this.#state.tabs.push(tab) this.#state.tabs.push(tab)
return true return true
} }
console.error(`An tab with the same name ${tab.name} already exists`, tab) console.error(`An tab with the same id ${tab.id} already exists`, tab)
return false return false
} }
registerSecondaryView(view) { registerSecondaryView(view) {
const hasDuplicate = this.#state.views.findIndex(check => check.name === view.name) > -1 const hasDuplicate = this.#state.views.findIndex(check => check.id === view.id) > -1
if (!hasDuplicate) { if (!hasDuplicate) {
this.#state.views.push(view) this.#state.views.push(view)
return true return true

View File

@ -62,6 +62,7 @@
<component <component
:is="tabComponent(tab).is" :is="tabComponent(tab).is"
v-if="canDisplay(tab)" v-if="canDisplay(tab)"
:id="tab.id"
:key="tab.id" :key="tab.id"
:component="tabComponent(tab).component" :component="tabComponent(tab).component"
:name="tab.name" :name="tab.name"