aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/services/content
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2017-11-09 12:11:16 +0100
committerLibravatar Stefan Malzner <stefan@adlk.io>2017-11-09 12:15:36 +0100
commit1839eff4fcad186871672499b6c3cc68e9539ce2 (patch)
tree207f0c0cf694309f6d84afeee220cacdc9b56242 /src/components/services/content
parentMerge branch 'develop' of github.com:meetfranz/franz into develop (diff)
downloadferdium-app-1839eff4fcad186871672499b6c3cc68e9539ce2.tar.gz
ferdium-app-1839eff4fcad186871672499b6c3cc68e9539ce2.tar.zst
ferdium-app-1839eff4fcad186871672499b6c3cc68e9539ce2.zip
feat(Service): Add option to display disabled services in tabs
Diffstat (limited to 'src/components/services/content')
-rw-r--r--src/components/services/content/ServiceDisabled.js48
-rw-r--r--src/components/services/content/ServiceWebview.js56
-rw-r--r--src/components/services/content/Services.js9
-rw-r--r--src/components/services/content/WebviewCrashHandler.js2
4 files changed, 93 insertions, 22 deletions
diff --git a/src/components/services/content/ServiceDisabled.js b/src/components/services/content/ServiceDisabled.js
new file mode 100644
index 000000000..732b6c003
--- /dev/null
+++ b/src/components/services/content/ServiceDisabled.js
@@ -0,0 +1,48 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl';
5
6import Button from '../../ui/Button';
7
8const messages = defineMessages({
9 headline: {
10 id: 'service.disabledHandler.headline',
11 defaultMessage: '!!!{name} is disabled',
12 },
13 action: {
14 id: 'service.disabledHandler.action',
15 defaultMessage: '!!!Enable {name}',
16 },
17});
18
19@observer
20export default class ServiceDisabled extends Component {
21 static propTypes = {
22 name: PropTypes.string.isRequired,
23 enable: PropTypes.func.isRequired,
24 };
25
26 static contextTypes = {
27 intl: intlShape,
28 };
29
30 countdownInterval = null;
31 countdownIntervalTimeout = 1000;
32
33 render() {
34 const { name, enable } = this.props;
35 const { intl } = this.context;
36
37 return (
38 <div className="services__crash-handler">
39 <h1>{intl.formatMessage(messages.headline, { name })}</h1>
40 <Button
41 label={intl.formatMessage(messages.action, { name })}
42 buttonType="inverted"
43 onClick={() => enable()}
44 />
45 </div>
46 );
47 }
48}
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index cd59e0a8a..a71017a6e 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -8,6 +8,7 @@ import classnames from 'classnames';
8import ServiceModel from '../../../models/Service'; 8import ServiceModel from '../../../models/Service';
9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl'; 9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl';
10import WebviewCrashHandler from './WebviewCrashHandler'; 10import WebviewCrashHandler from './WebviewCrashHandler';
11import ServiceDisabled from './ServiceDisabled';
11 12
12@observer 13@observer
13export default class ServiceWebview extends Component { 14export default class ServiceWebview extends Component {
@@ -15,6 +16,7 @@ export default class ServiceWebview extends Component {
15 service: PropTypes.instanceOf(ServiceModel).isRequired, 16 service: PropTypes.instanceOf(ServiceModel).isRequired,
16 setWebviewReference: PropTypes.func.isRequired, 17 setWebviewReference: PropTypes.func.isRequired,
17 reload: PropTypes.func.isRequired, 18 reload: PropTypes.func.isRequired,
19 enable: PropTypes.func.isRequired,
18 }; 20 };
19 21
20 static defaultProps = { 22 static defaultProps = {
@@ -56,6 +58,7 @@ export default class ServiceWebview extends Component {
56 service, 58 service,
57 setWebviewReference, 59 setWebviewReference,
58 reload, 60 reload,
61 enable,
59 } = this.props; 62 } = this.props;
60 63
61 const webviewClasses = classnames({ 64 const webviewClasses = classnames({
@@ -80,27 +83,38 @@ export default class ServiceWebview extends Component {
80 reload={reload} 83 reload={reload}
81 /> 84 />
82 )} 85 )}
83 <Webview 86 {!service.isEnabled && (
84 ref={(element) => { this.webview = element; }} 87 <ServiceDisabled
85 88 name={service.recipe.name}
86 autosize 89 webview={service.webview}
87 src={service.url} 90 enable={enable}
88 preload="./webview/plugin.js" 91 />
89 partition={`persist:service-${service.id}`} 92 )}
90 93 {service.isEnabled && (
91 onDidAttach={() => setWebviewReference({ 94 <div className="services__webview-wrapper">
92 serviceId: service.id, 95 <Webview
93 webview: this.webview.view, 96 ref={(element) => { this.webview = element; }}
94 })} 97
95 98 autosize
96 onUpdateTargetUrl={this.updateTargetUrl} 99 src={service.url}
97 100 preload="./webview/plugin.js"
98 useragent={service.userAgent} 101 partition={`persist:service-${service.id}`}
99 102
100 disablewebsecurity 103 onDidAttach={() => setWebviewReference({
101 allowpopups 104 serviceId: service.id,
102 /> 105 webview: this.webview.view,
103 {statusBar} 106 })}
107
108 onUpdateTargetUrl={this.updateTargetUrl}
109
110 useragent={service.userAgent}
111
112 disablewebsecurity
113 allowpopups
114 />
115 {statusBar}
116 </div>
117 )}
104 </div> 118 </div>
105 ); 119 );
106 } 120 }
diff --git a/src/components/services/content/Services.js b/src/components/services/content/Services.js
index bad525d22..5230508f7 100644
--- a/src/components/services/content/Services.js
+++ b/src/components/services/content/Services.js
@@ -26,6 +26,7 @@ export default class Services extends Component {
26 handleIPCMessage: PropTypes.func.isRequired, 26 handleIPCMessage: PropTypes.func.isRequired,
27 openWindow: PropTypes.func.isRequired, 27 openWindow: PropTypes.func.isRequired,
28 reload: PropTypes.func.isRequired, 28 reload: PropTypes.func.isRequired,
29 update: PropTypes.func.isRequired,
29 }; 30 };
30 31
31 static defaultProps = { 32 static defaultProps = {
@@ -44,6 +45,7 @@ export default class Services extends Component {
44 setWebviewReference, 45 setWebviewReference,
45 openWindow, 46 openWindow,
46 reload, 47 reload,
48 update,
47 } = this.props; 49 } = this.props;
48 const { intl } = this.context; 50 const { intl } = this.context;
49 51
@@ -76,6 +78,13 @@ export default class Services extends Component {
76 setWebviewReference={setWebviewReference} 78 setWebviewReference={setWebviewReference}
77 openWindow={openWindow} 79 openWindow={openWindow}
78 reload={() => reload({ serviceId: service.id })} 80 reload={() => reload({ serviceId: service.id })}
81 enable={() => update({
82 serviceId: service.id,
83 serviceData: {
84 isEnabled: true,
85 },
86 redirect: false,
87 })}
79 /> 88 />
80 ))} 89 ))}
81 </div> 90 </div>
diff --git a/src/components/services/content/WebviewCrashHandler.js b/src/components/services/content/WebviewCrashHandler.js
index 24903f3c5..d48152c18 100644
--- a/src/components/services/content/WebviewCrashHandler.js
+++ b/src/components/services/content/WebviewCrashHandler.js
@@ -25,7 +25,7 @@ const messages = defineMessages({
25}); 25});
26 26
27@observer 27@observer
28export default class ServiceWebview extends Component { 28export default class WebviewCrashHandler extends Component {
29 static propTypes = { 29 static propTypes = {
30 name: PropTypes.string.isRequired, 30 name: PropTypes.string.isRequired,
31 reload: PropTypes.func.isRequired, 31 reload: PropTypes.func.isRequired,