aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/services/content/ServiceWebview.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/services/content/ServiceWebview.js')
-rw-r--r--src/components/services/content/ServiceWebview.js59
1 files changed, 39 insertions, 20 deletions
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index 3ee3155be..faa356d3d 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -7,12 +7,17 @@ import classnames from 'classnames';
7 7
8import ServiceModel from '../../../models/Service'; 8import ServiceModel from '../../../models/Service';
9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; 9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl';
10import WebviewCrashHandler from './WebviewCrashHandler';
11import ServiceDisabled from './ServiceDisabled';
10 12
11@observer 13@observer
12export default class ServiceWebview extends Component { 14export default class ServiceWebview extends Component {
13 static propTypes = { 15 static propTypes = {
14 service: PropTypes.instanceOf(ServiceModel).isRequired, 16 service: PropTypes.instanceOf(ServiceModel).isRequired,
15 setWebviewReference: PropTypes.func.isRequired, 17 setWebviewReference: PropTypes.func.isRequired,
18 reload: PropTypes.func.isRequired,
19 isAppMuted: PropTypes.bool.isRequired,
20 enable: PropTypes.func.isRequired,
16 }; 21 };
17 22
18 static defaultProps = { 23 static defaultProps = {
@@ -53,6 +58,9 @@ export default class ServiceWebview extends Component {
53 const { 58 const {
54 service, 59 service,
55 setWebviewReference, 60 setWebviewReference,
61 reload,
62 isAppMuted,
63 enable,
56 } = this.props; 64 } = this.props;
57 65
58 const webviewClasses = classnames({ 66 const webviewClasses = classnames({
@@ -70,26 +78,37 @@ export default class ServiceWebview extends Component {
70 78
71 return ( 79 return (
72 <div className={webviewClasses}> 80 <div className={webviewClasses}>
73 <Webview 81 {service.hasCrashed && (
74 ref={(element) => { this.webview = element; }} 82 <WebviewCrashHandler
75 83 name={service.recipe.name}
76 autosize 84 webview={service.webview}
77 src={service.url} 85 reload={reload}
78 preload="./webview/plugin.js" 86 />
79 partition={`persist:service-${service.id}`} 87 )}
80 88 {!service.isEnabled ? (
81 onDidAttach={() => setWebviewReference({ 89 <ServiceDisabled
82 serviceId: service.id, 90 name={service.recipe.name}
83 webview: this.webview.view, 91 webview={service.webview}
84 })} 92 enable={enable}
85 93 />
86 onUpdateTargetUrl={this.updateTargetUrl} 94 ) : (
87 95 <Webview
88 useragent={service.userAgent} 96 ref={(element) => { this.webview = element; }}
89 97 autosize
90 disablewebsecurity 98 src={service.url}
91 allowpopups 99 preload="./webview/plugin.js"
92 /> 100 partition={`persist:service-${service.id}`}
101 onDidAttach={() => setWebviewReference({
102 serviceId: service.id,
103 webview: this.webview.view,
104 })}
105 onUpdateTargetUrl={this.updateTargetUrl}
106 useragent={service.userAgent}
107 muted={isAppMuted || service.isMuted}
108 disablewebsecurity
109 allowpopups
110 />
111 )}
93 {statusBar} 112 {statusBar}
94 </div> 113 </div>
95 ); 114 );