diff options
Diffstat (limited to 'src/components/services/content/ServiceWebview.js')
-rw-r--r-- | src/components/services/content/ServiceWebview.js | 59 |
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 | ||
8 | import ServiceModel from '../../../models/Service'; | 8 | import ServiceModel from '../../../models/Service'; |
9 | import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; | 9 | import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; |
10 | import WebviewCrashHandler from './WebviewCrashHandler'; | ||
11 | import ServiceDisabled from './ServiceDisabled'; | ||
10 | 12 | ||
11 | @observer | 13 | @observer |
12 | export default class ServiceWebview extends Component { | 14 | export 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 | ); |