diff options
author | Stefan Malzner <stefan@adlk.io> | 2018-01-11 10:41:34 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-01-11 10:41:34 +0100 |
commit | a4b665ef5f218313e524f0582d08cde6aa5d7049 (patch) | |
tree | 64f2a8046b544d98fe9125ea499c040f67482e01 /src/containers/settings | |
parent | Fix link to service request form (diff) | |
parent | Merge branch 'develop' of github.com:meetfranz/franz into develop (diff) | |
download | ferdium-app-a4b665ef5f218313e524f0582d08cde6aa5d7049.tar.gz ferdium-app-a4b665ef5f218313e524f0582d08cde6aa5d7049.tar.zst ferdium-app-a4b665ef5f218313e524f0582d08cde6aa5d7049.zip |
Merge pull request #561 from meetfranz/developv5.0.0-beta.15
Franz Beta 15
Diffstat (limited to 'src/containers/settings')
-rw-r--r-- | src/containers/settings/AccountScreen.js | 5 | ||||
-rw-r--r-- | src/containers/settings/EditServiceScreen.js | 36 | ||||
-rw-r--r-- | src/containers/settings/EditSettingsScreen.js | 29 | ||||
-rw-r--r-- | src/containers/settings/ServicesScreen.js | 1 |
4 files changed, 68 insertions, 3 deletions
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index a1ac8bda3..008c495d4 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js | |||
@@ -69,6 +69,7 @@ export default class AccountScreen extends Component { | |||
69 | render() { | 69 | render() { |
70 | const { user, payment, app } = this.props.stores; | 70 | const { user, payment, app } = this.props.stores; |
71 | const { openExternalUrl } = this.props.actions.app; | 71 | const { openExternalUrl } = this.props.actions.app; |
72 | const { user: userActions } = this.props.actions; | ||
72 | 73 | ||
73 | const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; | 74 | const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; |
74 | const isLoadingOrdersInfo = payment.ordersDataRequest.isExecuting; | 75 | const isLoadingOrdersInfo = payment.ordersDataRequest.isExecuting; |
@@ -89,6 +90,9 @@ export default class AccountScreen extends Component { | |||
89 | openExternalUrl={url => openExternalUrl({ url })} | 90 | openExternalUrl={url => openExternalUrl({ url })} |
90 | onCloseSubscriptionWindow={() => this.onCloseWindow()} | 91 | onCloseSubscriptionWindow={() => this.onCloseWindow()} |
91 | stopMiner={() => this.stopMiner()} | 92 | stopMiner={() => this.stopMiner()} |
93 | deleteAccount={userActions.delete} | ||
94 | isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} | ||
95 | isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError} | ||
92 | /> | 96 | /> |
93 | ); | 97 | ); |
94 | } | 98 | } |
@@ -109,6 +113,7 @@ AccountScreen.wrappedComponent.propTypes = { | |||
109 | }).isRequired, | 113 | }).isRequired, |
110 | user: PropTypes.shape({ | 114 | user: PropTypes.shape({ |
111 | update: PropTypes.func.isRequired, | 115 | update: PropTypes.func.isRequired, |
116 | delete: PropTypes.func.isRequired, | ||
112 | }).isRequired, | 117 | }).isRequired, |
113 | }).isRequired, | 118 | }).isRequired, |
114 | }; | 119 | }; |
diff --git a/src/containers/settings/EditServiceScreen.js b/src/containers/settings/EditServiceScreen.js index 191ef447b..c26195a1e 100644 --- a/src/containers/settings/EditServiceScreen.js +++ b/src/containers/settings/EditServiceScreen.js | |||
@@ -26,6 +26,10 @@ const messages = defineMessages({ | |||
26 | id: 'settings.service.form.enableNotification', | 26 | id: 'settings.service.form.enableNotification', |
27 | defaultMessage: '!!!Enable Notifications', | 27 | defaultMessage: '!!!Enable Notifications', |
28 | }, | 28 | }, |
29 | enableBadge: { | ||
30 | id: 'settings.service.form.enableBadge', | ||
31 | defaultMessage: '!!!Show unread message badges', | ||
32 | }, | ||
29 | enableAudio: { | 33 | enableAudio: { |
30 | id: 'settings.service.form.enableAudio', | 34 | id: 'settings.service.form.enableAudio', |
31 | defaultMessage: '!!!Enable audio', | 35 | defaultMessage: '!!!Enable audio', |
@@ -42,6 +46,10 @@ const messages = defineMessages({ | |||
42 | id: 'settings.service.form.indirectMessages', | 46 | id: 'settings.service.form.indirectMessages', |
43 | defaultMessage: '!!!Show message badge for all new messages', | 47 | defaultMessage: '!!!Show message badge for all new messages', |
44 | }, | 48 | }, |
49 | icon: { | ||
50 | id: 'settings.service.form.icon', | ||
51 | defaultMessage: '!!!Custom icon', | ||
52 | }, | ||
45 | }); | 53 | }); |
46 | 54 | ||
47 | @inject('stores', 'actions') @observer | 55 | @inject('stores', 'actions') @observer |
@@ -88,11 +96,22 @@ export default class EditServiceScreen extends Component { | |||
88 | value: service.isNotificationEnabled, | 96 | value: service.isNotificationEnabled, |
89 | default: true, | 97 | default: true, |
90 | }, | 98 | }, |
99 | isBadgeEnabled: { | ||
100 | label: intl.formatMessage(messages.enableBadge), | ||
101 | value: service.isBadgeEnabled, | ||
102 | default: true, | ||
103 | }, | ||
91 | isMuted: { | 104 | isMuted: { |
92 | label: intl.formatMessage(messages.enableAudio), | 105 | label: intl.formatMessage(messages.enableAudio), |
93 | value: !service.isMuted, | 106 | value: !service.isMuted, |
94 | default: true, | 107 | default: true, |
95 | }, | 108 | }, |
109 | customIcon: { | ||
110 | label: intl.formatMessage(messages.icon), | ||
111 | value: service.hasCustomUploadedIcon ? service.icon : false, | ||
112 | default: null, | ||
113 | type: 'file', | ||
114 | }, | ||
96 | }, | 115 | }, |
97 | }; | 116 | }; |
98 | 117 | ||
@@ -118,11 +137,22 @@ export default class EditServiceScreen extends Component { | |||
118 | }); | 137 | }); |
119 | } | 138 | } |
120 | 139 | ||
140 | // More fine grained and use case specific validation rules | ||
121 | if (recipe.hasTeamId && recipe.hasCustomUrl) { | 141 | if (recipe.hasTeamId && recipe.hasCustomUrl) { |
122 | config.fields.team.validate = [oneRequired(['team', 'customUrl'])]; | 142 | config.fields.team.validate = [oneRequired(['team', 'customUrl'])]; |
123 | config.fields.customUrl.validate = [url, oneRequired(['team', 'customUrl'])]; | 143 | config.fields.customUrl.validate = [url, oneRequired(['team', 'customUrl'])]; |
124 | } | 144 | } |
125 | 145 | ||
146 | // If a service can be hosted and has a teamId or customUrl | ||
147 | if (recipe.hasHostedOption && (recipe.hasTeamId || recipe.hasCustomUrl)) { | ||
148 | if (config.fields.team) { | ||
149 | config.fields.team.validate = []; | ||
150 | } | ||
151 | if (config.fields.customUrl) { | ||
152 | config.fields.customUrl.validate = [url]; | ||
153 | } | ||
154 | } | ||
155 | |||
126 | if (recipe.hasIndirectMessages) { | 156 | if (recipe.hasIndirectMessages) { |
127 | Object.assign(config.fields, { | 157 | Object.assign(config.fields, { |
128 | isIndirectMessageBadgeEnabled: { | 158 | isIndirectMessageBadgeEnabled: { |
@@ -179,6 +209,12 @@ export default class EditServiceScreen extends Component { | |||
179 | return (<div>Loading...</div>); | 209 | return (<div>Loading...</div>); |
180 | } | 210 | } |
181 | 211 | ||
212 | if (!recipe) { | ||
213 | return ( | ||
214 | <div>something went wrong</div> | ||
215 | ); | ||
216 | } | ||
217 | |||
182 | const form = this.prepareForm(recipe, service); | 218 | const form = this.prepareForm(recipe, service); |
183 | 219 | ||
184 | return ( | 220 | return ( |
diff --git a/src/containers/settings/EditSettingsScreen.js b/src/containers/settings/EditSettingsScreen.js index 62e255dab..1fa7ce8bc 100644 --- a/src/containers/settings/EditSettingsScreen.js +++ b/src/containers/settings/EditSettingsScreen.js | |||
@@ -43,6 +43,10 @@ const messages = defineMessages({ | |||
43 | id: 'settings.app.form.showDisabledServices', | 43 | id: 'settings.app.form.showDisabledServices', |
44 | defaultMessage: '!!!Display disabled services tabs', | 44 | defaultMessage: '!!!Display disabled services tabs', |
45 | }, | 45 | }, |
46 | showMessageBadgeWhenMuted: { | ||
47 | id: 'settings.app.form.showMessagesBadgesWhenMuted', | ||
48 | defaultMessage: '!!!Show unread message badge when notifications are disabled', | ||
49 | }, | ||
46 | enableSpellchecking: { | 50 | enableSpellchecking: { |
47 | id: 'settings.app.form.enableSpellchecking', | 51 | id: 'settings.app.form.enableSpellchecking', |
48 | defaultMessage: '!!!Enable spell checking', | 52 | defaultMessage: '!!!Enable spell checking', |
@@ -85,6 +89,7 @@ export default class EditSettingsScreen extends Component { | |||
85 | enableSystemTray: settingsData.enableSystemTray, | 89 | enableSystemTray: settingsData.enableSystemTray, |
86 | minimizeToSystemTray: settingsData.minimizeToSystemTray, | 90 | minimizeToSystemTray: settingsData.minimizeToSystemTray, |
87 | showDisabledServices: settingsData.showDisabledServices, | 91 | showDisabledServices: settingsData.showDisabledServices, |
92 | showMessageBadgeWhenMuted: settingsData.showMessageBadgeWhenMuted, | ||
88 | enableSpellchecking: settingsData.enableSpellchecking, | 93 | enableSpellchecking: settingsData.enableSpellchecking, |
89 | // spellcheckingLanguage: settingsData.spellcheckingLanguage, | 94 | // spellcheckingLanguage: settingsData.spellcheckingLanguage, |
90 | locale: settingsData.locale, | 95 | locale: settingsData.locale, |
@@ -104,7 +109,7 @@ export default class EditSettingsScreen extends Component { | |||
104 | const { intl } = this.context; | 109 | const { intl } = this.context; |
105 | 110 | ||
106 | const locales = []; | 111 | const locales = []; |
107 | Object.keys(APP_LOCALES).forEach((key) => { | 112 | Object.keys(APP_LOCALES).sort(Intl.Collator().compare).forEach((key) => { |
108 | locales.push({ | 113 | locales.push({ |
109 | value: key, | 114 | value: key, |
110 | label: APP_LOCALES[key], | 115 | label: APP_LOCALES[key], |
@@ -154,6 +159,11 @@ export default class EditSettingsScreen extends Component { | |||
154 | value: settings.all.showDisabledServices, | 159 | value: settings.all.showDisabledServices, |
155 | default: DEFAULT_APP_SETTINGS.showDisabledServices, | 160 | default: DEFAULT_APP_SETTINGS.showDisabledServices, |
156 | }, | 161 | }, |
162 | showMessageBadgeWhenMuted: { | ||
163 | label: intl.formatMessage(messages.showMessageBadgeWhenMuted), | ||
164 | value: settings.all.showMessageBadgeWhenMuted, | ||
165 | default: DEFAULT_APP_SETTINGS.showMessageBadgeWhenMuted, | ||
166 | }, | ||
157 | enableSpellchecking: { | 167 | enableSpellchecking: { |
158 | label: intl.formatMessage(messages.enableSpellchecking), | 168 | label: intl.formatMessage(messages.enableSpellchecking), |
159 | value: settings.all.enableSpellchecking, | 169 | value: settings.all.enableSpellchecking, |
@@ -183,8 +193,17 @@ export default class EditSettingsScreen extends Component { | |||
183 | } | 193 | } |
184 | 194 | ||
185 | render() { | 195 | render() { |
186 | const { updateStatus, updateStatusTypes } = this.props.stores.app; | 196 | const { |
187 | const { checkForUpdates, installUpdate } = this.props.actions.app; | 197 | updateStatus, |
198 | cacheSize, | ||
199 | updateStatusTypes, | ||
200 | isClearingAllCache, | ||
201 | } = this.props.stores.app; | ||
202 | const { | ||
203 | checkForUpdates, | ||
204 | installUpdate, | ||
205 | clearAllCache, | ||
206 | } = this.props.actions.app; | ||
188 | const form = this.prepareForm(); | 207 | const form = this.prepareForm(); |
189 | 208 | ||
190 | return ( | 209 | return ( |
@@ -197,6 +216,9 @@ export default class EditSettingsScreen extends Component { | |||
197 | noUpdateAvailable={updateStatus === updateStatusTypes.NOT_AVAILABLE} | 216 | noUpdateAvailable={updateStatus === updateStatusTypes.NOT_AVAILABLE} |
198 | updateIsReadyToInstall={updateStatus === updateStatusTypes.DOWNLOADED} | 217 | updateIsReadyToInstall={updateStatus === updateStatusTypes.DOWNLOADED} |
199 | onSubmit={d => this.onSubmit(d)} | 218 | onSubmit={d => this.onSubmit(d)} |
219 | cacheSize={cacheSize} | ||
220 | isClearingAllCache={isClearingAllCache} | ||
221 | onClearAllCache={clearAllCache} | ||
200 | /> | 222 | /> |
201 | ); | 223 | ); |
202 | } | 224 | } |
@@ -213,6 +235,7 @@ EditSettingsScreen.wrappedComponent.propTypes = { | |||
213 | launchOnStartup: PropTypes.func.isRequired, | 235 | launchOnStartup: PropTypes.func.isRequired, |
214 | checkForUpdates: PropTypes.func.isRequired, | 236 | checkForUpdates: PropTypes.func.isRequired, |
215 | installUpdate: PropTypes.func.isRequired, | 237 | installUpdate: PropTypes.func.isRequired, |
238 | clearAllCache: PropTypes.func.isRequired, | ||
216 | }).isRequired, | 239 | }).isRequired, |
217 | settings: PropTypes.shape({ | 240 | settings: PropTypes.shape({ |
218 | update: PropTypes.func.isRequired, | 241 | update: PropTypes.func.isRequired, |
diff --git a/src/containers/settings/ServicesScreen.js b/src/containers/settings/ServicesScreen.js index 8cfe5efbf..12db1bcd3 100644 --- a/src/containers/settings/ServicesScreen.js +++ b/src/containers/settings/ServicesScreen.js | |||
@@ -53,6 +53,7 @@ export default class ServicesScreen extends Component { | |||
53 | goTo={router.push} | 53 | goTo={router.push} |
54 | servicesRequestFailed={services.allServicesRequest.wasExecuted && services.allServicesRequest.isError} | 54 | servicesRequestFailed={services.allServicesRequest.wasExecuted && services.allServicesRequest.isError} |
55 | retryServicesRequest={() => services.allServicesRequest.reload()} | 55 | retryServicesRequest={() => services.allServicesRequest.reload()} |
56 | searchNeedle={services.filterNeedle} | ||
56 | /> | 57 | /> |
57 | ); | 58 | ); |
58 | } | 59 | } |