diff options
Diffstat (limited to 'src/components')
-rw-r--r-- | src/components/auth/Import.js | 1 | ||||
-rw-r--r-- | src/components/auth/Login.js | 8 | ||||
-rw-r--r-- | src/components/auth/Signup.js | 7 | ||||
-rw-r--r-- | src/components/services/content/ServiceWebview.js | 24 | ||||
-rw-r--r-- | src/components/settings/settings/EditSettingsForm.js | 1 | ||||
-rw-r--r-- | src/components/ui/StatusBarTargetUrl.js | 40 | ||||
-rw-r--r-- | src/components/ui/Subscription.js | 8 | ||||
-rw-r--r-- | src/components/ui/SubscriptionPopup.js | 2 |
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'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | 5 | ||
6 | import { isDevMode, useLiveAPI } from '../../environment'; | ||
6 | import Form from '../../lib/Form'; | 7 | import Form from '../../lib/Form'; |
7 | import { required, email } from '../../helpers/validation-helpers'; | 8 | import { required, email } from '../../helpers/validation-helpers'; |
8 | import Input from '../ui/Input'; | 9 | import Input from '../ui/Input'; |
9 | import Button from '../ui/Button'; | 10 | import Button from '../ui/Button'; |
10 | import Link from '../ui/Link'; | 11 | import Link from '../ui/Link'; |
12 | import Infobox from '../ui/Infobox'; | ||
13 | |||
11 | 14 | ||
12 | import { globalError as globalErrorPropType } from '../../prop-types'; | 15 | import { 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'; | |||
3 | import { observer } from 'mobx-react'; | 3 | import { observer } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | 5 | ||
6 | import { isDevMode, useLiveAPI } from '../../environment'; | ||
6 | import Form from '../../lib/Form'; | 7 | import Form from '../../lib/Form'; |
7 | import { required, email, minLength } from '../../helpers/validation-helpers'; | 8 | import { required, email, minLength } from '../../helpers/validation-helpers'; |
8 | import Input from '../ui/Input'; | 9 | import Input from '../ui/Input'; |
9 | import Radio from '../ui/Radio'; | 10 | import Radio from '../ui/Radio'; |
10 | import Button from '../ui/Button'; | 11 | import Button from '../ui/Button'; |
11 | import Link from '../ui/Link'; | 12 | import Link from '../ui/Link'; |
13 | import Infobox from '../ui/Infobox'; | ||
12 | 14 | ||
13 | import { globalError as globalErrorPropType } from '../../prop-types'; | 15 | import { 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'; | |||
6 | import classnames from 'classnames'; | 6 | 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 | 10 | ||
10 | @observer | 11 | @observer |
11 | export default class ServiceWebview extends Component { | 12 | export 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 @@ | |||
1 | import React, { Component } from 'react'; | ||
2 | import PropTypes from 'prop-types'; | ||
3 | import { observer } from 'mobx-react'; | ||
4 | import classnames from 'classnames'; | ||
5 | |||
6 | import Appear from '../ui/effects/Appear'; | ||
7 | |||
8 | @observer | ||
9 | export 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) => |