diff options
author | Stefan Malzner <stefan@adlk.io> | 2017-11-23 16:17:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-11-23 16:17:34 +0100 |
commit | abca425e4a7b63be93132067bc335e8b6b39c2b2 (patch) | |
tree | e386f3e5d4c1c1caff19e3555e7ed1ce93e625f6 /src/components/settings | |
parent | replace typeform (diff) | |
parent | Add windows notification fix to changelog (diff) | |
download | ferdium-app-abca425e4a7b63be93132067bc335e8b6b39c2b2.tar.gz ferdium-app-abca425e4a7b63be93132067bc335e8b6b39c2b2.tar.zst ferdium-app-abca425e4a7b63be93132067bc335e8b6b39c2b2.zip |
Merge pull request #330 from meetfranz/developv5.0.0-beta.14
Beta 14
Diffstat (limited to 'src/components/settings')
5 files changed, 103 insertions, 37 deletions
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js index 3b21a7765..fea8d682d 100644 --- a/src/components/settings/navigation/SettingsNavigation.js +++ b/src/components/settings/navigation/SettingsNavigation.js | |||
@@ -74,7 +74,6 @@ export default class SettingsNavigation extends Component { | |||
74 | <Link | 74 | <Link |
75 | to="/auth/logout" | 75 | to="/auth/logout" |
76 | className="settings-navigation__link" | 76 | className="settings-navigation__link" |
77 | activeClassName="is-active" | ||
78 | > | 77 | > |
79 | {intl.formatMessage(messages.logout)} | 78 | {intl.formatMessage(messages.logout)} |
80 | </Link> | 79 | </Link> |
diff --git a/src/components/settings/recipes/RecipesDashboard.js b/src/components/settings/recipes/RecipesDashboard.js index 02ea04e35..b6ade5da4 100644 --- a/src/components/settings/recipes/RecipesDashboard.js +++ b/src/components/settings/recipes/RecipesDashboard.js | |||
@@ -9,6 +9,7 @@ import Infobox from '../../ui/Infobox'; | |||
9 | import RecipeItem from './RecipeItem'; | 9 | import RecipeItem from './RecipeItem'; |
10 | import Loader from '../../ui/Loader'; | 10 | import Loader from '../../ui/Loader'; |
11 | import Appear from '../../ui/effects/Appear'; | 11 | import Appear from '../../ui/effects/Appear'; |
12 | import { FRANZ_SERVICE_REQUEST } from '../../../config'; | ||
12 | 13 | ||
13 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
14 | headline: { | 15 | headline: { |
@@ -35,6 +36,10 @@ const messages = defineMessages({ | |||
35 | id: 'settings.recipes.servicesSuccessfulAddedInfo', | 36 | id: 'settings.recipes.servicesSuccessfulAddedInfo', |
36 | defaultMessage: '!!!Service successfully added', | 37 | defaultMessage: '!!!Service successfully added', |
37 | }, | 38 | }, |
39 | missingService: { | ||
40 | id: 'settings.recipes.missingService', | ||
41 | defaultMessage: '!!!Missing a service?', | ||
42 | }, | ||
38 | }); | 43 | }); |
39 | 44 | ||
40 | @observer | 45 | @observer |
@@ -96,33 +101,39 @@ export default class RecipesDashboard extends Component { | |||
96 | </Infobox> | 101 | </Infobox> |
97 | </Appear> | 102 | </Appear> |
98 | )} | 103 | )} |
99 | {!searchNeedle && ( | 104 | {/* {!searchNeedle && ( */} |
100 | <div className="recipes__navigation"> | 105 | <div className="recipes__navigation"> |
101 | <Link | 106 | <Link |
102 | to="/settings/recipes" | 107 | to="/settings/recipes" |
103 | className="badge" | 108 | className="badge" |
104 | activeClassName="badge--primary" | 109 | activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`} |
105 | > | 110 | onClick={() => resetSearch()} |
106 | {intl.formatMessage(messages.mostPopularRecipes)} | 111 | > |
107 | </Link> | 112 | {intl.formatMessage(messages.mostPopularRecipes)} |
113 | </Link> | ||
114 | <Link | ||
115 | to="/settings/recipes/all" | ||
116 | className="badge" | ||
117 | activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`} | ||
118 | onClick={() => resetSearch()} | ||
119 | > | ||
120 | {intl.formatMessage(messages.allRecipes)} | ||
121 | </Link> | ||
122 | {devRecipesCount > 0 && ( | ||
108 | <Link | 123 | <Link |
109 | to="/settings/recipes/all" | 124 | to="/settings/recipes/dev" |
110 | className="badge" | 125 | className="badge" |
111 | activeClassName="badge--primary" | 126 | activeClassName={`${!searchNeedle ? 'badge--primary' : ''}`} |
127 | onClick={() => resetSearch()} | ||
112 | > | 128 | > |
113 | {intl.formatMessage(messages.allRecipes)} | 129 | {intl.formatMessage(messages.devRecipes)} ({devRecipesCount}) |
114 | </Link> | 130 | </Link> |
115 | {devRecipesCount > 0 && ( | 131 | )} |
116 | <Link | 132 | <a href={FRANZ_SERVICE_REQUEST} target="_blank" className="link recipes__service-request"> |
117 | to="/settings/recipes/dev" | 133 | {intl.formatMessage(messages.missingService)} <i className="mdi mdi-open-in-new" /> |
118 | className="badge" | 134 | </a> |
119 | activeClassName="badge--primary" | 135 | </div> |
120 | > | 136 | {/* )} */} |
121 | {intl.formatMessage(messages.devRecipes)} ({devRecipesCount}) | ||
122 | </Link> | ||
123 | )} | ||
124 | </div> | ||
125 | )} | ||
126 | {isLoading ? ( | 137 | {isLoading ? ( |
127 | <Loader /> | 138 | <Loader /> |
128 | ) : ( | 139 | ) : ( |
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js index 9b359a78e..36cefe87c 100644 --- a/src/components/settings/services/EditServiceForm.js +++ b/src/components/settings/services/EditServiceForm.js | |||
@@ -61,7 +61,11 @@ const messages = defineMessages({ | |||
61 | }, | 61 | }, |
62 | indirectMessageInfo: { | 62 | indirectMessageInfo: { |
63 | id: 'settings.service.form.indirectMessageInfo', | 63 | id: 'settings.service.form.indirectMessageInfo', |
64 | defaultMessage: '!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...', // eslint-disable-line | 64 | defaultMessage: '!!!You will be notified about all new messages in a channel, not just @username, @channel, @here, ...', |
65 | }, | ||
66 | isMutedInfo: { | ||
67 | id: 'settings.service.form.isMutedInfo', | ||
68 | defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted', | ||
65 | }, | 69 | }, |
66 | }); | 70 | }); |
67 | 71 | ||
@@ -110,7 +114,7 @@ export default class EditServiceForm extends Component { | |||
110 | if (recipe.validateUrl && values.customUrl) { | 114 | if (recipe.validateUrl && values.customUrl) { |
111 | this.setState({ isValidatingCustomUrl: true }); | 115 | this.setState({ isValidatingCustomUrl: true }); |
112 | try { | 116 | try { |
113 | values.customUrl = normalizeUrl(values.customUrl); | 117 | values.customUrl = normalizeUrl(values.customUrl, { stripWWW: false }); |
114 | isValid = await recipe.validateUrl(values.customUrl); | 118 | isValid = await recipe.validateUrl(values.customUrl); |
115 | } catch (err) { | 119 | } catch (err) { |
116 | console.warn('ValidateURL', err); | 120 | console.warn('ValidateURL', err); |
@@ -231,11 +235,15 @@ export default class EditServiceForm extends Component { | |||
231 | {recipe.hasIndirectMessages && ( | 235 | {recipe.hasIndirectMessages && ( |
232 | <div> | 236 | <div> |
233 | <Toggle field={form.$('isIndirectMessageBadgeEnabled')} /> | 237 | <Toggle field={form.$('isIndirectMessageBadgeEnabled')} /> |
234 | <p className="settings__indirect-message-help"> | 238 | <p className="settings__help"> |
235 | {intl.formatMessage(messages.indirectMessageInfo)} | 239 | {intl.formatMessage(messages.indirectMessageInfo)} |
236 | </p> | 240 | </p> |
237 | </div> | 241 | </div> |
238 | )} | 242 | )} |
243 | <Toggle field={form.$('isMuted')} /> | ||
244 | <p className="settings__help"> | ||
245 | {intl.formatMessage(messages.isMutedInfo)} | ||
246 | </p> | ||
239 | <Toggle field={form.$('isEnabled')} /> | 247 | <Toggle field={form.$('isEnabled')} /> |
240 | </div> | 248 | </div> |
241 | {recipe.message && ( | 249 | {recipe.message && ( |
diff --git a/src/components/settings/services/ServiceItem.js b/src/components/settings/services/ServiceItem.js index 20d8581d0..9743315b0 100644 --- a/src/components/settings/services/ServiceItem.js +++ b/src/components/settings/services/ServiceItem.js | |||
@@ -16,6 +16,10 @@ const messages = defineMessages({ | |||
16 | id: 'settings.services.tooltip.notificationsDisabled', | 16 | id: 'settings.services.tooltip.notificationsDisabled', |
17 | defaultMessage: '!!!Notifications are disabled', | 17 | defaultMessage: '!!!Notifications are disabled', |
18 | }, | 18 | }, |
19 | tooltipIsMuted: { | ||
20 | id: 'settings.services.tooltip.isMuted', | ||
21 | defaultMessage: '!!!All sounds are muted', | ||
22 | }, | ||
19 | }); | 23 | }); |
20 | 24 | ||
21 | @observer | 25 | @observer |
@@ -66,6 +70,17 @@ export default class ServiceItem extends Component { | |||
66 | className="service-table__column-info" | 70 | className="service-table__column-info" |
67 | onClick={goToServiceForm} | 71 | onClick={goToServiceForm} |
68 | > | 72 | > |
73 | {service.isMuted && ( | ||
74 | <span | ||
75 | className="mdi mdi-bell-off" | ||
76 | data-tip={intl.formatMessage(messages.tooltipIsMuted)} | ||
77 | /> | ||
78 | )} | ||
79 | </td> | ||
80 | <td | ||
81 | className="service-table__column-info" | ||
82 | onClick={goToServiceForm} | ||
83 | > | ||
69 | {!service.isEnabled && ( | 84 | {!service.isEnabled && ( |
70 | <span | 85 | <span |
71 | className="mdi mdi-power" | 86 | className="mdi mdi-power" |
@@ -85,13 +100,6 @@ export default class ServiceItem extends Component { | |||
85 | )} | 100 | )} |
86 | <ReactTooltip place="top" type="dark" effect="solid" /> | 101 | <ReactTooltip place="top" type="dark" effect="solid" /> |
87 | </td> | 102 | </td> |
88 | {/* <td className="service-table__column-action"> | ||
89 | <input | ||
90 | type="checkbox" | ||
91 | onChange={toggleAction} | ||
92 | checked={service.isEnabled} | ||
93 | /> | ||
94 | </td> */} | ||
95 | </tr> | 103 | </tr> |
96 | ); | 104 | ); |
97 | } | 105 | } |
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js index 5675fecf4..4ce9b7ab2 100644 --- a/src/components/settings/settings/EditSettingsForm.js +++ b/src/components/settings/settings/EditSettingsForm.js | |||
@@ -9,6 +9,8 @@ import Button from '../../ui/Button'; | |||
9 | import Toggle from '../../ui/Toggle'; | 9 | import Toggle from '../../ui/Toggle'; |
10 | import Select from '../../ui/Select'; | 10 | import Select from '../../ui/Select'; |
11 | 11 | ||
12 | import { FRANZ_TRANSLATION } from '../../../config'; | ||
13 | |||
12 | const messages = defineMessages({ | 14 | const messages = defineMessages({ |
13 | headline: { | 15 | headline: { |
14 | id: 'settings.app.headline', | 16 | id: 'settings.app.headline', |
@@ -26,6 +28,18 @@ const messages = defineMessages({ | |||
26 | id: 'settings.app.headlineUpdates', | 28 | id: 'settings.app.headlineUpdates', |
27 | defaultMessage: '!!!Updates', | 29 | defaultMessage: '!!!Updates', |
28 | }, | 30 | }, |
31 | headlineAppearance: { | ||
32 | id: 'settings.app.headlineAppearance', | ||
33 | defaultMessage: '!!!Appearance', | ||
34 | }, | ||
35 | headlineAdvanced: { | ||
36 | id: 'settings.app.headlineAdvanced', | ||
37 | defaultMessage: '!!!Advanced', | ||
38 | }, | ||
39 | translationHelp: { | ||
40 | id: 'settings.app.translationHelp', | ||
41 | defaultMessage: '!!!Help us to translate Franz into your language.', | ||
42 | }, | ||
29 | buttonSearchForUpdate: { | 43 | buttonSearchForUpdate: { |
30 | id: 'settings.app.buttonSearchForUpdate', | 44 | id: 'settings.app.buttonSearchForUpdate', |
31 | defaultMessage: '!!!Check for updates', | 45 | defaultMessage: '!!!Check for updates', |
@@ -50,6 +64,10 @@ const messages = defineMessages({ | |||
50 | id: 'settings.app.currentVersion', | 64 | id: 'settings.app.currentVersion', |
51 | defaultMessage: '!!!Current version:', | 65 | defaultMessage: '!!!Current version:', |
52 | }, | 66 | }, |
67 | restartRequired: { | ||
68 | id: 'settings.app.restartRequired', | ||
69 | defaultMessage: '!!!Changes require restart', | ||
70 | }, | ||
53 | }); | 71 | }); |
54 | 72 | ||
55 | @observer | 73 | @observer |
@@ -112,16 +130,38 @@ export default class EditSettingsForm extends Component { | |||
112 | onChange={e => this.submit(e)} | 130 | onChange={e => this.submit(e)} |
113 | id="form" | 131 | id="form" |
114 | > | 132 | > |
115 | <h2>{intl.formatMessage(messages.headlineGeneral)}</h2> | 133 | {/* General */} |
134 | <h2 id="general">{intl.formatMessage(messages.headlineGeneral)}</h2> | ||
116 | <Toggle field={form.$('autoLaunchOnStart')} /> | 135 | <Toggle field={form.$('autoLaunchOnStart')} /> |
117 | <Toggle field={form.$('runInBackground')} /> | 136 | <Toggle field={form.$('runInBackground')} /> |
118 | <Toggle field={form.$('enableSystemTray')} /> | 137 | <Toggle field={form.$('enableSystemTray')} /> |
119 | {process.platform === 'win32' && ( | 138 | {process.platform === 'win32' && ( |
120 | <Toggle field={form.$('minimizeToSystemTray')} /> | 139 | <Toggle field={form.$('minimizeToSystemTray')} /> |
121 | )} | 140 | )} |
122 | <h2>{intl.formatMessage(messages.headlineLanguage)}</h2> | 141 | |
142 | {/* Appearance */} | ||
143 | <h2 id="apperance">{intl.formatMessage(messages.headlineAppearance)}</h2> | ||
144 | <Toggle field={form.$('showDisabledServices')} /> | ||
145 | |||
146 | {/* Language */} | ||
147 | <h2 id="language">{intl.formatMessage(messages.headlineLanguage)}</h2> | ||
123 | <Select field={form.$('locale')} showLabel={false} /> | 148 | <Select field={form.$('locale')} showLabel={false} /> |
124 | <h2>{intl.formatMessage(messages.headlineUpdates)}</h2> | 149 | <a |
150 | href={FRANZ_TRANSLATION} | ||
151 | target="_blank" | ||
152 | className="link" | ||
153 | > | ||
154 | {intl.formatMessage(messages.translationHelp)} <i className="mdi mdi-open-in-new" /> | ||
155 | </a> | ||
156 | |||
157 | {/* Advanced */} | ||
158 | <h2 id="advanced">{intl.formatMessage(messages.headlineAdvanced)}</h2> | ||
159 | <Toggle field={form.$('enableSpellchecking')} /> | ||
160 | <p className="settings__help">{intl.formatMessage(messages.restartRequired)}</p> | ||
161 | {/* <Select field={form.$('spellcheckingLanguage')} /> */} | ||
162 | |||
163 | {/* Updates */} | ||
164 | <h2 id="updates">{intl.formatMessage(messages.headlineUpdates)}</h2> | ||
125 | {updateIsReadyToInstall ? ( | 165 | {updateIsReadyToInstall ? ( |
126 | <Button | 166 | <Button |
127 | label={intl.formatMessage(messages.buttonInstallUpdate)} | 167 | label={intl.formatMessage(messages.buttonInstallUpdate)} |