aboutsummaryrefslogtreecommitdiffstats
path: root/src/containers/settings
diff options
context:
space:
mode:
authorLibravatar Stefan Malzner <stefan@adlk.io>2018-12-02 15:08:07 +0100
committerLibravatar Stefan Malzner <stefan@adlk.io>2018-12-02 15:08:07 +0100
commita5aa5e1380a0847eb33be3315d164fb9e0e23255 (patch)
treea1ea4b0f635cabb54d9cf028809d2f079727b9a1 /src/containers/settings
parentAdd instruction to install Franz with homebrew (#1134) (diff)
parentMerge branch 'develop' into release/5.0.0-beta.19 (diff)
downloadferdium-app-a5aa5e1380a0847eb33be3315d164fb9e0e23255.tar.gz
ferdium-app-a5aa5e1380a0847eb33be3315d164fb9e0e23255.tar.zst
ferdium-app-a5aa5e1380a0847eb33be3315d164fb9e0e23255.zip
Merge branch 'release/5.0.0-beta.19'
Diffstat (limited to 'src/containers/settings')
-rw-r--r--src/containers/settings/AccountScreen.js3
-rw-r--r--src/containers/settings/EditServiceScreen.js77
-rw-r--r--src/containers/settings/EditSettingsScreen.js40
-rw-r--r--src/containers/settings/EditUserScreen.js4
-rw-r--r--src/containers/settings/InviteScreen.js3
-rw-r--r--src/containers/settings/RecipesScreen.js3
-rw-r--r--src/containers/settings/ServicesScreen.js3
-rw-r--r--src/containers/settings/SettingsWindow.js3
8 files changed, 113 insertions, 23 deletions
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js
index c5c2982b0..5818af0b1 100644
--- a/src/containers/settings/AccountScreen.js
+++ b/src/containers/settings/AccountScreen.js
@@ -12,8 +12,7 @@ import AccountDashboard from '../../components/settings/account/AccountDashboard
12 12
13const { BrowserWindow } = remote; 13const { BrowserWindow } = remote;
14 14
15@inject('stores', 'actions') @observer 15export default @inject('stores', 'actions') @observer class AccountScreen extends Component {
16export default class AccountScreen extends Component {
17 componentDidMount() { 16 componentDidMount() {
18 gaPage('Settings/Account Dashboard'); 17 gaPage('Settings/Account Dashboard');
19 } 18 }
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js
index 67c2731fc..639e8b070 100644
--- a/src/containers/settings/EditServiceScreen.js
+++ b/src/containers/settings/EditServiceScreen.js
@@ -6,6 +6,8 @@ import { defineMessages, intlShape } from 'react-intl';
6import UserStore from '../../stores/UserStore'; 6import UserStore from '../../stores/UserStore';
7import RecipesStore from '../../stores/RecipesStore'; 7import RecipesStore from '../../stores/RecipesStore';
8import ServicesStore from '../../stores/ServicesStore'; 8import ServicesStore from '../../stores/ServicesStore';
9import SettingsStore from '../../stores/SettingsStore';
10import FeaturesStore from '../../stores/FeaturesStore';
9import Form from '../../lib/Form'; 11import Form from '../../lib/Form';
10import { gaPage } from '../../lib/analytics'; 12import { gaPage } from '../../lib/analytics';
11 13
@@ -13,6 +15,8 @@ import ServiceError from '../../components/settings/services/ServiceError';
13import EditServiceForm from '../../components/settings/services/EditServiceForm'; 15import EditServiceForm from '../../components/settings/services/EditServiceForm';
14import { required, url, oneRequired } from '../../helpers/validation-helpers'; 16import { required, url, oneRequired } from '../../helpers/validation-helpers';
15 17
18import { config as proxyFeature } from '../../features/serviceProxy';
19
16const messages = defineMessages({ 20const messages = defineMessages({
17 name: { 21 name: {
18 id: 'settings.service.form.name', 22 id: 'settings.service.form.name',
@@ -50,10 +54,29 @@ const messages = defineMessages({
50 id: 'settings.service.form.icon', 54 id: 'settings.service.form.icon',
51 defaultMessage: '!!!Custom icon', 55 defaultMessage: '!!!Custom icon',
52 }, 56 },
57 enableDarkMode: {
58 id: 'settings.service.form.enableDarkMode',
59 defaultMessage: '!!!Enable Dark Mode',
60 },
61 enableProxy: {
62 id: 'settings.service.form.proxy.isEnabled',
63 defaultMessage: '!!!Use Proxy',
64 },
65 proxyHost: {
66 id: 'settings.service.form.proxy.host',
67 defaultMessage: '!!!Proxy Host/IP',
68 },
69 proxyUser: {
70 id: 'settings.service.form.proxy.user',
71 defaultMessage: '!!!User',
72 },
73 proxyPassword: {
74 id: 'settings.service.form.proxy.password',
75 defaultMessage: '!!!Password',
76 },
53}); 77});
54 78
55@inject('stores', 'actions') @observer 79export default @inject('stores', 'actions') @observer class EditServiceScreen extends Component {
56export default class EditServiceScreen extends Component {
57 static contextTypes = { 80 static contextTypes = {
58 intl: intlShape, 81 intl: intlShape,
59 }; 82 };
@@ -77,7 +100,7 @@ export default class EditServiceScreen extends Component {
77 } 100 }
78 } 101 }
79 102
80 prepareForm(recipe, service) { 103 prepareForm(recipe, service, proxy) {
81 const { intl } = this.context; 104 const { intl } = this.context;
82 const config = { 105 const config = {
83 fields: { 106 fields: {
@@ -112,6 +135,11 @@ export default class EditServiceScreen extends Component {
112 default: null, 135 default: null,
113 type: 'file', 136 type: 'file',
114 }, 137 },
138 isDarkModeEnabled: {
139 label: intl.formatMessage(messages.enableDarkMode),
140 value: service.isDarkModeEnabled,
141 default: this.props.stores.settings.all.app.darkMode,
142 },
115 }, 143 },
116 }; 144 };
117 145
@@ -163,6 +191,40 @@ export default class EditServiceScreen extends Component {
163 }); 191 });
164 } 192 }
165 193
194 if (proxy.isEnabled) {
195 const serviceProxyConfig = this.props.stores.settings.proxy[service.id] || {};
196
197 Object.assign(config.fields, {
198 proxy: {
199 name: 'proxy',
200 label: 'proxy',
201 fields: {
202 isEnabled: {
203 label: intl.formatMessage(messages.enableProxy),
204 value: serviceProxyConfig.isEnabled,
205 default: false,
206 },
207 host: {
208 label: intl.formatMessage(messages.proxyHost),
209 value: serviceProxyConfig.host,
210 default: '',
211 },
212 user: {
213 label: intl.formatMessage(messages.proxyUser),
214 value: serviceProxyConfig.user,
215 default: '',
216 },
217 password: {
218 label: intl.formatMessage(messages.proxyPassword),
219 value: serviceProxyConfig.password,
220 default: '',
221 type: 'password',
222 },
223 },
224 },
225 });
226 }
227
166 return new Form(config); 228 return new Form(config);
167 } 229 }
168 230
@@ -215,7 +277,7 @@ export default class EditServiceScreen extends Component {
215 ); 277 );
216 } 278 }
217 279
218 const form = this.prepareForm(recipe, service); 280 const form = this.prepareForm(recipe, service, proxyFeature);
219 281
220 return ( 282 return (
221 <EditServiceForm 283 <EditServiceForm
@@ -229,6 +291,8 @@ export default class EditServiceScreen extends Component {
229 isDeleting={services.deleteServiceRequest.isExecuting} 291 isDeleting={services.deleteServiceRequest.isExecuting}
230 onSubmit={d => this.onSubmit(d)} 292 onSubmit={d => this.onSubmit(d)}
231 onDelete={() => this.deleteService()} 293 onDelete={() => this.deleteService()}
294 isProxyFeatureEnabled={proxyFeature.isEnabled}
295 isProxyFeaturePremiumFeature={proxyFeature.isPremium}
232 /> 296 />
233 ); 297 );
234 } 298 }
@@ -239,6 +303,8 @@ EditServiceScreen.wrappedComponent.propTypes = {
239 user: PropTypes.instanceOf(UserStore).isRequired, 303 user: PropTypes.instanceOf(UserStore).isRequired,
240 recipes: PropTypes.instanceOf(RecipesStore).isRequired, 304 recipes: PropTypes.instanceOf(RecipesStore).isRequired,
241 services: PropTypes.instanceOf(ServicesStore).isRequired, 305 services: PropTypes.instanceOf(ServicesStore).isRequired,
306 settings: PropTypes.instanceOf(SettingsStore).isRequired,
307 features: PropTypes.instanceOf(FeaturesStore).isRequired,
242 }).isRequired, 308 }).isRequired,
243 router: PropTypes.shape({ 309 router: PropTypes.shape({
244 params: PropTypes.shape({ 310 params: PropTypes.shape({
@@ -251,5 +317,8 @@ EditServiceScreen.wrappedComponent.propTypes = {
251 updateService: PropTypes.func.isRequired, 317 updateService: PropTypes.func.isRequired,
252 deleteService: PropTypes.func.isRequired, 318 deleteService: PropTypes.func.isRequired,
253 }).isRequired, 319 }).isRequired,
320 // settings: PropTypes.shape({
321 // update: PropTypes.func.isRequred,
322 // }).isRequired,
254 }).isRequired, 323 }).isRequired,
255}; 324};
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js
index 018ce663f..ea1d319d9 100644
--- a/src/containers/settings/EditSettingsScreen.js
+++ b/src/containers/settings/EditSettingsScreen.js
@@ -7,9 +7,10 @@ import AppStore from '../../stores/AppStore';
7import SettingsStore from '../../stores/SettingsStore'; 7import SettingsStore from '../../stores/SettingsStore';
8import UserStore from '../../stores/UserStore'; 8import UserStore from '../../stores/UserStore';
9import Form from '../../lib/Form'; 9import Form from '../../lib/Form';
10import { APP_LOCALES } from '../../i18n/languages'; 10import { APP_LOCALES, SPELLCHECKER_LOCALES } from '../../i18n/languages';
11import { gaPage } from '../../lib/analytics'; 11import { gaPage } from '../../lib/analytics';
12import { DEFAULT_APP_SETTINGS } from '../../config'; 12import { DEFAULT_APP_SETTINGS } from '../../config';
13import { config as spellcheckerConfig } from '../../features/spellchecker';
13 14
14 15
15import EditSettingsForm from '../../components/settings/settings/EditSettingsForm'; 16import EditSettingsForm from '../../components/settings/settings/EditSettingsForm';
@@ -39,6 +40,10 @@ const messages = defineMessages({
39 id: 'settings.app.form.language', 40 id: 'settings.app.form.language',
40 defaultMessage: '!!!Language', 41 defaultMessage: '!!!Language',
41 }, 42 },
43 darkMode: {
44 id: 'settings.app.form.darkMode',
45 defaultMessage: '!!!Dark Mode',
46 },
42 showDisabledServices: { 47 showDisabledServices: {
43 id: 'settings.app.form.showDisabledServices', 48 id: 'settings.app.form.showDisabledServices',
44 defaultMessage: '!!!Display disabled services tabs', 49 defaultMessage: '!!!Display disabled services tabs',
@@ -55,8 +60,8 @@ const messages = defineMessages({
55 id: 'settings.app.form.enableGPUAcceleration', 60 id: 'settings.app.form.enableGPUAcceleration',
56 defaultMessage: '!!!Enable GPU Acceleration', 61 defaultMessage: '!!!Enable GPU Acceleration',
57 }, 62 },
58 spellcheckingLanguage: { 63 spellcheckerLanguage: {
59 id: 'settings.app.form.spellcheckingLanguage', 64 id: 'settings.app.form.spellcheckerLanguage',
60 defaultMessage: '!!!Language for spell checking', 65 defaultMessage: '!!!Language for spell checking',
61 }, 66 },
62 beta: { 67 beta: {
@@ -65,8 +70,7 @@ const messages = defineMessages({
65 }, 70 },
66}); 71});
67 72
68@inject('stores', 'actions') @observer 73export default @inject('stores', 'actions') @observer class EditSettingsScreen extends Component {
69export default class EditSettingsScreen extends Component {
70 static contextTypes = { 74 static contextTypes = {
71 intl: intlShape, 75 intl: intlShape,
72 }; 76 };
@@ -91,8 +95,10 @@ export default class EditSettingsScreen extends Component {
91 minimizeToSystemTray: settingsData.minimizeToSystemTray, 95 minimizeToSystemTray: settingsData.minimizeToSystemTray,
92 enableGPUAcceleration: settingsData.enableGPUAcceleration, 96 enableGPUAcceleration: settingsData.enableGPUAcceleration,
93 showDisabledServices: settingsData.showDisabledServices, 97 showDisabledServices: settingsData.showDisabledServices,
98 darkMode: settingsData.darkMode,
94 showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, 99 showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted,
95 enableSpellchecking: settingsData.enableSpellchecking, 100 enableSpellchecking: settingsData.enableSpellchecking,
101 spellcheckerLanguage: settingsData.spellcheckerLanguage,
96 beta: settingsData.beta, // we need this info in the main process as well 102 beta: settingsData.beta, // we need this info in the main process as well
97 locale: settingsData.locale, // we need this info in the main process as well 103 locale: settingsData.locale, // we need this info in the main process as well
98 }, 104 },
@@ -118,6 +124,14 @@ export default class EditSettingsScreen extends Component {
118 }); 124 });
119 }); 125 });
120 126
127 const spellcheckingLanguages = [];
128 Object.keys(SPELLCHECKER_LOCALES).sort(Intl.Collator().compare).forEach((key) => {
129 spellcheckingLanguages.push({
130 value: key,
131 label: SPELLCHECKER_LOCALES[key],
132 });
133 });
134
121 const config = { 135 const config = {
122 fields: { 136 fields: {
123 autoLaunchOnStart: { 137 autoLaunchOnStart: {
@@ -157,8 +171,19 @@ export default class EditSettingsScreen extends Component {
157 }, 171 },
158 enableSpellchecking: { 172 enableSpellchecking: {
159 label: intl.formatMessage(messages.enableSpellchecking), 173 label: intl.formatMessage(messages.enableSpellchecking),
160 value: settings.all.app.enableSpellchecking, 174 value: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : settings.all.app.enableSpellchecking,
161 default: DEFAULT_APP_SETTINGS.enableSpellchecking, 175 default: !this.props.stores.user.data.isPremium && spellcheckerConfig.isPremiumFeature ? false : DEFAULT_APP_SETTINGS.enableSpellchecking,
176 },
177 spellcheckerLanguage: {
178 label: intl.formatMessage(messages.spellcheckerLanguage),
179 value: settings.all.app.spellcheckerLanguage,
180 options: spellcheckingLanguages,
181 default: DEFAULT_APP_SETTINGS.spellcheckerLanguage,
182 },
183 darkMode: {
184 label: intl.formatMessage(messages.darkMode),
185 value: settings.all.app.darkMode,
186 default: DEFAULT_APP_SETTINGS.darkMode,
162 }, 187 },
163 enableGPUAcceleration: { 188 enableGPUAcceleration: {
164 label: intl.formatMessage(messages.enableGPUAcceleration), 189 label: intl.formatMessage(messages.enableGPUAcceleration),
@@ -209,6 +234,7 @@ export default class EditSettingsScreen extends Component {
209 cacheSize={cacheSize} 234 cacheSize={cacheSize}
210 isClearingAllCache={isClearingAllCache} 235 isClearingAllCache={isClearingAllCache}
211 onClearAllCache={clearAllCache} 236 onClearAllCache={clearAllCache}
237 isSpellcheckerPremiumFeature={spellcheckerConfig.isPremiumFeature}
212 /> 238 />
213 ); 239 );
214 } 240 }
diff --git a/src/containers/settings/EditUserScreen.js b/src/containers/settings/EditUserScreen.js
index dda8ce513..3da3e8d2c 100644
--- a/src/containers/settings/EditUserScreen.js
+++ b/src/containers/settings/EditUserScreen.js
@@ -50,8 +50,7 @@ const messages = defineMessages({
50 }, 50 },
51}); 51});
52 52
53@inject('stores', 'actions') @observer 53export default @inject('stores', 'actions') @observer class EditUserScreen extends Component {
54export default class EditUserScreen extends Component {
55 static contextTypes = { 54 static contextTypes = {
56 intl: intlShape, 55 intl: intlShape,
57 }; 56 };
@@ -145,6 +144,7 @@ export default class EditUserScreen extends Component {
145 // user={user.data} 144 // user={user.data}
146 status={user.actionStatus} 145 status={user.actionStatus}
147 form={form} 146 form={form}
147 isEnterprise={user.data.isEnterprise}
148 isSaving={user.updateUserInfoRequest.isExecuting} 148 isSaving={user.updateUserInfoRequest.isExecuting}
149 onSubmit={d => this.onSubmit(d)} 149 onSubmit={d => this.onSubmit(d)}
150 /> 150 />
diff --git a/src/containers/settings/InviteScreen.js b/src/containers/settings/InviteScreen.js
index 5f341b1b3..38ca6ec74 100644
--- a/src/containers/settings/InviteScreen.js
+++ b/src/containers/settings/InviteScreen.js
@@ -5,8 +5,7 @@ import { inject, observer } from 'mobx-react';
5import Invite from '../../components/auth/Invite'; 5import Invite from '../../components/auth/Invite';
6import { gaPage } from '../../lib/analytics'; 6import { gaPage } from '../../lib/analytics';
7 7
8@inject('stores', 'actions') @observer 8export default @inject('stores', 'actions') @observer class InviteScreen extends Component {
9export default class InviteScreen extends Component {
10 componentDidMount() { 9 componentDidMount() {
11 gaPage('Settings/Invite'); 10 gaPage('Settings/Invite');
12 } 11 }
diff --git a/src/containers/settings/RecipesScreen.js b/src/containers/settings/RecipesScreen.js
index 65341e9e3..4efe81505 100644
--- a/src/containers/settings/RecipesScreen.js
+++ b/src/containers/settings/RecipesScreen.js
@@ -11,8 +11,7 @@ import { gaPage } from '../../lib/analytics';
11 11
12import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard'; 12import RecipesDashboard from '../../components/settings/recipes/RecipesDashboard';
13 13
14@inject('stores', 'actions') @observer 14export default @inject('stores', 'actions') @observer class RecipesScreen extends Component {
15export default class RecipesScreen extends Component {
16 static propTypes = { 15 static propTypes = {
17 params: PropTypes.shape({ 16 params: PropTypes.shape({
18 filter: PropTypes.string, 17 filter: PropTypes.string,
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js
index 12db1bcd3..c1a133ef7 100644
--- a/src/containers/settings/ServicesScreen.js
+++ b/src/containers/settings/ServicesScreen.js
@@ -10,8 +10,7 @@ import { gaPage } from '../../lib/analytics';
10 10
11import ServicesDashboard from '../../components/settings/services/ServicesDashboard'; 11import ServicesDashboard from '../../components/settings/services/ServicesDashboard';
12 12
13@inject('stores', 'actions') @observer 13export default @inject('stores', 'actions') @observer class ServicesScreen extends Component {
14export default class ServicesScreen extends Component {
15 componentDidMount() { 14 componentDidMount() {
16 gaPage('Settings/Service Dashboard'); 15 gaPage('Settings/Service Dashboard');
17 } 16 }
diff --git a/src/containers/settings/SettingsWindow.js b/src/containers/settings/SettingsWindow.js
index 13ca96f72..55589d0be 100644
--- a/src/containers/settings/SettingsWindow.js
+++ b/src/containers/settings/SettingsWindow.js
@@ -7,8 +7,7 @@ import ServicesStore from '../../stores/ServicesStore';
7import Layout from '../../components/settings/SettingsLayout'; 7import Layout from '../../components/settings/SettingsLayout';
8import Navigation from '../../components/settings/navigation/SettingsNavigation'; 8import Navigation from '../../components/settings/navigation/SettingsNavigation';
9 9
10@inject('stores', 'actions') @observer 10export default @inject('stores', 'actions') @observer class SettingsContainer extends Component {
11export default class SettingsContainer extends Component {
12 render() { 11 render() {
13 const { children, stores } = this.props; 12 const { children, stores } = this.props;
14 const { closeSettings } = this.props.actions.ui; 13 const { closeSettings } = this.props.actions.ui;