Merge pull request #19089 from nextcloud/backport/18929/enh/sidebar/promise

[stable18] Allow to await the sidebar
This commit is contained in:
Roeland Jago Douma 2020-02-05 21:08:32 +01:00 committed by GitHub
commit 9fd015353c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 59 additions and 63 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

@ -75,25 +75,6 @@ export default class Sidebar {
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
*

View file

@ -51,10 +51,11 @@ window.addEventListener('DOMContentLoaded', () => {
}
// Init vue app
const AppSidebar = new Vue({
// eslint-disable-next-line vue/match-component-file-name
const View = Vue.extend(SidebarView)
const AppSidebar = new View({
name: 'SidebarRoot',
render: h => h(SidebarView),
})
AppSidebar.$mount('#app-sidebar')
window.OCA.Files.Sidebar.open = AppSidebar.open
window.OCA.Files.Sidebar.close = AppSidebar.close
})

View file

@ -26,7 +26,7 @@
ref="sidebar"
v-bind="appSidebar"
:force-menu="true"
@close="onClose"
@close="close"
@update:active="setActiveTab"
@update:starred="toggleStarred"
@[defaultActionListener].stop.prevent="onDefaultAction">
@ -238,35 +238,6 @@ export default {
isSystemTagsEnabled() {
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)
}
}
},
},
@ -280,10 +251,6 @@ export default {
canDisplay(tab) {
return tab.isEnabled(this.fileInfo)
},
onClose() {
this.resetData()
OCA.Files.Sidebar.close()
},
resetData() {
this.error = null
this.fileInfo = null
@ -406,7 +373,54 @@ export default {
if (OCA.SystemTags && OCA.SystemTags.View) {
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>