May help with users who are man-in-the-middled and redirected to malicious websites. See: https://github.com/webtorrent/webtorrent-desktop/issues/1908
46 lines
1.4 KiB
JavaScript
46 lines
1.4 KiB
JavaScript
const React = require('react')
|
|
const { shell } = require('electron')
|
|
|
|
const ModalOKCancel = require('./modal-ok-cancel')
|
|
const { dispatcher } = require('../lib/dispatcher')
|
|
|
|
module.exports = class UnsupportedMediaModal extends React.Component {
|
|
render () {
|
|
const state = this.props.state
|
|
const err = state.modal.error
|
|
const message = (err && err.getMessage)
|
|
? err.getMessage()
|
|
: err
|
|
const onAction = state.modal.externalPlayerInstalled
|
|
? dispatcher('openExternalPlayer')
|
|
: () => this.onInstall()
|
|
const actionText = state.modal.externalPlayerInstalled
|
|
? 'PLAY IN ' + state.getExternalPlayerName().toUpperCase()
|
|
: 'INSTALL VLC'
|
|
const errorMessage = state.modal.externalPlayerNotFound
|
|
? 'Couldn\'t run external player. Please make sure it\'s installed.'
|
|
: ''
|
|
return (
|
|
<div>
|
|
<p><strong>Sorry, we can't play that file.</strong></p>
|
|
<p>{message}</p>
|
|
<ModalOKCancel
|
|
cancelText='CANCEL'
|
|
onCancel={dispatcher('backToList')}
|
|
okText={actionText}
|
|
onOK={onAction}
|
|
/>
|
|
<p className='error-text'>{errorMessage}</p>
|
|
</div>
|
|
)
|
|
}
|
|
|
|
onInstall () {
|
|
shell.openExternal('https://www.videolan.org/vlc/')
|
|
|
|
// TODO: dcposch send a dispatch rather than modifying state directly
|
|
const state = this.props.state
|
|
state.modal.externalPlayerInstalled = true // Assume they'll install it successfully
|
|
}
|
|
}
|