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

Allow to await the sidebar
This commit is contained in:
John Molakvoæ 2020-01-22 14:44:32 +01:00 committed by GitHub
commit a6a224e7a1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 63 additions and 67 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">
@ -237,35 +237,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)
}
}
},
},
@ -279,10 +250,6 @@ export default {
canDisplay(tab) {
return tab.isEnabled(this.fileInfo)
},
onClose() {
this.resetData()
OCA.Files.Sidebar.close()
},
resetData() {
this.error = null
this.fileInfo = null
@ -405,7 +372,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>