From 35da0dad93f6a2c0545170a4b4511f69748dcf1e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Thu, 21 Mar 2019 11:45:34 +0100 Subject: [PATCH 1/2] Allow registering aliases without components MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- src/models/videos.js | 1 - src/views/Viewer.vue | 53 +++++++++++++++++++++++++++++--------------- 2 files changed, 35 insertions(+), 19 deletions(-) diff --git a/src/models/videos.js b/src/models/videos.js index 3770b67a2..80ee4695e 100644 --- a/src/models/videos.js +++ b/src/models/videos.js @@ -30,7 +30,6 @@ export default { 'video/ogg', 'video/webm', 'video/mp4', - 'video/x-matroska', 'video/x-m4v', 'video/x-flv', 'video/quicktime' diff --git a/src/views/Viewer.vue b/src/views/Viewer.vue index 7071fc231..20b4775bc 100644 --- a/src/views/Viewer.vue +++ b/src/views/Viewer.vue @@ -206,9 +206,13 @@ export default { // store current position this.currentIndex = this.fileList.findIndex(file => file.name === fileName) + // get saved fileInfo fileInfo = this.fileList[this.currentIndex] + + // override mimetype if existing alias + mime = this.getAliasIfAny(mime) + if (this.components[mime]) { - mime = this.getAliasIfAny(mime) this.currentFile = { relativePath, path, @@ -219,9 +223,10 @@ export default { modal: this.components[mime], loaded: false } + this.updatePreviousNext() + } else { + console.error(`The following file could not be displayed because to view matches its mime type`, fileName, fileInfo) } - - this.updatePreviousNext() }, /** @@ -336,19 +341,13 @@ export default { return } - // checking valid handler component data - if (!handler.component || typeof handler.component !== 'object') { + // checking valid handler component data AND no alias (we can register alias without component) + if ((!handler.component || typeof handler.component !== 'object') && !handler.mimesAliases) { console.error(`The following handler doesn't have proper component`, handler) return } - handler.mimes.forEach(mime => { - // checking valid mime - if (this.components[mime]) { - console.error(`The following mime is already registered`, mime, handler) - return - } - + const register = ({ mime, handler }) => { // unregistered handler, let's go! OCA.Files.fileActions.registerAction({ name: 'view', @@ -369,19 +368,37 @@ export default { this.mimeGroups[handler.group].push(mime) } - if (handler.mimesAliases) { - Object.keys(handler.mimesAliases).forEach(mime => { - this.mimesAliases[mime] = handler.mimesAliases[mime] - }) - } - // set the handler as registered this.registeredHandlers.push(handler.id) + } + + handler.mimes.forEach(mime => { + // checking valid mime + if (this.components[mime]) { + console.error(`The following mime is already registered`, mime, handler) + return + } + + register({ mime, handler }) // register mime's component this.components[mime] = handler.component Vue.component(handler.component.name, handler.component) }) + + if (handler.mimesAliases) { + Object.keys(handler.mimesAliases).forEach(mime => { + // checking valid mime + if (this.components[mime]) { + console.error(`The following mime is already registered`, mime, handler) + return + } + + register({ mime, handler }) + + this.mimesAliases[mime] = handler.mimesAliases[mime] + }) + } }, getPath(fileInfo) { From e46a354822ba71a640aeaaaf6246af18064ac8a4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?John=20Molakvo=C3=A6=20=28skjnldsv=29?= Date: Thu, 21 Mar 2019 13:30:36 +0100 Subject: [PATCH 2/2] Fix mime groups and mimes list parsing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: John Molakvoæ (skjnldsv) --- src/views/Viewer.vue | 44 ++++++++++++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 16 deletions(-) diff --git a/src/views/Viewer.vue b/src/views/Viewer.vue index 20b4775bc..722d28419 100644 --- a/src/views/Viewer.vue +++ b/src/views/Viewer.vue @@ -198,6 +198,8 @@ export default { const group = this.mimeGroups[mime] const mimes = this.mimeGroups[group] + ? this.mimeGroups[group] + : [mime] // retrieve, sort and store file List const fileList = await FileList(OC.getCurrentUser().uid, fileInfo.dir, mimes) @@ -331,19 +333,25 @@ export default { // checking valid handler id if (!handler.id || handler.id.trim() === '' || typeof handler.id !== 'string') { - console.error(`The following handler doesn't have proper id`, handler) + console.error(`The following handler doesn't have a valid id`, handler) return } - // checking valid handler mime data - if (!handler.mimes || !Array.isArray(handler.mimes)) { - console.error(`The following handler doesn't have proper mime data`, handler) + // checking if no valid mimes data and no mimes Aliases + if (!(handler.mimes && Array.isArray(handler.mimes)) && !handler.mimesAliases) { + console.error(`The following handler doesn't have a valid mime array`, handler) return } + if (handler.mimesAliases && typeof handler.mimesAliases !== 'object') { + console.error(`The following handler doesn't have a valid mimesAliases object`, handler) + return + + } + // checking valid handler component data AND no alias (we can register alias without component) if ((!handler.component || typeof handler.component !== 'object') && !handler.mimesAliases) { - console.error(`The following handler doesn't have proper component`, handler) + console.error(`The following handler doesn't have a valid component`, handler) return } @@ -372,20 +380,24 @@ export default { this.registeredHandlers.push(handler.id) } - handler.mimes.forEach(mime => { - // checking valid mime - if (this.components[mime]) { - console.error(`The following mime is already registered`, mime, handler) - return - } + // parsing mimes registration + if (handler.mimes) { + handler.mimes.forEach(mime => { + // checking valid mime + if (this.components[mime]) { + console.error(`The following mime is already registered`, mime, handler) + return + } - register({ mime, handler }) + register({ mime, handler }) - // register mime's component - this.components[mime] = handler.component - Vue.component(handler.component.name, handler.component) - }) + // register mime's component + this.components[mime] = handler.component + Vue.component(handler.component.name, handler.component) + }) + } + // parsing aliases registration if (handler.mimesAliases) { Object.keys(handler.mimesAliases).forEach(mime => { // checking valid mime