nextcloud / viewer

🖼 Simple file viewer with slideshow for media
GNU Affero General Public License v3.0
92 stars 53 forks source link

Opening an unsupported mime file freezes the UI #1579

Open pludov opened 1 year ago

pludov commented 1 year ago

Describe the bug

Opening an unsupported mime file from the file view freeze on the wait icon, with no error message displayed to the user

To Reproduce

Run the following in console while browsing files:

OCA.Viewer.open({path:'/path/to/unuspported-mime.type'})

The console reports:

Viewer.vue:450 TypeError: Cannot read properties of undefined (reading 'theme')
    at Viewer.vue:399:1
    at u (runtime.js:63:40)
    at Generator._invoke (runtime.js:294:22)
    at Generator.next (runtime.js:119:21)
    at Vm (Download.vue?b226:19:33)
    at i (Download.vue?b226:19:33)

Probable fix

Seems that in Viewer.vue - https://github.com/nextcloud/viewer/blame/22e47429df029eeb2f36e2361f49e59768dec725/src/views/Viewer.vue#L559 , the use of the handler variable should be swapped with its verification:

            this.theme = handler.theme ?? 'dark'               // Moving that after the if to bring back error message 
            // if we don't have a handler for this mime, abort
            if (!handler) {
                logger.error('The following file could not be displayed', { fileInfo })
                showError(t('viewer', 'There is no plugin available to display this file type'))
                this.close()
                return
            }
pushyajn01 commented 1 year ago

Hi, I am new to Open Source and I want to contribute to this project, so could you please assign this issue to me ? I am excited to work towards resolving it.

joshtrichards commented 1 year ago

@Pushyajain There's no need to get "assigned" it - if you have a proposed implementation submit it as PR from your own fork of the repository.

eldertek commented 6 months ago

Hello, having the same issue. Opening from my app using this code. With a filePath pointing to a file with a mimetype not supported. OCA.Viewer.open({path: filePath,});

Give me this error in console. Viewer.vue:639 Could not open file /LICENSE.md TypeError: Cannot read properties of undefined (reading 'theme') at o.openFileInfo (Viewer.vue:675:1) at o.openFile (Viewer.vue:632:1)

How can I deal with that from my app ?