Merge pull request #18929 from nextcloud/enh/sidebar/promise
Allow to await the sidebar
This commit is contained in:
commit
a6a224e7a1
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -75,25 +75,6 @@ export default class Sidebar {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Open the sidebar for the given file
|
|
||||||
*
|
|
||||||
* @memberof Sidebar
|
|
||||||
* @param {string} path the file path to load
|
|
||||||
*/
|
|
||||||
open(path) {
|
|
||||||
this.#state.file = path
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Close the sidebar
|
|
||||||
*
|
|
||||||
* @memberof Sidebar
|
|
||||||
*/
|
|
||||||
close() {
|
|
||||||
this.#state.file = ''
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return current opened file
|
* Return current opened file
|
||||||
*
|
*
|
||||||
|
|
|
@ -51,10 +51,11 @@ window.addEventListener('DOMContentLoaded', () => {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Init vue app
|
// Init vue app
|
||||||
const AppSidebar = new Vue({
|
const View = Vue.extend(SidebarView)
|
||||||
// eslint-disable-next-line vue/match-component-file-name
|
const AppSidebar = new View({
|
||||||
name: 'SidebarRoot',
|
name: 'SidebarRoot',
|
||||||
render: h => h(SidebarView),
|
|
||||||
})
|
})
|
||||||
AppSidebar.$mount('#app-sidebar')
|
AppSidebar.$mount('#app-sidebar')
|
||||||
|
window.OCA.Files.Sidebar.open = AppSidebar.open
|
||||||
|
window.OCA.Files.Sidebar.close = AppSidebar.close
|
||||||
})
|
})
|
||||||
|
|
|
@ -26,7 +26,7 @@
|
||||||
ref="sidebar"
|
ref="sidebar"
|
||||||
v-bind="appSidebar"
|
v-bind="appSidebar"
|
||||||
:force-menu="true"
|
:force-menu="true"
|
||||||
@close="onClose"
|
@close="close"
|
||||||
@update:active="setActiveTab"
|
@update:active="setActiveTab"
|
||||||
@update:starred="toggleStarred"
|
@update:starred="toggleStarred"
|
||||||
@[defaultActionListener].stop.prevent="onDefaultAction">
|
@[defaultActionListener].stop.prevent="onDefaultAction">
|
||||||
|
@ -237,35 +237,6 @@ export default {
|
||||||
|
|
||||||
isSystemTagsEnabled() {
|
isSystemTagsEnabled() {
|
||||||
return OCA && 'SystemTags' in OCA
|
return OCA && 'SystemTags' in OCA
|
||||||
}
|
|
||||||
},
|
|
||||||
|
|
||||||
watch: {
|
|
||||||
// update the sidebar data
|
|
||||||
async file(curr, prev) {
|
|
||||||
this.resetData()
|
|
||||||
if (curr && curr.trim() !== '') {
|
|
||||||
try {
|
|
||||||
this.fileInfo = await FileInfo(this.davPath)
|
|
||||||
// adding this as fallback because other apps expect it
|
|
||||||
this.fileInfo.dir = this.file.split('/').slice(0, -1).join('/')
|
|
||||||
|
|
||||||
// DEPRECATED legacy views
|
|
||||||
// TODO: remove
|
|
||||||
this.views.forEach(view => {
|
|
||||||
view.setFileInfo(this.fileInfo)
|
|
||||||
})
|
|
||||||
|
|
||||||
this.$nextTick(() => {
|
|
||||||
if (this.$refs.sidebar) {
|
|
||||||
this.$refs.sidebar.updateTabs()
|
|
||||||
}
|
|
||||||
})
|
|
||||||
} catch (error) {
|
|
||||||
this.error = t('files', 'Error while loading the file data')
|
|
||||||
console.error('Error while loading the file data', error)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -279,10 +250,6 @@ export default {
|
||||||
canDisplay(tab) {
|
canDisplay(tab) {
|
||||||
return tab.isEnabled(this.fileInfo)
|
return tab.isEnabled(this.fileInfo)
|
||||||
},
|
},
|
||||||
onClose() {
|
|
||||||
this.resetData()
|
|
||||||
OCA.Files.Sidebar.close()
|
|
||||||
},
|
|
||||||
resetData() {
|
resetData() {
|
||||||
this.error = null
|
this.error = null
|
||||||
this.fileInfo = null
|
this.fileInfo = null
|
||||||
|
@ -405,7 +372,54 @@ export default {
|
||||||
if (OCA.SystemTags && OCA.SystemTags.View) {
|
if (OCA.SystemTags && OCA.SystemTags.View) {
|
||||||
OCA.SystemTags.View.toggle()
|
OCA.SystemTags.View.toggle()
|
||||||
}
|
}
|
||||||
}
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Open the sidebar for the given file
|
||||||
|
*
|
||||||
|
* @param {string} path the file path to load
|
||||||
|
* @returns {Promise}
|
||||||
|
* @throws {Error} loading failure
|
||||||
|
*/
|
||||||
|
async open(path) {
|
||||||
|
// update current opened file
|
||||||
|
this.Sidebar.file = path
|
||||||
|
|
||||||
|
// reset previous data
|
||||||
|
this.resetData()
|
||||||
|
if (path && path.trim() !== '') {
|
||||||
|
try {
|
||||||
|
this.fileInfo = await FileInfo(this.davPath)
|
||||||
|
// adding this as fallback because other apps expect it
|
||||||
|
this.fileInfo.dir = this.file.split('/').slice(0, -1).join('/')
|
||||||
|
|
||||||
|
// DEPRECATED legacy views
|
||||||
|
// TODO: remove
|
||||||
|
this.views.forEach(view => {
|
||||||
|
view.setFileInfo(this.fileInfo)
|
||||||
|
})
|
||||||
|
|
||||||
|
this.$nextTick(() => {
|
||||||
|
if (this.$refs.sidebar) {
|
||||||
|
this.$refs.sidebar.updateTabs()
|
||||||
|
}
|
||||||
|
})
|
||||||
|
} catch (error) {
|
||||||
|
this.error = t('files', 'Error while loading the file data')
|
||||||
|
console.error('Error while loading the file data', error)
|
||||||
|
|
||||||
|
throw new Error(error)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Close the sidebar
|
||||||
|
*/
|
||||||
|
close() {
|
||||||
|
this.Sidebar.file = ''
|
||||||
|
this.resetData()
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
Loading…
Reference in New Issue