Files
ThreadNet-Web/src/components/views/elements/AppPermission.js
T

76 lines
2.3 KiB
JavaScript
Raw Normal View History

2017-07-26 11:28:43 +01:00
import React from 'react';
import PropTypes from 'prop-types';
2017-07-26 16:47:58 +01:00
import url from 'url';
2017-07-28 16:39:18 +01:00
import { _t } from '../../../languageHandler';
2017-07-26 11:28:43 +01:00
export default class AppPermission extends React.Component {
constructor(props) {
super(props);
2017-07-28 10:18:06 +01:00
const curlBase = this.getCurlBase();
2017-07-28 16:36:06 +01:00
this.state = { curlBase: curlBase};
2017-07-26 11:28:43 +01:00
}
2017-07-28 10:18:06 +01:00
// Return string representation of content URL without query parameters
getCurlBase() {
2017-07-26 16:47:58 +01:00
const wurl = url.parse(this.props.url);
let curl;
2017-07-28 10:01:58 +01:00
let curlString;
2017-07-26 16:47:58 +01:00
const searchParams = new URLSearchParams(wurl.search);
2017-07-28 10:01:58 +01:00
if(this.isScalarWurl(wurl) && searchParams && searchParams.get('url')) {
2017-07-28 10:01:58 +01:00
curl = url.parse(searchParams.get('url'));
if(curl) {
curl.search = curl.query = "";
curlString = curl.format();
}
2017-07-26 11:28:43 +01:00
}
if (!curl && wurl) {
wurl.search = wurl.query = "";
2017-07-28 10:01:58 +01:00
curlString = wurl.format();
}
2017-07-28 10:01:58 +01:00
return curlString;
2017-07-26 11:28:43 +01:00
}
isScalarWurl(wurl) {
if(wurl && wurl.hostname && (
wurl.hostname === 'scalar.vector.im' ||
wurl.hostname === 'scalar-staging.riot.im' ||
2017-08-02 14:35:14 +01:00
wurl.hostname === 'scalar-develop.riot.im' ||
wurl.hostname === 'demo.riot.im' ||
wurl.hostname === 'localhost'
)) {
return true;
}
return false;
}
2017-07-26 11:28:43 +01:00
render() {
return (
2017-07-26 16:47:58 +01:00
<div className='mx_AppPermissionWarning'>
<div className='mx_AppPermissionWarningImage'>
2017-07-28 16:39:18 +01:00
<img src='img/warning.svg' alt={_t('Warning!')}/>
2017-07-26 16:47:58 +01:00
</div>
<div className='mx_AppPermissionWarningText'>
2017-07-28 10:18:06 +01:00
<span className='mx_AppPermissionWarningTextLabel'>Do you want to load widget from URL:</span> <span className='mx_AppPermissionWarningTextURL'>{this.state.curlBase}</span>
2017-07-26 16:47:58 +01:00
</div>
2017-07-26 11:28:43 +01:00
<input
2017-07-26 16:47:58 +01:00
className='mx_AppPermissionButton'
2017-07-26 11:28:43 +01:00
type='button'
2017-07-28 16:42:07 +01:00
value={_t('Allow')}
2017-07-26 11:28:43 +01:00
onClick={this.props.onPermissionGranted}
/>
</div>
);
}
}
AppPermission.propTypes = {
url: PropTypes.string.isRequired,
onPermissionGranted: PropTypes.func.isRequired,
};
2017-07-28 16:23:38 +01:00
AppPermission.defaultProps = {
2017-07-26 11:28:43 +01:00
onPermissionGranted: function() {},
};