viewer icon indicating copy to clipboard operation
viewer copied to clipboard

Opening an unsupported mime file freezes the UI

Open pludov opened this issue 2 years ago • 3 comments

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
			}

pludov avatar Mar 13 '23 23:03 pludov

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.

pushyajn01 avatar May 26 '23 04:05 pushyajn01

@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.

joshtrichards avatar Jul 02 '23 00:07 joshtrichards

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 ?

eldertek avatar Feb 14 '24 11:02 eldertek