aboutsummaryrefslogtreecommitdiffstats
path: root/src/components/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/components/settings')
-rw-r--r--src/components/settings/account/AccountDashboard.js43
-rw-r--r--src/components/settings/navigation/SettingsNavigation.js25
-rw-r--r--src/components/settings/services/EditServiceForm.js31
-rw-r--r--src/components/settings/settings/EditSettingsForm.js168
-rw-r--r--src/components/settings/team/TeamDashboard.js6
5 files changed, 133 insertions, 140 deletions
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js
index 7d6bad883..5c3dc21d0 100644
--- a/src/components/settings/account/AccountDashboard.js
+++ b/src/components/settings/account/AccountDashboard.js
@@ -154,6 +154,7 @@ class AccountDashboard extends Component {
154 } 154 }
155 155
156 const isUsingWithoutAccount = server === LOCAL_SERVER; 156 const isUsingWithoutAccount = server === LOCAL_SERVER;
157 const isUsingFranzServer = server === 'https://api.franzinfra.com';
157 158
158 return ( 159 return (
159 <div className="settings__main"> 160 <div className="settings__main">
@@ -208,7 +209,7 @@ class AccountDashboard extends Component {
208 </div> 209 </div>
209 <div className="account__info"> 210 <div className="account__info">
210 <H1> 211 <H1>
211 <span className="username">{`${user.firstname} ${user.lastname}`}</span> 212 <span className="username">{`${user.firstname} ${isUsingFranzServer ? user.lastname : ''}`}</span>
212 {user.isPremium && ( 213 {user.isPremium && (
213 <> 214 <>
214 {' '} 215 {' '}
@@ -243,7 +244,7 @@ class AccountDashboard extends Component {
243 )} 244 )}
244 </div> 245 </div>
245 </div> 246 </div>
246 {user.isPremium && user.isSubscriptionOwner && ( 247 {user.isPremium && user.isSubscriptionOwner && isUsingFranzServer && (
247 <div className="account"> 248 <div className="account">
248 <div className="account__box"> 249 <div className="account__box">
249 <H2>{intl.formatMessage(messages.yourLicense)}</H2> 250 <H2>{intl.formatMessage(messages.yourLicense)}</H2>
@@ -322,25 +323,27 @@ class AccountDashboard extends Component {
322 </> 323 </>
323 )} 324 )}
324 325
325 <div className="account franz-form"> 326 {isUsingFranzServer && (
326 <div className="account__box"> 327 <div className="account franz-form">
327 <H2>{intl.formatMessage(messages.headlineDangerZone)}</H2> 328 <div className="account__box">
328 {!isDeleteAccountSuccessful && ( 329 <H2>{intl.formatMessage(messages.headlineDangerZone)}</H2>
329 <div className="account__subscription"> 330 {!isDeleteAccountSuccessful && (
330 <p>{intl.formatMessage(messages.deleteInfo)}</p> 331 <div className="account__subscription">
331 <Button 332 <p>{intl.formatMessage(messages.deleteInfo)}</p>
332 label={intl.formatMessage(messages.deleteAccount)} 333 <Button
333 buttonType="danger" 334 label={intl.formatMessage(messages.deleteAccount)}
334 onClick={() => deleteAccount()} 335 buttonType="danger"
335 loaded={!isLoadingDeleteAccount} 336 onClick={() => deleteAccount()}
336 /> 337 loaded={!isLoadingDeleteAccount}
337 </div> 338 />
338 )} 339 </div>
339 {isDeleteAccountSuccessful && ( 340 )}
340 <p>{intl.formatMessage(messages.deleteEmailSent)}</p> 341 {isDeleteAccountSuccessful && (
341 )} 342 <p>{intl.formatMessage(messages.deleteEmailSent)}</p>
343 )}
344 </div>
342 </div> 345 </div>
343 </div> 346 )}
344 </> 347 </>
345 )} 348 )}
346 </> 349 </>
diff --git a/src/components/settings/navigation/SettingsNavigation.js b/src/components/settings/navigation/SettingsNavigation.js
index eb3249fa0..6b03f05be 100644
--- a/src/components/settings/navigation/SettingsNavigation.js
+++ b/src/components/settings/navigation/SettingsNavigation.js
@@ -105,6 +105,7 @@ export default @inject('stores', 'actions') @observer class SettingsNavigation e
105 const { intl } = this.context; 105 const { intl } = this.context;
106 const isLoggedIn = Boolean(localStorage.getItem('authToken')); 106 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
107 const isUsingWithoutAccount = stores.settings.app.server === LOCAL_SERVER; 107 const isUsingWithoutAccount = stores.settings.app.server === LOCAL_SERVER;
108 const isUsingFranzServer = stores.settings.app.server === 'https://api.franzinfra.com';
108 109
109 return ( 110 return (
110 <div className="settings-navigation"> 111 <div className="settings-navigation">
@@ -154,17 +155,19 @@ export default @inject('stores', 'actions') @observer class SettingsNavigation e
154 > 155 >
155 {intl.formatMessage(messages.account)} 156 {intl.formatMessage(messages.account)}
156 </Link> 157 </Link>
157 <Link 158 {isUsingFranzServer && (
158 to="/settings/team" 159 <Link
159 className="settings-navigation__link" 160 to="/settings/team"
160 activeClassName="is-active" 161 className="settings-navigation__link"
161 disabled={!isLoggedIn} 162 activeClassName="is-active"
162 > 163 disabled={!isLoggedIn}
163 {intl.formatMessage(messages.team)} 164 >
164 {!user.data.isPremium && ( 165 {intl.formatMessage(messages.team)}
165 <ProBadge inverted={!isDarkThemeActive && router.location.pathname === '/settings/team'} /> 166 {!user.data.isPremium && (
166 )} 167 <ProBadge inverted={!isDarkThemeActive && router.location.pathname === '/settings/team'} />
167 </Link> 168 )}
169 </Link>
170 )}
168 <Link 171 <Link
169 to="/settings/app" 172 to="/settings/app"
170 className="settings-navigation__link" 173 className="settings-navigation__link"
diff --git a/src/components/settings/services/EditServiceForm.js b/src/components/settings/services/EditServiceForm.js
index 98051d78f..4fd1f99ef 100644
--- a/src/components/settings/services/EditServiceForm.js
+++ b/src/components/settings/services/EditServiceForm.js
@@ -12,6 +12,7 @@ import Service from '../../../models/Service';
12import Tabs, { TabItem } from '../../ui/Tabs'; 12import Tabs, { TabItem } from '../../ui/Tabs';
13import Input from '../../ui/Input'; 13import Input from '../../ui/Input';
14import Toggle from '../../ui/Toggle'; 14import Toggle from '../../ui/Toggle';
15import Slider from '../../ui/Slider';
15import Button from '../../ui/Button'; 16import Button from '../../ui/Button';
16import ImageUpload from '../../ui/ImageUpload'; 17import ImageUpload from '../../ui/ImageUpload';
17import Select from '../../ui/Select'; 18import Select from '../../ui/Select';
@@ -93,6 +94,10 @@ const messages = defineMessages({
93 id: 'settings.service.form.isMutedInfo', 94 id: 'settings.service.form.isMutedInfo',
94 defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted', 95 defaultMessage: '!!!When disabled, all notification sounds and audio playback are muted',
95 }, 96 },
97 disableHibernationInfo: {
98 id: 'settings.service.form.disableHibernationInfo',
99 defaultMessage: '!!!You currently have hibernation enabled but you can disable hibernation for individual services using this option.',
100 },
96 headlineNotifications: { 101 headlineNotifications: {
97 id: 'settings.service.form.headlineNotifications', 102 id: 'settings.service.form.headlineNotifications',
98 defaultMessage: '!!!Notifications', 103 defaultMessage: '!!!Notifications',
@@ -105,6 +110,10 @@ const messages = defineMessages({
105 id: 'settings.service.form.headlineGeneral', 110 id: 'settings.service.form.headlineGeneral',
106 defaultMessage: '!!!General', 111 defaultMessage: '!!!General',
107 }, 112 },
113 headlineDarkReaderSettings: {
114 id: 'settings.service.form.headlineDarkReaderSettings',
115 defaultMessage: '!!!DarkReader Settings',
116 },
108 iconDelete: { 117 iconDelete: {
109 id: 'settings.service.form.iconDelete', 118 id: 'settings.service.form.iconDelete',
110 defaultMessage: '!!!Delete', 119 defaultMessage: '!!!Delete',
@@ -149,6 +158,7 @@ export default @observer class EditServiceForm extends Component {
149 isProxyFeatureEnabled: PropTypes.bool.isRequired, 158 isProxyFeatureEnabled: PropTypes.bool.isRequired,
150 isServiceProxyIncludedInCurrentPlan: PropTypes.bool.isRequired, 159 isServiceProxyIncludedInCurrentPlan: PropTypes.bool.isRequired,
151 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired, 160 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired,
161 isHibernationFeatureActive: PropTypes.bool.isRequired,
152 }; 162 };
153 163
154 static defaultProps = { 164 static defaultProps = {
@@ -214,6 +224,7 @@ export default @observer class EditServiceForm extends Component {
214 isProxyFeatureEnabled, 224 isProxyFeatureEnabled,
215 isServiceProxyIncludedInCurrentPlan, 225 isServiceProxyIncludedInCurrentPlan,
216 isSpellcheckerIncludedInCurrentPlan, 226 isSpellcheckerIncludedInCurrentPlan,
227 isHibernationFeatureActive,
217 } = this.props; 228 } = this.props;
218 const { intl } = this.context; 229 const { intl } = this.context;
219 230
@@ -359,8 +370,26 @@ export default @observer class EditServiceForm extends Component {
359 370
360 <div className="settings__settings-group"> 371 <div className="settings__settings-group">
361 <h3>{intl.formatMessage(messages.headlineGeneral)}</h3> 372 <h3>{intl.formatMessage(messages.headlineGeneral)}</h3>
362 <Toggle field={form.$('isDarkModeEnabled')} />
363 <Toggle field={form.$('isEnabled')} /> 373 <Toggle field={form.$('isEnabled')} />
374 {isHibernationFeatureActive && (
375 <>
376 <Toggle field={form.$('disableHibernation')} />
377 <p className="settings__help">
378 {intl.formatMessage(messages.disableHibernationInfo)}
379 </p>
380 </>
381 )}
382 <Toggle field={form.$('isDarkModeEnabled')} />
383 {form.$('isDarkModeEnabled').value
384 && (
385 <>
386 <h3>{intl.formatMessage(messages.headlineDarkReaderSettings)}</h3>
387 <Slider field={form.$('darkReaderBrightness')} />
388 <Slider field={form.$('darkReaderContrast')} />
389 <Slider field={form.$('darkReaderSepia')} />
390 </>
391 )
392 }
364 </div> 393 </div>
365 </div> 394 </div>
366 <div className="service-icon"> 395 <div className="service-icon">
diff --git a/src/components/settings/settings/EditSettingsForm.js b/src/components/settings/settings/EditSettingsForm.js
index 9564d837b..e1c2a2d4f 100644
--- a/src/components/settings/settings/EditSettingsForm.js
+++ b/src/components/settings/settings/EditSettingsForm.js
@@ -12,21 +12,12 @@ import PremiumFeatureContainer from '../../ui/PremiumFeatureContainer';
12import Input from '../../ui/Input'; 12import Input from '../../ui/Input';
13 13
14import { FRANZ_TRANSLATION } from '../../../config'; 14import { FRANZ_TRANSLATION } from '../../../config';
15import { isMac } from '../../../environment'; 15import { isMac, isWindows } from '../../../environment';
16 16
17const { 17const {
18 systemPreferences, 18 systemPreferences,
19} = remote; 19} = remote;
20 20
21function escapeHtml(unsafe) {
22 return unsafe
23 .replace(/&/g, '&amp;')
24 .replace(/</g, '&lt;')
25 .replace(/>/g, '&gt;')
26 .replace(/"/g, '&quot;')
27 .replace(/'/g, '&#039;');
28}
29
30const messages = defineMessages({ 21const messages = defineMessages({
31 headline: { 22 headline: {
32 id: 'settings.app.headline', 23 id: 'settings.app.headline',
@@ -48,14 +39,6 @@ const messages = defineMessages({
48 id: 'settings.app.inactivityLockInfo', 39 id: 'settings.app.inactivityLockInfo',
49 defaultMessage: '!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable', 40 defaultMessage: '!!!Minutes of inactivity, after which Ferdi should automatically lock. Use 0 to disable',
50 }, 41 },
51 serverInfo: {
52 id: 'settings.app.serverInfo',
53 defaultMessage: '!!!We advice you to logout after changing your server as your settings might not be saved otherwise.',
54 },
55 serverMoneyInfo: {
56 id: 'settings.app.serverMoneyInfo',
57 defaultMessage: '!!!You are using the official Franz Server for Ferdi.\nWe know that Ferdi allows you to use all its features for free but you are still using Franz\'s server resources - which Franz\'s creator has to pay for.\nPlease still consider [Link 1]paying for a Franz account[/Link] or [Link 2]using a self-hosted ferdi-server[/Link] (if you have the knowledge and resources to do so). \nBy using Ferdi, you still profit greatly from Franz\'s recipe store, server resources and its development.',
58 },
59 todoServerInfo: { 42 todoServerInfo: {
60 id: 'settings.app.todoServerInfo', 43 id: 'settings.app.todoServerInfo',
61 defaultMessage: '!!!This server will be used for the "Franz Todo" feature. (default: https://app.franztodos.com)', 44 defaultMessage: '!!!This server will be used for the "Franz Todo" feature. (default: https://app.franztodos.com)',
@@ -173,12 +156,11 @@ export default @observer class EditSettingsForm extends Component {
173 cacheSize: PropTypes.string.isRequired, 156 cacheSize: PropTypes.string.isRequired,
174 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired, 157 isSpellcheckerIncludedInCurrentPlan: PropTypes.bool.isRequired,
175 isTodosEnabled: PropTypes.bool.isRequired, 158 isTodosEnabled: PropTypes.bool.isRequired,
159 isTodosActivated: PropTypes.bool.isRequired,
176 isWorkspaceEnabled: PropTypes.bool.isRequired, 160 isWorkspaceEnabled: PropTypes.bool.isRequired,
177 server: PropTypes.string.isRequired, 161 automaticUpdates: PropTypes.bool.isRequired,
178 noUpdates: PropTypes.bool.isRequired,
179 hibernationEnabled: PropTypes.bool.isRequired, 162 hibernationEnabled: PropTypes.bool.isRequired,
180 isDarkmodeEnabled: PropTypes.bool.isRequired, 163 isDarkmodeEnabled: PropTypes.bool.isRequired,
181 isTrayEnabled: PropTypes.bool.isRequired,
182 isAdaptableDarkModeEnabled: PropTypes.bool.isRequired, 164 isAdaptableDarkModeEnabled: PropTypes.bool.isRequired,
183 openProcessManager: PropTypes.func.isRequired, 165 openProcessManager: PropTypes.func.isRequired,
184 }; 166 };
@@ -214,12 +196,11 @@ export default @observer class EditSettingsForm extends Component {
214 isSpellcheckerIncludedInCurrentPlan, 196 isSpellcheckerIncludedInCurrentPlan,
215 isTodosEnabled, 197 isTodosEnabled,
216 isWorkspaceEnabled, 198 isWorkspaceEnabled,
217 server, 199 automaticUpdates,
218 noUpdates,
219 hibernationEnabled, 200 hibernationEnabled,
220 isDarkmodeEnabled, 201 isDarkmodeEnabled,
221 isTrayEnabled,
222 openProcessManager, 202 openProcessManager,
203 isTodosActivated,
223 } = this.props; 204 } = this.props;
224 const { intl } = this.context; 205 const { intl } = this.context;
225 206
@@ -232,8 +213,6 @@ export default @observer class EditSettingsForm extends Component {
232 updateButtonLabelMessage = messages.buttonSearchForUpdate; 213 updateButtonLabelMessage = messages.buttonSearchForUpdate;
233 } 214 }
234 215
235 const isLoggedIn = Boolean(localStorage.getItem('authToken'));
236
237 const { 216 const {
238 lockingFeatureEnabled, 217 lockingFeatureEnabled,
239 scheduledDNDEnabled, 218 scheduledDNDEnabled,
@@ -256,7 +235,7 @@ export default @observer class EditSettingsForm extends Component {
256 <Toggle field={form.$('runInBackground')} /> 235 <Toggle field={form.$('runInBackground')} />
257 <Toggle field={form.$('enableSystemTray')} /> 236 <Toggle field={form.$('enableSystemTray')} />
258 <Toggle field={form.$('reloadAfterResume')} /> 237 <Toggle field={form.$('reloadAfterResume')} />
259 {isTrayEnabled && <Toggle field={form.$('startMinimized')} />} 238 <Toggle field={form.$('startMinimized')} />
260 {process.platform === 'win32' && ( 239 {process.platform === 'win32' && (
261 <Toggle field={form.$('minimizeToSystemTray')} /> 240 <Toggle field={form.$('minimizeToSystemTray')} />
262 )} 241 )}
@@ -287,74 +266,41 @@ export default @observer class EditSettingsForm extends Component {
287 266
288 <Hr /> 267 <Hr />
289 268
290 <Input
291 placeholder="Server"
292 onChange={e => this.submit(e)}
293 field={form.$('server')}
294 autoFocus
295 />
296 {isLoggedIn && (
297 <p
298 className="settings__message"
299 style={{
300 borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem',
301 }}
302 >
303 { intl.formatMessage(messages.serverInfo) }
304 </p>
305 )}
306 {server === 'https://api.franzinfra.com' && (
307 <p
308 className="settings__message"
309 style={{
310 borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem',
311 }}
312 >
313 <span
314 dangerouslySetInnerHTML={{
315 __html:
316 // Needed to make links work
317 escapeHtml(
318 intl.formatMessage(messages.serverMoneyInfo),
319 ).replace('[Link 1]', '<a href="https://www.meetfranz.com/pricing" target="_blank">')
320 .replace('[Link 2]', '<a href="https://github.com/getferdi/server" target="_blank">')
321 .replace(/\[\/Link]/g, '</a>'),
322 }}
323 style={{
324 whiteSpace: 'pre-wrap',
325 }}
326 />
327 </p>
328 )}
329
330 <Hr />
331
332 {isWorkspaceEnabled && ( 269 {isWorkspaceEnabled && (
333 <Toggle field={form.$('keepAllWorkspacesLoaded')} /> 270 <Toggle field={form.$('keepAllWorkspacesLoaded')} />
334 )} 271 )}
335 272
336
337 <Hr /> 273 <Hr />
338 274
339 {isTodosEnabled && ( 275 {isTodosEnabled && (
340 <> 276 <>
341 <Toggle field={form.$('enableTodos')} /> 277 <Toggle field={form.$('enableTodos')} />
342 <Input 278 {isTodosActivated && (
343 placeholder="Todo Server" 279 <div>
344 onChange={e => this.submit(e)} 280 <Select field={form.$('predefinedTodoServer')} />
345 field={form.$('todoServer')} 281 {form.$('predefinedTodoServer').value === 'isUsingCustomTodoService' && (
346 /> 282 <div>
347 <p 283 <Input
348 className="settings__message" 284 placeholder="Todo Server"
349 style={{ 285 onChange={e => this.submit(e)}
350 borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem', 286 field={form.$('customTodoServer')}
351 }} 287 />
352 > 288 <p
353 { intl.formatMessage(messages.todoServerInfo) } 289 className="settings__message"
354 </p> 290 style={{
291 borderTop: 0, marginTop: 0, paddingTop: 0, marginBottom: '2rem',
292 }}
293 >
294 { intl.formatMessage(messages.todoServerInfo) }
295 </p>
296 </div>
297 )}
298 </div>
299 )}
355 </> 300 </>
356 )} 301 )}
357 302
303
358 <Hr /> 304 <Hr />
359 305
360 <Toggle field={form.$('lockingFeatureEnabled')} /> 306 <Toggle field={form.$('lockingFeatureEnabled')} />
@@ -455,10 +401,12 @@ export default @observer class EditSettingsForm extends Component {
455 <Toggle field={form.$('showDisabledServices')} /> 401 <Toggle field={form.$('showDisabledServices')} />
456 <Toggle field={form.$('showMessageBadgeWhenMuted')} /> 402 <Toggle field={form.$('showMessageBadgeWhenMuted')} />
457 403
404 {isMac && <Toggle field={form.$('showDragArea')} />}
405
458 <Hr /> 406 <Hr />
459 407
460 {isMac && <Toggle field={form.$('adaptableDarkMode')} />} 408 {(isMac || isWindows) && <Toggle field={form.$('adaptableDarkMode')} />}
461 {!(isMac && isAdaptableDarkModeEnabled) && <Toggle field={form.$('darkMode')} />} 409 {!((isMac || isWindows) && isAdaptableDarkModeEnabled) && <Toggle field={form.$('darkMode')} />}
462 {(isDarkmodeEnabled || isAdaptableDarkModeEnabled) && ( 410 {(isDarkmodeEnabled || isAdaptableDarkModeEnabled) && (
463 <> 411 <>
464 <Toggle field={form.$('universalDarkMode')} /> 412 <Toggle field={form.$('universalDarkMode')} />
@@ -555,36 +503,46 @@ export default @observer class EditSettingsForm extends Component {
555 503
556 {/* Updates */} 504 {/* Updates */}
557 <h2 id="updates">{intl.formatMessage(messages.headlineUpdates)}</h2> 505 <h2 id="updates">{intl.formatMessage(messages.headlineUpdates)}</h2>
558 {updateIsReadyToInstall ? ( 506 <Toggle field={form.$('automaticUpdates')} />
559 <Button 507 {automaticUpdates && (
560 label={intl.formatMessage(messages.buttonInstallUpdate)} 508 <div>
561 onClick={installUpdate} 509 <Toggle field={form.$('beta')} />
562 /> 510 {updateIsReadyToInstall ? (
563 ) : ( 511 <Button
564 <Button 512 label={intl.formatMessage(messages.buttonInstallUpdate)}
565 buttonType="secondary" 513 onClick={installUpdate}
566 label={intl.formatMessage(updateButtonLabelMessage)} 514 />
567 onClick={checkForUpdates} 515 ) : (
568 disabled={noUpdates || isCheckingForUpdates || isUpdateAvailable} 516 <Button
569 loaded={!isCheckingForUpdates || !isUpdateAvailable} 517 buttonType="secondary"
570 /> 518 label={intl.formatMessage(updateButtonLabelMessage)}
519 onClick={checkForUpdates}
520 disabled={!automaticUpdates || isCheckingForUpdates || isUpdateAvailable}
521 loaded={!isCheckingForUpdates || !isUpdateAvailable}
522 />
523 )}
524 <br />
525 </div>
571 )} 526 )}
572 <br />
573 <Toggle field={form.$('beta')} />
574 <Toggle field={form.$('noUpdates')} />
575 {intl.formatMessage(messages.currentVersion)} 527 {intl.formatMessage(messages.currentVersion)}
576 {' '} 528 {' '}
577 {remote.app.getVersion()} 529 {remote.app.getVersion()}
578 <br /> 530 {noUpdateAvailable && (
579 <br /> 531 <>
580 {noUpdateAvailable && intl.formatMessage(messages.updateStatusUpToDate)} 532 <br />
533 <br />
534 {intl.formatMessage(messages.updateStatusUpToDate)}
535 </>
536 )
537 }
581 <p className="settings__message"> 538 <p className="settings__message">
582
583 <span className="mdi mdi-github-face" /> 539 <span className="mdi mdi-github-face" />
584 <span> 540 <span>
541
585 Ferdi is based on 542 Ferdi is based on
586 {' '} 543 {' '}
587 <a href="https://github.com/meetfranz/franz" target="_blank">Franz</a> 544 <a href="https://github.com/meetfranz/franz" target="_blank">Franz</a>
545
588 , a project published 546 , a project published
589 under the 547 under the
590 {' '} 548 {' '}
diff --git a/src/components/settings/team/TeamDashboard.js b/src/components/settings/team/TeamDashboard.js
index 3d5358d89..72358d485 100644
--- a/src/components/settings/team/TeamDashboard.js
+++ b/src/components/settings/team/TeamDashboard.js
@@ -20,15 +20,15 @@ const messages = defineMessages({
20 }, 20 },
21 contentHeadline: { 21 contentHeadline: {
22 id: 'settings.team.contentHeadline', 22 id: 'settings.team.contentHeadline',
23 defaultMessage: '!!!Ferdi for Teams', 23 defaultMessage: '!!!Franz Team Management',
24 }, 24 },
25 intro: { 25 intro: {
26 id: 'settings.team.intro', 26 id: 'settings.team.intro',
27 defaultMessage: '!!!You and your team use Franz? You can now manage Premium subscriptions for as many colleagues, friends or family members as you want, all from within one account.', 27 defaultMessage: '!!!Your are currently using Franz Servers, which is why you have access to Team Management.',
28 }, 28 },
29 copy: { 29 copy: {
30 id: 'settings.team.copy', 30 id: 'settings.team.copy',
31 defaultMessage: '!!!Ferdi for Teams gives you the option to invite co-workers to your team by sending them email invitations and manage their subscriptions in your account’s preferences. Don’t waste time setting up subscriptions for every team member individually, forget about multiple invoices and different billing cycles - one team to rule them all!', 31 defaultMessage: '!!!Franz\'s Team Management allows you to manage Franz Subscriptions for multiple users. Please keep in mind that having a Franz Premium subscription will give you no advantages in using Ferdi: The only reason you still have access to Team Management is so you can manage your legacy Franz Teams and so that you don\'t loose any functionality in managing your account.',
32 }, 32 },
33 manageButton: { 33 manageButton: {
34 id: 'settings.team.manageAction', 34 id: 'settings.team.manageAction',