aboutsummaryrefslogtreecommitdiffstats
path: root/src/components
diff options
context:
space:
mode:
Diffstat (limited to 'src/components')
-rw-r--r--src/components/auth/Import.js1
-rw-r--r--src/components/auth/Login.js8
-rw-r--r--src/components/auth/Signup.js7
-rw-r--r--src/components/services/content/ServiceWebview.js24
-rw-r--r--src/components/settings/settings/EditSettingsForm.js1
-rw-r--r--src/components/ui/StatusBarTargetUrl.js40
-rw-r--r--src/components/ui/Subscription.js8
-rw-r--r--src/components/ui/SubscriptionPopup.js2
8 files changed, 85 insertions, 6 deletions
diff --git a/src/components/auth/Import.js b/src/components/auth/Import.js
index cf83aa9c8..06493a0fd 100644
--- a/src/components/auth/Import.js
+++ b/src/components/auth/Import.js
@@ -99,7 +99,6 @@ export default class Import extends Component {
99 <tr 99 <tr
100 key={service.id} 100 key={service.id}
101 className="service-table__row" 101 className="service-table__row"
102 onClick={() => service.$('add').set(!service.$('add').value)}
103 > 102 >
104 <td className="service-table__toggle"> 103 <td className="service-table__toggle">
105 <Toggle 104 <Toggle
diff --git a/src/components/auth/Login.js b/src/components/auth/Login.js
index 015079f02..67e92849d 100644
--- a/src/components/auth/Login.js
+++ b/src/components/auth/Login.js
@@ -3,11 +3,14 @@ import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5 5
6import { isDevMode, useLiveAPI } from '../../environment';
6import Form from '../../lib/Form'; 7import Form from '../../lib/Form';
7import { required, email } from '../../helpers/validation-helpers'; 8import { required, email } from '../../helpers/validation-helpers';
8import Input from '../ui/Input'; 9import Input from '../ui/Input';
9import Button from '../ui/Button'; 10import Button from '../ui/Button';
10import Link from '../ui/Link'; 11import Link from '../ui/Link';
12import Infobox from '../ui/Infobox';
13
11 14
12import { globalError as globalErrorPropType } from '../../prop-types'; 15import { globalError as globalErrorPropType } from '../../prop-types';
13 16
@@ -117,6 +120,11 @@ export default class Login extends Component {
117 alt="" 120 alt=""
118 /> 121 />
119 <h1>{intl.formatMessage(messages.headline)}</h1> 122 <h1>{intl.formatMessage(messages.headline)}</h1>
123 {isDevMode && !useLiveAPI && (
124 <Infobox type="warning">
125 In Dev Mode your data is not persistent. Please use the live app for accesing the production API.
126 </Infobox>
127 )}
120 {isTokenExpired && ( 128 {isTokenExpired && (
121 <p className="error-message center">{intl.formatMessage(messages.tokenExpired)}</p> 129 <p className="error-message center">{intl.formatMessage(messages.tokenExpired)}</p>
122 )} 130 )}
diff --git a/src/components/auth/Signup.js b/src/components/auth/Signup.js
index 71ca16111..a990a112e 100644
--- a/src/components/auth/Signup.js
+++ b/src/components/auth/Signup.js
@@ -3,12 +3,14 @@ import PropTypes from 'prop-types';
3import { observer } from 'mobx-react'; 3import { observer } from 'mobx-react';
4import { defineMessages, intlShape } from 'react-intl'; 4import { defineMessages, intlShape } from 'react-intl';
5 5
6import { isDevMode, useLiveAPI } from '../../environment';
6import Form from '../../lib/Form'; 7import Form from '../../lib/Form';
7import { required, email, minLength } from '../../helpers/validation-helpers'; 8import { required, email, minLength } from '../../helpers/validation-helpers';
8import Input from '../ui/Input'; 9import Input from '../ui/Input';
9import Radio from '../ui/Radio'; 10import Radio from '../ui/Radio';
10import Button from '../ui/Button'; 11import Button from '../ui/Button';
11import Link from '../ui/Link'; 12import Link from '../ui/Link';
13import Infobox from '../ui/Infobox';
12 14
13import { globalError as globalErrorPropType } from '../../prop-types'; 15import { globalError as globalErrorPropType } from '../../prop-types';
14 16
@@ -145,6 +147,11 @@ export default class Signup extends Component {
145 alt="" 147 alt=""
146 /> 148 />
147 <h1>{intl.formatMessage(messages.headline)}</h1> 149 <h1>{intl.formatMessage(messages.headline)}</h1>
150 {isDevMode && !useLiveAPI && (
151 <Infobox type="warning">
152 In Dev Mode your data is not persistent. Please use the live app for accesing the production API.
153 </Infobox>
154 )}
148 <Radio field={form.$('accountType')} showLabel={false} /> 155 <Radio field={form.$('accountType')} showLabel={false} />
149 <div className="grid__row"> 156 <div className="grid__row">
150 <Input field={form.$('firstname')} focus /> 157 <Input field={form.$('firstname')} focus />
diff --git a/src/components/services/content/ServiceWebview.js b/src/components/services/content/ServiceWebview.js
index 043ff42ea..3ee3155be 100644
--- a/src/components/services/content/ServiceWebview.js
+++ b/src/components/services/content/ServiceWebview.js
@@ -6,6 +6,7 @@ import Webview from 'react-electron-web-view';
6import classnames from 'classnames'; 6import classnames from 'classnames';
7 7
8import ServiceModel from '../../../models/Service'; 8import ServiceModel from '../../../models/Service';
9import StatusBarTargetUrl from '../../ui/StatusBarTargetUrl';
9 10
10@observer 11@observer
11export default class ServiceWebview extends Component { 12export default class ServiceWebview extends Component {
@@ -20,6 +21,8 @@ export default class ServiceWebview extends Component {
20 21
21 state = { 22 state = {
22 forceRepaint: false, 23 forceRepaint: false,
24 targetUrl: '',
25 statusBarVisible: false,
23 }; 26 };
24 27
25 componentDidMount() { 28 componentDidMount() {
@@ -33,6 +36,17 @@ export default class ServiceWebview extends Component {
33 }); 36 });
34 } 37 }
35 38
39 updateTargetUrl = (event) => {
40 let visible = true;
41 if (event.url === '' || event.url === '#') {
42 visible = false;
43 }
44 this.setState({
45 targetUrl: event.url,
46 statusBarVisible: visible,
47 });
48 }
49
36 webview = null; 50 webview = null;
37 51
38 render() { 52 render() {
@@ -47,6 +61,13 @@ export default class ServiceWebview extends Component {
47 'services__webview--force-repaint': this.state.forceRepaint, 61 'services__webview--force-repaint': this.state.forceRepaint,
48 }); 62 });
49 63
64 let statusBar = null;
65 if (this.state.statusBarVisible) {
66 statusBar = (
67 <StatusBarTargetUrl text={this.state.targetUrl} />
68 );
69 }
70
50 return ( 71 return (
51 <div className={webviewClasses}> 72 <div className={webviewClasses}>
52 <Webview 73 <Webview
@@ -62,11 +83,14 @@ export default class ServiceWebview extends Component {
62 webview: this.webview.view, 83 webview: this.webview.view,
63 })} 84 })}
64 85
86 onUpdateTargetUrl={this.updateTargetUrl}
87
65 useragent={service.userAgent} 88 useragent={service.userAgent}
66 89
67 disablewebsecurity 90 disablewebsecurity
68 allowpopups 91 allowpopups
69 /> 92 />
93 {statusBar}
70 </div> 94 </div>
71 ); 95 );
72 } 96 }
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 02736dbb9..5675fecf4 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -115,6 +115,7 @@ export default class EditSettingsForm extends Component {
115 <h2>{intl.formatMessage(messages.headlineGeneral)}</h2> 115 <h2>{intl.formatMessage(messages.headlineGeneral)}</h2>
116 <Toggle field={form.$('autoLaunchOnStart')} /> 116 <Toggle field={form.$('autoLaunchOnStart')} />
117 <Toggle field={form.$('runInBackground')} /> 117 <Toggle field={form.$('runInBackground')} />
118 <Toggle field={form.$('enableSystemTray')} />
118 {process.platform === 'win32' && ( 119 {process.platform === 'win32' && (
119 <Toggle field={form.$('minimizeToSystemTray')} /> 120 <Toggle field={form.$('minimizeToSystemTray')} />
120 )} 121 )}
diff --git a/src/components/ui/StatusBarTargetUrl.js b/src/components/ui/StatusBarTargetUrl.js
new file mode 100644
index 000000000..b7b198f42
--- /dev/null
+++ b/src/components/ui/StatusBarTargetUrl.js
@@ -0,0 +1,40 @@
1import React, { Component } from 'react';
2import PropTypes from 'prop-types';
3import { observer } from 'mobx-react';
4import classnames from 'classnames';
5
6import Appear from '../ui/effects/Appear';
7
8@observer
9export default class StatusBarTargetUrl extends Component {
10 static propTypes = {
11 className: PropTypes.string,
12 text: PropTypes.string,
13 };
14
15 static defaultProps = {
16 className: '',
17 position: 'bottom',
18 text: '',
19 };
20
21 render() {
22 const {
23 className,
24 text,
25 } = this.props;
26
27 return (
28 <Appear
29 className={classnames({
30 'status-bar-target-url': true,
31 [`${className}`]: true,
32 })}
33 >
34 <div className="status-bar-target-url__content">
35 {text}
36 </div>
37 </Appear>
38 );
39 }
40}
diff --git a/src/components/ui/Subscription.js b/src/components/ui/Subscription.js
index ada5cc3e0..fe0925a26 100644
--- a/src/components/ui/Subscription.js
+++ b/src/components/ui/Subscription.js
@@ -79,7 +79,7 @@ const messages = defineMessages({
79 }, 79 },
80 miningDetail1: { 80 miningDetail1: {
81 id: 'subscription.mining.line1', 81 id: 'subscription.mining.line1',
82 defaultMessage: '!!!By enabling "Support with processing power", Franz will use about 20-50% of your CPU to mine cryptocurrency Monero which equals approximately $ 5/year.', 82 defaultMessage: '!!!By enabling "Support with processing power", Franz will use about 20-50% of your CPU to mine cryptocurrency Monero which equals approximately € 5/year.',
83 }, 83 },
84 miningDetail2: { 84 miningDetail2: {
85 id: 'subscription.mining.line2', 85 id: 'subscription.mining.line2',
@@ -136,12 +136,12 @@ export default class SubscriptionForm extends Component {
136 validate: [required], 136 validate: [required],
137 options: [{ 137 options: [{
138 value: 'month', 138 value: 'month',
139 label: `$ ${Object.hasOwnProperty.call(this.props.plan, 'month') 139 label: ` ${Object.hasOwnProperty.call(this.props.plan, 'month')
140 ? `${this.props.plan.month.price} / ${intl.formatMessage(messages.typeMonthly)}` 140 ? `${this.props.plan.month.price} / ${intl.formatMessage(messages.typeMonthly)}`
141 : 'monthly'}`, 141 : 'monthly'}`,
142 }, { 142 }, {
143 value: 'year', 143 value: 'year',
144 label: `$ ${Object.hasOwnProperty.call(this.props.plan, 'year') 144 label: ` ${Object.hasOwnProperty.call(this.props.plan, 'year')
145 ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}` 145 ? `${this.props.plan.year.price} / ${intl.formatMessage(messages.typeYearly)}`
146 : 'yearly'}`, 146 : 'yearly'}`,
147 }, { 147 }, {
@@ -155,7 +155,7 @@ export default class SubscriptionForm extends Component {
155 if (this.props.showSkipOption) { 155 if (this.props.showSkipOption) {
156 form.fields.paymentTier.options.unshift({ 156 form.fields.paymentTier.options.unshift({
157 value: 'skip', 157 value: 'skip',
158 label: `$ 0 / ${intl.formatMessage(messages.typeFree)}`, 158 label: ` 0 / ${intl.formatMessage(messages.typeFree)}`,
159 }); 159 });
160 } 160 }
161 161
diff --git a/src/components/ui/SubscriptionPopup.js b/src/components/ui/SubscriptionPopup.js
index 72b6ccd98..5aae2c47a 100644
--- a/src/components/ui/SubscriptionPopup.js
+++ b/src/components/ui/SubscriptionPopup.js
@@ -57,7 +57,7 @@ export default class SubscriptionPopup extends Component {
57 className="subscription-popup__webview" 57 className="subscription-popup__webview"
58 58
59 autosize 59 autosize
60 src={url} 60 src={encodeURI(url)}
61 disablewebsecurity 61 disablewebsecurity
62 onDidNavigate={completeCheck} 62 onDidNavigate={completeCheck}
63 // onNewWindow={(event, url, frameName, options) => 63 // onNewWindow={(event, url, frameName, options) =>