diff options
author | Amine Mouafik <amine@mouafik.fr> | 2019-12-18 15:49:26 +0100 |
---|---|---|
committer | Amine Mouafik <amine@mouafik.fr> | 2019-12-18 15:49:26 +0100 |
commit | fffa3875f888aef2109dc7d91dc681069786fc0b (patch) | |
tree | c96b67b275d8ebae6f793a0455a75ae8edc87d3c /src | |
parent | Update Electron and Sentry for latest fixes (diff) | |
download | ferdium-app-fffa3875f888aef2109dc7d91dc681069786fc0b.tar.gz ferdium-app-fffa3875f888aef2109dc7d91dc681069786fc0b.tar.zst ferdium-app-fffa3875f888aef2109dc7d91dc681069786fc0b.zip |
Better handling of account settings (if using without account)
Diffstat (limited to 'src')
-rw-r--r-- | src/components/settings/account/AccountDashboard.js | 316 | ||||
-rw-r--r-- | src/containers/settings/AccountScreen.js | 37 | ||||
-rw-r--r-- | src/i18n/locales/defaultMessages.json | 98 | ||||
-rw-r--r-- | src/i18n/locales/en-US.json | 2 | ||||
-rw-r--r-- | src/i18n/messages/src/components/settings/account/AccountDashboard.json | 98 |
5 files changed, 335 insertions, 216 deletions
diff --git a/src/components/settings/account/AccountDashboard.js b/src/components/settings/account/AccountDashboard.js index 83dc34a52..7d6bad883 100644 --- a/src/components/settings/account/AccountDashboard.js +++ b/src/components/settings/account/AccountDashboard.js | |||
@@ -3,9 +3,7 @@ import PropTypes from 'prop-types'; | |||
3 | import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; | 3 | import { observer, PropTypes as MobxPropTypes } from 'mobx-react'; |
4 | import { defineMessages, intlShape } from 'react-intl'; | 4 | import { defineMessages, intlShape } from 'react-intl'; |
5 | import ReactTooltip from 'react-tooltip'; | 5 | import ReactTooltip from 'react-tooltip'; |
6 | import { | 6 | import { ProBadge, H1, H2 } from '@meetfranz/ui'; |
7 | ProBadge, H1, H2, | ||
8 | } from '@meetfranz/ui'; | ||
9 | import moment from 'moment'; | 7 | import moment from 'moment'; |
10 | 8 | ||
11 | import Loader from '../../ui/Loader'; | 9 | import Loader from '../../ui/Loader'; |
@@ -13,6 +11,7 @@ import Button from '../../ui/Button'; | |||
13 | import Infobox from '../../ui/Infobox'; | 11 | import Infobox from '../../ui/Infobox'; |
14 | import SubscriptionForm from '../../../containers/subscription/SubscriptionFormScreen'; | 12 | import SubscriptionForm from '../../../containers/subscription/SubscriptionFormScreen'; |
15 | import { i18nPlanName } from '../../../helpers/plan-helpers'; | 13 | import { i18nPlanName } from '../../../helpers/plan-helpers'; |
14 | import { LOCAL_SERVER } from '../../../config'; | ||
16 | 15 | ||
17 | const messages = defineMessages({ | 16 | const messages = defineMessages({ |
18 | headline: { | 17 | headline: { |
@@ -69,11 +68,13 @@ const messages = defineMessages({ | |||
69 | }, | 68 | }, |
70 | deleteInfo: { | 69 | deleteInfo: { |
71 | id: 'settings.account.deleteInfo', | 70 | id: 'settings.account.deleteInfo', |
72 | defaultMessage: '!!!If you don\'t need your Ferdi account any longer, you can delete your account and all related data here.', | 71 | defaultMessage: |
72 | "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", | ||
73 | }, | 73 | }, |
74 | deleteEmailSent: { | 74 | deleteEmailSent: { |
75 | id: 'settings.account.deleteEmailSent', | 75 | id: 'settings.account.deleteEmailSent', |
76 | defaultMessage: '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!', | 76 | defaultMessage: |
77 | '!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!', | ||
77 | }, | 78 | }, |
78 | trial: { | 79 | trial: { |
79 | id: 'settings.account.trial', | 80 | id: 'settings.account.trial', |
@@ -89,7 +90,16 @@ const messages = defineMessages({ | |||
89 | }, | 90 | }, |
90 | trialUpdateBillingInformation: { | 91 | trialUpdateBillingInformation: { |
91 | id: 'settings.account.trialUpdateBillingInfo', | 92 | id: 'settings.account.trialUpdateBillingInfo', |
92 | defaultMessage: '!!!Please update your billing info to continue using {license} after your trial period.', | 93 | defaultMessage: |
94 | '!!!Please update your billing info to continue using {license} after your trial period.', | ||
95 | }, | ||
96 | accountUnavailable: { | ||
97 | id: 'settings.account.accountUnavailable', | ||
98 | defaultMessage: 'Account is unavailable', | ||
99 | }, | ||
100 | accountUnavailableInfo: { | ||
101 | id: 'settings.account.accountUnavailableInfo', | ||
102 | defaultMessage: 'You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.', | ||
93 | }, | 103 | }, |
94 | }); | 104 | }); |
95 | 105 | ||
@@ -110,6 +120,7 @@ class AccountDashboard extends Component { | |||
110 | upgradeToPro: PropTypes.func.isRequired, | 120 | upgradeToPro: PropTypes.func.isRequired, |
111 | openInvoices: PropTypes.func.isRequired, | 121 | openInvoices: PropTypes.func.isRequired, |
112 | onCloseSubscriptionWindow: PropTypes.func.isRequired, | 122 | onCloseSubscriptionWindow: PropTypes.func.isRequired, |
123 | server: PropTypes.string.isRequired, | ||
113 | }; | 124 | }; |
114 | 125 | ||
115 | static contextTypes = { | 126 | static contextTypes = { |
@@ -132,6 +143,7 @@ class AccountDashboard extends Component { | |||
132 | upgradeToPro, | 143 | upgradeToPro, |
133 | openInvoices, | 144 | openInvoices, |
134 | onCloseSubscriptionWindow, | 145 | onCloseSubscriptionWindow, |
146 | server, | ||
135 | } = this.props; | 147 | } = this.props; |
136 | const { intl } = this.context; | 148 | const { intl } = this.context; |
137 | 149 | ||
@@ -141,6 +153,8 @@ class AccountDashboard extends Component { | |||
141 | planName = i18nPlanName(user.team.plan, intl); | 153 | planName = i18nPlanName(user.team.plan, intl); |
142 | } | 154 | } |
143 | 155 | ||
156 | const isUsingWithoutAccount = server === LOCAL_SERVER; | ||
157 | |||
144 | return ( | 158 | return ( |
145 | <div className="settings__main"> | 159 | <div className="settings__main"> |
146 | <div className="settings__header"> | 160 | <div className="settings__header"> |
@@ -149,154 +163,186 @@ class AccountDashboard extends Component { | |||
149 | </span> | 163 | </span> |
150 | </div> | 164 | </div> |
151 | <div className="settings__body"> | 165 | <div className="settings__body"> |
152 | {isLoading && ( | 166 | {isUsingWithoutAccount && ( |
153 | <Loader /> | 167 | <> |
168 | <h1 style={{ marginBottom: 0 }}> | ||
169 | {intl.formatMessage(messages.accountUnavailable)} | ||
170 | </h1> | ||
171 | <p | ||
172 | className="settings__message" | ||
173 | style={{ | ||
174 | borderTop: 0, | ||
175 | marginTop: 0, | ||
176 | }} | ||
177 | > | ||
178 | {intl.formatMessage(messages.accountUnavailableInfo)} | ||
179 | </p> | ||
180 | </> | ||
154 | )} | 181 | )} |
182 | {!isUsingWithoutAccount && ( | ||
183 | <> | ||
184 | {isLoading && <Loader />} | ||
155 | 185 | ||
156 | {!isLoading && userInfoRequestFailed && ( | 186 | {!isLoading && userInfoRequestFailed && ( |
157 | <Infobox | 187 | <Infobox |
158 | icon="alert" | 188 | icon="alert" |
159 | type="danger" | 189 | type="danger" |
160 | ctaLabel={intl.formatMessage(messages.tryReloadUserInfoRequest)} | 190 | ctaLabel={intl.formatMessage( |
161 | ctaLoading={isLoading} | 191 | messages.tryReloadUserInfoRequest, |
162 | ctaOnClick={retryUserInfoRequest} | 192 | )} |
163 | > | 193 | ctaLoading={isLoading} |
164 | {intl.formatMessage(messages.userInfoRequestFailed)} | 194 | ctaOnClick={retryUserInfoRequest} |
165 | </Infobox> | 195 | > |
166 | )} | 196 | {intl.formatMessage(messages.userInfoRequestFailed)} |
197 | </Infobox> | ||
198 | )} | ||
167 | 199 | ||
168 | {!userInfoRequestFailed && ( | 200 | {!userInfoRequestFailed && ( |
169 | <> | ||
170 | {!isLoading && ( | ||
171 | <> | 201 | <> |
172 | <div className="account"> | 202 | {!isLoading && ( |
173 | <div className="account__box account__box--flex"> | 203 | <> |
174 | <div className="account__avatar"> | 204 | <div className="account"> |
175 | <img | 205 | <div className="account__box account__box--flex"> |
176 | src="./assets/images/logo.svg" | 206 | <div className="account__avatar"> |
177 | alt="" | 207 | <img src="./assets/images/logo.svg" alt="" /> |
178 | /> | 208 | </div> |
179 | </div> | 209 | <div className="account__info"> |
180 | <div className="account__info"> | 210 | <H1> |
181 | <H1> | 211 | <span className="username">{`${user.firstname} ${user.lastname}`}</span> |
182 | <span className="username">{`${user.firstname} ${user.lastname}`}</span> | 212 | {user.isPremium && ( |
183 | {user.isPremium && ( | 213 | <> |
184 | <> | 214 | {' '} |
185 | {' '} | 215 | <ProBadge /> |
186 | <ProBadge /> | 216 | </> |
187 | </> | 217 | )} |
188 | )} | 218 | </H1> |
189 | </H1> | 219 | <p> |
190 | <p> | 220 | {user.organization && `${user.organization}, `} |
191 | {user.organization && `${user.organization}, `} | 221 | {user.email} |
192 | {user.email} | 222 | </p> |
193 | </p> | 223 | {user.isPremium && ( |
194 | {user.isPremium && ( | 224 | <div className="manage-user-links"> |
195 | <div className="manage-user-links"> | 225 | <Button |
226 | label={intl.formatMessage( | ||
227 | messages.accountEditButton, | ||
228 | )} | ||
229 | className="franz-form__button--inverted" | ||
230 | onClick={openEditAccount} | ||
231 | /> | ||
232 | </div> | ||
233 | )} | ||
234 | </div> | ||
235 | {!user.isPremium && ( | ||
196 | <Button | 236 | <Button |
197 | label={intl.formatMessage(messages.accountEditButton)} | 237 | label={intl.formatMessage( |
238 | messages.accountEditButton, | ||
239 | )} | ||
198 | className="franz-form__button--inverted" | 240 | className="franz-form__button--inverted" |
199 | onClick={openEditAccount} | 241 | onClick={openEditAccount} |
200 | /> | 242 | /> |
201 | </div> | ||
202 | )} | ||
203 | </div> | ||
204 | {!user.isPremium && ( | ||
205 | <Button | ||
206 | label={intl.formatMessage(messages.accountEditButton)} | ||
207 | className="franz-form__button--inverted" | ||
208 | onClick={openEditAccount} | ||
209 | /> | ||
210 | )} | ||
211 | </div> | ||
212 | </div> | ||
213 | {user.isPremium && user.isSubscriptionOwner && ( | ||
214 | <div className="account"> | ||
215 | <div className="account__box"> | ||
216 | <H2> | ||
217 | {intl.formatMessage(messages.yourLicense)} | ||
218 | </H2> | ||
219 | <p> | ||
220 | Franz | ||
221 | {' '} | ||
222 | {isPremiumOverrideUser ? 'Premium' : planName} | ||
223 | {user.team.isTrial && ( | ||
224 | <> | ||
225 | {' – '} | ||
226 | {intl.formatMessage(messages.trial)} | ||
227 | </> | ||
228 | )} | 243 | )} |
229 | </p> | 244 | </div> |
230 | {user.team.isTrial && ( | 245 | </div> |
231 | <> | 246 | {user.isPremium && user.isSubscriptionOwner && ( |
232 | <br /> | 247 | <div className="account"> |
233 | <p> | 248 | <div className="account__box"> |
234 | {intl.formatMessage(messages.trialEndsIn, { | 249 | <H2>{intl.formatMessage(messages.yourLicense)}</H2> |
235 | duration: moment.duration(moment().diff(user.team.trialEnd)).humanize(), | ||
236 | })} | ||
237 | </p> | ||
238 | <p> | 250 | <p> |
239 | {intl.formatMessage(messages.trialUpdateBillingInformation, { | 251 | Franz |
240 | license: planName, | 252 | {' '} |
241 | })} | 253 | {isPremiumOverrideUser ? 'Premium' : planName} |
254 | {user.team.isTrial && ( | ||
255 | <> | ||
256 | {' – '} | ||
257 | {intl.formatMessage(messages.trial)} | ||
258 | </> | ||
259 | )} | ||
242 | </p> | 260 | </p> |
243 | </> | 261 | {user.team.isTrial && ( |
244 | )} | 262 | <> |
245 | {!isProUser && ( | 263 | <br /> |
246 | <div className="manage-user-links"> | 264 | <p> |
247 | <Button | 265 | {intl.formatMessage(messages.trialEndsIn, { |
248 | label={intl.formatMessage(messages.upgradeAccountToPro)} | 266 | duration: moment |
249 | className="franz-form__button--primary" | 267 | .duration( |
250 | onClick={upgradeToPro} | 268 | moment().diff(user.team.trialEnd), |
269 | ) | ||
270 | .humanize(), | ||
271 | })} | ||
272 | </p> | ||
273 | <p> | ||
274 | {intl.formatMessage( | ||
275 | messages.trialUpdateBillingInformation, | ||
276 | { | ||
277 | license: planName, | ||
278 | }, | ||
279 | )} | ||
280 | </p> | ||
281 | </> | ||
282 | )} | ||
283 | {!isProUser && ( | ||
284 | <div className="manage-user-links"> | ||
285 | <Button | ||
286 | label={intl.formatMessage( | ||
287 | messages.upgradeAccountToPro, | ||
288 | )} | ||
289 | className="franz-form__button--primary" | ||
290 | onClick={upgradeToPro} | ||
291 | /> | ||
292 | </div> | ||
293 | )} | ||
294 | <div className="manage-user-links"> | ||
295 | <Button | ||
296 | label={intl.formatMessage( | ||
297 | messages.manageSubscriptionButtonLabel, | ||
298 | )} | ||
299 | className="franz-form__button--inverted" | ||
300 | onClick={openBilling} | ||
301 | /> | ||
302 | <Button | ||
303 | label={intl.formatMessage( | ||
304 | messages.invoicesButton, | ||
305 | )} | ||
306 | className="franz-form__button--inverted" | ||
307 | onClick={openInvoices} | ||
308 | /> | ||
309 | </div> | ||
310 | </div> | ||
311 | </div> | ||
312 | )} | ||
313 | {!user.isPremium && ( | ||
314 | <div className="account franz-form"> | ||
315 | <div className="account__box"> | ||
316 | <SubscriptionForm | ||
317 | onCloseWindow={onCloseSubscriptionWindow} | ||
251 | /> | 318 | /> |
252 | </div> | 319 | </div> |
253 | )} | 320 | </div> |
254 | <div className="manage-user-links"> | 321 | )} |
255 | <Button | 322 | </> |
256 | label={intl.formatMessage(messages.manageSubscriptionButtonLabel)} | 323 | )} |
257 | className="franz-form__button--inverted" | 324 | |
258 | onClick={openBilling} | 325 | <div className="account franz-form"> |
259 | /> | 326 | <div className="account__box"> |
327 | <H2>{intl.formatMessage(messages.headlineDangerZone)}</H2> | ||
328 | {!isDeleteAccountSuccessful && ( | ||
329 | <div className="account__subscription"> | ||
330 | <p>{intl.formatMessage(messages.deleteInfo)}</p> | ||
260 | <Button | 331 | <Button |
261 | label={intl.formatMessage(messages.invoicesButton)} | 332 | label={intl.formatMessage(messages.deleteAccount)} |
262 | className="franz-form__button--inverted" | 333 | buttonType="danger" |
263 | onClick={openInvoices} | 334 | onClick={() => deleteAccount()} |
335 | loaded={!isLoadingDeleteAccount} | ||
264 | /> | 336 | /> |
265 | </div> | 337 | </div> |
266 | </div> | 338 | )} |
267 | </div> | 339 | {isDeleteAccountSuccessful && ( |
268 | )} | 340 | <p>{intl.formatMessage(messages.deleteEmailSent)}</p> |
269 | {!user.isPremium && ( | 341 | )} |
270 | <div className="account franz-form"> | ||
271 | <div className="account__box"> | ||
272 | <SubscriptionForm | ||
273 | onCloseWindow={onCloseSubscriptionWindow} | ||
274 | /> | ||
275 | </div> | ||
276 | </div> | 342 | </div> |
277 | )} | 343 | </div> |
278 | </> | 344 | </> |
279 | )} | 345 | )} |
280 | |||
281 | <div className="account franz-form"> | ||
282 | <div className="account__box"> | ||
283 | <H2>{intl.formatMessage(messages.headlineDangerZone)}</H2> | ||
284 | {!isDeleteAccountSuccessful && ( | ||
285 | <div className="account__subscription"> | ||
286 | <p>{intl.formatMessage(messages.deleteInfo)}</p> | ||
287 | <Button | ||
288 | label={intl.formatMessage(messages.deleteAccount)} | ||
289 | buttonType="danger" | ||
290 | onClick={() => deleteAccount()} | ||
291 | loaded={!isLoadingDeleteAccount} | ||
292 | /> | ||
293 | </div> | ||
294 | )} | ||
295 | {isDeleteAccountSuccessful && ( | ||
296 | <p>{intl.formatMessage(messages.deleteEmailSent)}</p> | ||
297 | )} | ||
298 | </div> | ||
299 | </div> | ||
300 | </> | 346 | </> |
301 | )} | 347 | )} |
302 | </div> | 348 | </div> |
diff --git a/src/containers/settings/AccountScreen.js b/src/containers/settings/AccountScreen.js index 93ab44690..12c912bac 100644 --- a/src/containers/settings/AccountScreen.js +++ b/src/containers/settings/AccountScreen.js | |||
@@ -6,12 +6,16 @@ import PaymentStore from '../../stores/PaymentStore'; | |||
6 | import UserStore from '../../stores/UserStore'; | 6 | import UserStore from '../../stores/UserStore'; |
7 | import AppStore from '../../stores/AppStore'; | 7 | import AppStore from '../../stores/AppStore'; |
8 | import FeaturesStore from '../../stores/FeaturesStore'; | 8 | import FeaturesStore from '../../stores/FeaturesStore'; |
9 | import SettingsStore from '../../stores/SettingsStore'; | ||
9 | 10 | ||
10 | import AccountDashboard from '../../components/settings/account/AccountDashboard'; | 11 | import AccountDashboard from '../../components/settings/account/AccountDashboard'; |
11 | import ErrorBoundary from '../../components/util/ErrorBoundary'; | 12 | import ErrorBoundary from '../../components/util/ErrorBoundary'; |
12 | import { WEBSITE } from '../../environment'; | 13 | import { WEBSITE } from '../../environment'; |
13 | 14 | ||
14 | export default @inject('stores', 'actions') @observer class AccountScreen extends Component { | 15 | export default |
16 | @inject('stores', 'actions') | ||
17 | @observer | ||
18 | class AccountScreen extends Component { | ||
15 | onCloseWindow() { | 19 | onCloseWindow() { |
16 | const { user, features } = this.props.stores; | 20 | const { user, features } = this.props.stores; |
17 | user.getUserInfoRequest.invalidate({ immediately: true }); | 21 | user.getUserInfoRequest.invalidate({ immediately: true }); |
@@ -32,7 +36,9 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
32 | 36 | ||
33 | let url; | 37 | let url; |
34 | if (api === 'https://api.franzinfra.com') { | 38 | if (api === 'https://api.franzinfra.com') { |
35 | url = stores.user.getAuthURL(`${WEBSITE}${route}?utm_source=app&utm_medium=account_dashboard`); | 39 | url = stores.user.getAuthURL( |
40 | `${WEBSITE}${route}?utm_source=app&utm_medium=account_dashboard`, | ||
41 | ); | ||
36 | } else { | 42 | } else { |
37 | url = `${api}${route}`; | 43 | url = `${api}${route}`; |
38 | } | 44 | } |
@@ -41,11 +47,13 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
41 | } | 47 | } |
42 | 48 | ||
43 | render() { | 49 | render() { |
44 | const { user, payment, features } = this.props.stores; | ||
45 | const { | 50 | const { |
46 | user: userActions, | 51 | user, |
47 | payment: paymentActions, | 52 | payment, |
48 | } = this.props.actions; | 53 | features, |
54 | settings, | ||
55 | } = this.props.stores; | ||
56 | const { user: userActions, payment: paymentActions } = this.props.actions; | ||
49 | 57 | ||
50 | const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; | 58 | const isLoadingUserInfo = user.getUserInfoRequest.isExecuting; |
51 | const isLoadingPlans = payment.plansRequest.isExecuting; | 59 | const isLoadingPlans = payment.plansRequest.isExecuting; |
@@ -55,19 +63,29 @@ export default @inject('stores', 'actions') @observer class AccountScreen extend | |||
55 | return ( | 63 | return ( |
56 | <ErrorBoundary> | 64 | <ErrorBoundary> |
57 | <AccountDashboard | 65 | <AccountDashboard |
66 | server={settings.all.app.server} | ||
58 | user={user.data} | 67 | user={user.data} |
59 | isPremiumOverrideUser={user.isPremiumOverride} | 68 | isPremiumOverrideUser={user.isPremiumOverride} |
60 | isProUser={user.isPro} | 69 | isProUser={user.isPro} |
61 | isLoading={isLoadingUserInfo} | 70 | isLoading={isLoadingUserInfo} |
62 | isLoadingPlans={isLoadingPlans} | 71 | isLoadingPlans={isLoadingPlans} |
63 | userInfoRequestFailed={user.getUserInfoRequest.wasExecuted && user.getUserInfoRequest.isError} | 72 | userInfoRequestFailed={ |
73 | user.getUserInfoRequest.wasExecuted | ||
74 | && user.getUserInfoRequest.isError | ||
75 | } | ||
64 | retryUserInfoRequest={() => this.reloadData()} | 76 | retryUserInfoRequest={() => this.reloadData()} |
65 | onCloseSubscriptionWindow={() => this.onCloseWindow()} | 77 | onCloseSubscriptionWindow={() => this.onCloseWindow()} |
66 | deleteAccount={userActions.delete} | 78 | deleteAccount={userActions.delete} |
67 | isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} | 79 | isLoadingDeleteAccount={user.deleteAccountRequest.isExecuting} |
68 | isDeleteAccountSuccessful={user.deleteAccountRequest.wasExecuted && !user.deleteAccountRequest.isError} | 80 | isDeleteAccountSuccessful={ |
81 | user.deleteAccountRequest.wasExecuted | ||
82 | && !user.deleteAccountRequest.isError | ||
83 | } | ||
69 | openEditAccount={() => this.handleWebsiteLink('/user/profile')} | 84 | openEditAccount={() => this.handleWebsiteLink('/user/profile')} |
70 | upgradeToPro={() => upgradeAccount({ planId: features.features.pricingConfig.plans.pro.yearly.id })} | 85 | upgradeToPro={() => upgradeAccount({ |
86 | planId: features.features.pricingConfig.plans.pro.yearly.id, | ||
87 | }) | ||
88 | } | ||
71 | openBilling={() => this.handleWebsiteLink('/user/billing')} | 89 | openBilling={() => this.handleWebsiteLink('/user/billing')} |
72 | openInvoices={() => this.handleWebsiteLink('/user/invoices')} | 90 | openInvoices={() => this.handleWebsiteLink('/user/invoices')} |
73 | /> | 91 | /> |
@@ -81,6 +99,7 @@ AccountScreen.wrappedComponent.propTypes = { | |||
81 | user: PropTypes.instanceOf(UserStore).isRequired, | 99 | user: PropTypes.instanceOf(UserStore).isRequired, |
82 | features: PropTypes.instanceOf(FeaturesStore).isRequired, | 100 | features: PropTypes.instanceOf(FeaturesStore).isRequired, |
83 | payment: PropTypes.instanceOf(PaymentStore).isRequired, | 101 | payment: PropTypes.instanceOf(PaymentStore).isRequired, |
102 | settings: PropTypes.instanceOf(SettingsStore).isRequired, | ||
84 | app: PropTypes.instanceOf(AppStore).isRequired, | 103 | app: PropTypes.instanceOf(AppStore).isRequired, |
85 | }).isRequired, | 104 | }).isRequired, |
86 | actions: PropTypes.shape({ | 105 | actions: PropTypes.shape({ |
diff --git a/src/i18n/locales/defaultMessages.json b/src/i18n/locales/defaultMessages.json index cc60891c3..429930278 100644 --- a/src/i18n/locales/defaultMessages.json +++ b/src/i18n/locales/defaultMessages.json | |||
@@ -1533,169 +1533,169 @@ | |||
1533 | "defaultMessage": "!!!Account", | 1533 | "defaultMessage": "!!!Account", |
1534 | "end": { | 1534 | "end": { |
1535 | "column": 3, | 1535 | "column": 3, |
1536 | "line": 21 | 1536 | "line": 20 |
1537 | }, | 1537 | }, |
1538 | "file": "src/components/settings/account/AccountDashboard.js", | 1538 | "file": "src/components/settings/account/AccountDashboard.js", |
1539 | "id": "settings.account.headline", | 1539 | "id": "settings.account.headline", |
1540 | "start": { | 1540 | "start": { |
1541 | "column": 12, | 1541 | "column": 12, |
1542 | "line": 18 | 1542 | "line": 17 |
1543 | } | 1543 | } |
1544 | }, | 1544 | }, |
1545 | { | 1545 | { |
1546 | "defaultMessage": "!!!Your Subscription", | 1546 | "defaultMessage": "!!!Your Subscription", |
1547 | "end": { | 1547 | "end": { |
1548 | "column": 3, | 1548 | "column": 3, |
1549 | "line": 25 | 1549 | "line": 24 |
1550 | }, | 1550 | }, |
1551 | "file": "src/components/settings/account/AccountDashboard.js", | 1551 | "file": "src/components/settings/account/AccountDashboard.js", |
1552 | "id": "settings.account.headlineSubscription", | 1552 | "id": "settings.account.headlineSubscription", |
1553 | "start": { | 1553 | "start": { |
1554 | "column": 24, | 1554 | "column": 24, |
1555 | "line": 22 | 1555 | "line": 21 |
1556 | } | 1556 | } |
1557 | }, | 1557 | }, |
1558 | { | 1558 | { |
1559 | "defaultMessage": "!!Danger Zone", | 1559 | "defaultMessage": "!!Danger Zone", |
1560 | "end": { | 1560 | "end": { |
1561 | "column": 3, | 1561 | "column": 3, |
1562 | "line": 29 | 1562 | "line": 28 |
1563 | }, | 1563 | }, |
1564 | "file": "src/components/settings/account/AccountDashboard.js", | 1564 | "file": "src/components/settings/account/AccountDashboard.js", |
1565 | "id": "settings.account.headlineDangerZone", | 1565 | "id": "settings.account.headlineDangerZone", |
1566 | "start": { | 1566 | "start": { |
1567 | "column": 22, | 1567 | "column": 22, |
1568 | "line": 26 | 1568 | "line": 25 |
1569 | } | 1569 | } |
1570 | }, | 1570 | }, |
1571 | { | 1571 | { |
1572 | "defaultMessage": "!!!Manage your subscription", | 1572 | "defaultMessage": "!!!Manage your subscription", |
1573 | "end": { | 1573 | "end": { |
1574 | "column": 3, | 1574 | "column": 3, |
1575 | "line": 33 | 1575 | "line": 32 |
1576 | }, | 1576 | }, |
1577 | "file": "src/components/settings/account/AccountDashboard.js", | 1577 | "file": "src/components/settings/account/AccountDashboard.js", |
1578 | "id": "settings.account.manageSubscription.label", | 1578 | "id": "settings.account.manageSubscription.label", |
1579 | "start": { | 1579 | "start": { |
1580 | "column": 33, | 1580 | "column": 33, |
1581 | "line": 30 | 1581 | "line": 29 |
1582 | } | 1582 | } |
1583 | }, | 1583 | }, |
1584 | { | 1584 | { |
1585 | "defaultMessage": "!!!Upgrade to Franz Professional", | 1585 | "defaultMessage": "!!!Upgrade to Franz Professional", |
1586 | "end": { | 1586 | "end": { |
1587 | "column": 3, | 1587 | "column": 3, |
1588 | "line": 37 | 1588 | "line": 36 |
1589 | }, | 1589 | }, |
1590 | "file": "src/components/settings/account/AccountDashboard.js", | 1590 | "file": "src/components/settings/account/AccountDashboard.js", |
1591 | "id": "settings.account.upgradeToPro.label", | 1591 | "id": "settings.account.upgradeToPro.label", |
1592 | "start": { | 1592 | "start": { |
1593 | "column": 23, | 1593 | "column": 23, |
1594 | "line": 34 | 1594 | "line": 33 |
1595 | } | 1595 | } |
1596 | }, | 1596 | }, |
1597 | { | 1597 | { |
1598 | "defaultMessage": "!!!Basic Account", | 1598 | "defaultMessage": "!!!Basic Account", |
1599 | "end": { | 1599 | "end": { |
1600 | "column": 3, | 1600 | "column": 3, |
1601 | "line": 41 | 1601 | "line": 40 |
1602 | }, | 1602 | }, |
1603 | "file": "src/components/settings/account/AccountDashboard.js", | 1603 | "file": "src/components/settings/account/AccountDashboard.js", |
1604 | "id": "settings.account.accountType.basic", | 1604 | "id": "settings.account.accountType.basic", |
1605 | "start": { | 1605 | "start": { |
1606 | "column": 20, | 1606 | "column": 20, |
1607 | "line": 38 | 1607 | "line": 37 |
1608 | } | 1608 | } |
1609 | }, | 1609 | }, |
1610 | { | 1610 | { |
1611 | "defaultMessage": "!!!Premium Supporter Account", | 1611 | "defaultMessage": "!!!Premium Supporter Account", |
1612 | "end": { | 1612 | "end": { |
1613 | "column": 3, | 1613 | "column": 3, |
1614 | "line": 45 | 1614 | "line": 44 |
1615 | }, | 1615 | }, |
1616 | "file": "src/components/settings/account/AccountDashboard.js", | 1616 | "file": "src/components/settings/account/AccountDashboard.js", |
1617 | "id": "settings.account.accountType.premium", | 1617 | "id": "settings.account.accountType.premium", |
1618 | "start": { | 1618 | "start": { |
1619 | "column": 22, | 1619 | "column": 22, |
1620 | "line": 42 | 1620 | "line": 41 |
1621 | } | 1621 | } |
1622 | }, | 1622 | }, |
1623 | { | 1623 | { |
1624 | "defaultMessage": "!!!Edit Account", | 1624 | "defaultMessage": "!!!Edit Account", |
1625 | "end": { | 1625 | "end": { |
1626 | "column": 3, | 1626 | "column": 3, |
1627 | "line": 49 | 1627 | "line": 48 |
1628 | }, | 1628 | }, |
1629 | "file": "src/components/settings/account/AccountDashboard.js", | 1629 | "file": "src/components/settings/account/AccountDashboard.js", |
1630 | "id": "settings.account.account.editButton", | 1630 | "id": "settings.account.account.editButton", |
1631 | "start": { | 1631 | "start": { |
1632 | "column": 21, | 1632 | "column": 21, |
1633 | "line": 46 | 1633 | "line": 45 |
1634 | } | 1634 | } |
1635 | }, | 1635 | }, |
1636 | { | 1636 | { |
1637 | "defaultMessage": "!!Invoices", | 1637 | "defaultMessage": "!!Invoices", |
1638 | "end": { | 1638 | "end": { |
1639 | "column": 3, | 1639 | "column": 3, |
1640 | "line": 53 | 1640 | "line": 52 |
1641 | }, | 1641 | }, |
1642 | "file": "src/components/settings/account/AccountDashboard.js", | 1642 | "file": "src/components/settings/account/AccountDashboard.js", |
1643 | "id": "settings.account.headlineInvoices", | 1643 | "id": "settings.account.headlineInvoices", |
1644 | "start": { | 1644 | "start": { |
1645 | "column": 18, | 1645 | "column": 18, |
1646 | "line": 50 | 1646 | "line": 49 |
1647 | } | 1647 | } |
1648 | }, | 1648 | }, |
1649 | { | 1649 | { |
1650 | "defaultMessage": "!!!Download", | 1650 | "defaultMessage": "!!!Download", |
1651 | "end": { | 1651 | "end": { |
1652 | "column": 3, | 1652 | "column": 3, |
1653 | "line": 57 | 1653 | "line": 56 |
1654 | }, | 1654 | }, |
1655 | "file": "src/components/settings/account/AccountDashboard.js", | 1655 | "file": "src/components/settings/account/AccountDashboard.js", |
1656 | "id": "settings.account.invoiceDownload", | 1656 | "id": "settings.account.invoiceDownload", |
1657 | "start": { | 1657 | "start": { |
1658 | "column": 19, | 1658 | "column": 19, |
1659 | "line": 54 | 1659 | "line": 53 |
1660 | } | 1660 | } |
1661 | }, | 1661 | }, |
1662 | { | 1662 | { |
1663 | "defaultMessage": "!!!Could not load user information", | 1663 | "defaultMessage": "!!!Could not load user information", |
1664 | "end": { | 1664 | "end": { |
1665 | "column": 3, | 1665 | "column": 3, |
1666 | "line": 61 | 1666 | "line": 60 |
1667 | }, | 1667 | }, |
1668 | "file": "src/components/settings/account/AccountDashboard.js", | 1668 | "file": "src/components/settings/account/AccountDashboard.js", |
1669 | "id": "settings.account.userInfoRequestFailed", | 1669 | "id": "settings.account.userInfoRequestFailed", |
1670 | "start": { | 1670 | "start": { |
1671 | "column": 25, | 1671 | "column": 25, |
1672 | "line": 58 | 1672 | "line": 57 |
1673 | } | 1673 | } |
1674 | }, | 1674 | }, |
1675 | { | 1675 | { |
1676 | "defaultMessage": "!!!Try again", | 1676 | "defaultMessage": "!!!Try again", |
1677 | "end": { | 1677 | "end": { |
1678 | "column": 3, | 1678 | "column": 3, |
1679 | "line": 65 | 1679 | "line": 64 |
1680 | }, | 1680 | }, |
1681 | "file": "src/components/settings/account/AccountDashboard.js", | 1681 | "file": "src/components/settings/account/AccountDashboard.js", |
1682 | "id": "settings.account.tryReloadUserInfoRequest", | 1682 | "id": "settings.account.tryReloadUserInfoRequest", |
1683 | "start": { | 1683 | "start": { |
1684 | "column": 28, | 1684 | "column": 28, |
1685 | "line": 62 | 1685 | "line": 61 |
1686 | } | 1686 | } |
1687 | }, | 1687 | }, |
1688 | { | 1688 | { |
1689 | "defaultMessage": "!!!Delete account", | 1689 | "defaultMessage": "!!!Delete account", |
1690 | "end": { | 1690 | "end": { |
1691 | "column": 3, | 1691 | "column": 3, |
1692 | "line": 69 | 1692 | "line": 68 |
1693 | }, | 1693 | }, |
1694 | "file": "src/components/settings/account/AccountDashboard.js", | 1694 | "file": "src/components/settings/account/AccountDashboard.js", |
1695 | "id": "settings.account.deleteAccount", | 1695 | "id": "settings.account.deleteAccount", |
1696 | "start": { | 1696 | "start": { |
1697 | "column": 17, | 1697 | "column": 17, |
1698 | "line": 66 | 1698 | "line": 65 |
1699 | } | 1699 | } |
1700 | }, | 1700 | }, |
1701 | { | 1701 | { |
@@ -1708,14 +1708,14 @@ | |||
1708 | "id": "settings.account.deleteInfo", | 1708 | "id": "settings.account.deleteInfo", |
1709 | "start": { | 1709 | "start": { |
1710 | "column": 14, | 1710 | "column": 14, |
1711 | "line": 70 | 1711 | "line": 69 |
1712 | } | 1712 | } |
1713 | }, | 1713 | }, |
1714 | { | 1714 | { |
1715 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 1715 | "defaultMessage": "!!!You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", |
1716 | "end": { | 1716 | "end": { |
1717 | "column": 3, | 1717 | "column": 3, |
1718 | "line": 77 | 1718 | "line": 78 |
1719 | }, | 1719 | }, |
1720 | "file": "src/components/settings/account/AccountDashboard.js", | 1720 | "file": "src/components/settings/account/AccountDashboard.js", |
1721 | "id": "settings.account.deleteEmailSent", | 1721 | "id": "settings.account.deleteEmailSent", |
@@ -1728,52 +1728,78 @@ | |||
1728 | "defaultMessage": "!!!Free Trial", | 1728 | "defaultMessage": "!!!Free Trial", |
1729 | "end": { | 1729 | "end": { |
1730 | "column": 3, | 1730 | "column": 3, |
1731 | "line": 81 | 1731 | "line": 82 |
1732 | }, | 1732 | }, |
1733 | "file": "src/components/settings/account/AccountDashboard.js", | 1733 | "file": "src/components/settings/account/AccountDashboard.js", |
1734 | "id": "settings.account.trial", | 1734 | "id": "settings.account.trial", |
1735 | "start": { | 1735 | "start": { |
1736 | "column": 9, | 1736 | "column": 9, |
1737 | "line": 78 | 1737 | "line": 79 |
1738 | } | 1738 | } |
1739 | }, | 1739 | }, |
1740 | { | 1740 | { |
1741 | "defaultMessage": "!!!Your Franz License:", | 1741 | "defaultMessage": "!!!Your Franz License:", |
1742 | "end": { | 1742 | "end": { |
1743 | "column": 3, | 1743 | "column": 3, |
1744 | "line": 85 | 1744 | "line": 86 |
1745 | }, | 1745 | }, |
1746 | "file": "src/components/settings/account/AccountDashboard.js", | 1746 | "file": "src/components/settings/account/AccountDashboard.js", |
1747 | "id": "settings.account.yourLicense", | 1747 | "id": "settings.account.yourLicense", |
1748 | "start": { | 1748 | "start": { |
1749 | "column": 15, | 1749 | "column": 15, |
1750 | "line": 82 | 1750 | "line": 83 |
1751 | } | 1751 | } |
1752 | }, | 1752 | }, |
1753 | { | 1753 | { |
1754 | "defaultMessage": "!!!Your free trial ends in {duration}.", | 1754 | "defaultMessage": "!!!Your free trial ends in {duration}.", |
1755 | "end": { | 1755 | "end": { |
1756 | "column": 3, | 1756 | "column": 3, |
1757 | "line": 89 | 1757 | "line": 90 |
1758 | }, | 1758 | }, |
1759 | "file": "src/components/settings/account/AccountDashboard.js", | 1759 | "file": "src/components/settings/account/AccountDashboard.js", |
1760 | "id": "settings.account.trialEndsIn", | 1760 | "id": "settings.account.trialEndsIn", |
1761 | "start": { | 1761 | "start": { |
1762 | "column": 15, | 1762 | "column": 15, |
1763 | "line": 86 | 1763 | "line": 87 |
1764 | } | 1764 | } |
1765 | }, | 1765 | }, |
1766 | { | 1766 | { |
1767 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", | 1767 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", |
1768 | "end": { | 1768 | "end": { |
1769 | "column": 3, | 1769 | "column": 3, |
1770 | "line": 93 | 1770 | "line": 95 |
1771 | }, | 1771 | }, |
1772 | "file": "src/components/settings/account/AccountDashboard.js", | 1772 | "file": "src/components/settings/account/AccountDashboard.js", |
1773 | "id": "settings.account.trialUpdateBillingInfo", | 1773 | "id": "settings.account.trialUpdateBillingInfo", |
1774 | "start": { | 1774 | "start": { |
1775 | "column": 33, | 1775 | "column": 33, |
1776 | "line": 90 | 1776 | "line": 91 |
1777 | } | ||
1778 | }, | ||
1779 | { | ||
1780 | "defaultMessage": "Account is unavailable", | ||
1781 | "end": { | ||
1782 | "column": 3, | ||
1783 | "line": 99 | ||
1784 | }, | ||
1785 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1786 | "id": "settings.account.accountUnavailable", | ||
1787 | "start": { | ||
1788 | "column": 22, | ||
1789 | "line": 96 | ||
1790 | } | ||
1791 | }, | ||
1792 | { | ||
1793 | "defaultMessage": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", | ||
1794 | "end": { | ||
1795 | "column": 3, | ||
1796 | "line": 103 | ||
1797 | }, | ||
1798 | "file": "src/components/settings/account/AccountDashboard.js", | ||
1799 | "id": "settings.account.accountUnavailableInfo", | ||
1800 | "start": { | ||
1801 | "column": 26, | ||
1802 | "line": 100 | ||
1777 | } | 1803 | } |
1778 | } | 1804 | } |
1779 | ], | 1805 | ], |
diff --git a/src/i18n/locales/en-US.json b/src/i18n/locales/en-US.json index e586cb852..ee85566bb 100644 --- a/src/i18n/locales/en-US.json +++ b/src/i18n/locales/en-US.json | |||
@@ -224,6 +224,8 @@ | |||
224 | "settings.account.account.editButton": "Edit account", | 224 | "settings.account.account.editButton": "Edit account", |
225 | "settings.account.accountType.basic": "Basic Account", | 225 | "settings.account.accountType.basic": "Basic Account", |
226 | "settings.account.accountType.premium": "Premium Supporter Account", | 226 | "settings.account.accountType.premium": "Premium Supporter Account", |
227 | "settings.account.accountUnavailable": "Account is unavailable", | ||
228 | "settings.account.accountUnavailableInfo": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", | ||
227 | "settings.account.buttonSave": "Update profile", | 229 | "settings.account.buttonSave": "Update profile", |
228 | "settings.account.deleteAccount": "Delete account", | 230 | "settings.account.deleteAccount": "Delete account", |
229 | "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", | 231 | "settings.account.deleteEmailSent": "You have received an email with a link to confirm your account deletion. Your account and data cannot be restored!", |
diff --git a/src/i18n/messages/src/components/settings/account/AccountDashboard.json b/src/i18n/messages/src/components/settings/account/AccountDashboard.json index 48078c18d..f0bb087d6 100644 --- a/src/i18n/messages/src/components/settings/account/AccountDashboard.json +++ b/src/i18n/messages/src/components/settings/account/AccountDashboard.json | |||
@@ -4,11 +4,11 @@ | |||
4 | "defaultMessage": "!!!Account", | 4 | "defaultMessage": "!!!Account", |
5 | "file": "src/components/settings/account/AccountDashboard.js", | 5 | "file": "src/components/settings/account/AccountDashboard.js", |
6 | "start": { | 6 | "start": { |
7 | "line": 18, | 7 | "line": 17, |
8 | "column": 12 | 8 | "column": 12 |
9 | }, | 9 | }, |
10 | "end": { | 10 | "end": { |
11 | "line": 21, | 11 | "line": 20, |
12 | "column": 3 | 12 | "column": 3 |
13 | } | 13 | } |
14 | }, | 14 | }, |
@@ -17,11 +17,11 @@ | |||
17 | "defaultMessage": "!!!Your Subscription", | 17 | "defaultMessage": "!!!Your Subscription", |
18 | "file": "src/components/settings/account/AccountDashboard.js", | 18 | "file": "src/components/settings/account/AccountDashboard.js", |
19 | "start": { | 19 | "start": { |
20 | "line": 22, | 20 | "line": 21, |
21 | "column": 24 | 21 | "column": 24 |
22 | }, | 22 | }, |
23 | "end": { | 23 | "end": { |
24 | "line": 25, | 24 | "line": 24, |
25 | "column": 3 | 25 | "column": 3 |
26 | } | 26 | } |
27 | }, | 27 | }, |
@@ -30,11 +30,11 @@ | |||
30 | "defaultMessage": "!!Danger Zone", | 30 | "defaultMessage": "!!Danger Zone", |
31 | "file": "src/components/settings/account/AccountDashboard.js", | 31 | "file": "src/components/settings/account/AccountDashboard.js", |
32 | "start": { | 32 | "start": { |
33 | "line": 26, | 33 | "line": 25, |
34 | "column": 22 | 34 | "column": 22 |
35 | }, | 35 | }, |
36 | "end": { | 36 | "end": { |
37 | "line": 29, | 37 | "line": 28, |
38 | "column": 3 | 38 | "column": 3 |
39 | } | 39 | } |
40 | }, | 40 | }, |
@@ -43,11 +43,11 @@ | |||
43 | "defaultMessage": "!!!Manage your subscription", | 43 | "defaultMessage": "!!!Manage your subscription", |
44 | "file": "src/components/settings/account/AccountDashboard.js", | 44 | "file": "src/components/settings/account/AccountDashboard.js", |
45 | "start": { | 45 | "start": { |
46 | "line": 30, | 46 | "line": 29, |
47 | "column": 33 | 47 | "column": 33 |
48 | }, | 48 | }, |
49 | "end": { | 49 | "end": { |
50 | "line": 33, | 50 | "line": 32, |
51 | "column": 3 | 51 | "column": 3 |
52 | } | 52 | } |
53 | }, | 53 | }, |
@@ -56,11 +56,11 @@ | |||
56 | "defaultMessage": "!!!Upgrade to Franz Professional", | 56 | "defaultMessage": "!!!Upgrade to Franz Professional", |
57 | "file": "src/components/settings/account/AccountDashboard.js", | 57 | "file": "src/components/settings/account/AccountDashboard.js", |
58 | "start": { | 58 | "start": { |
59 | "line": 34, | 59 | "line": 33, |
60 | "column": 23 | 60 | "column": 23 |
61 | }, | 61 | }, |
62 | "end": { | 62 | "end": { |
63 | "line": 37, | 63 | "line": 36, |
64 | "column": 3 | 64 | "column": 3 |
65 | } | 65 | } |
66 | }, | 66 | }, |
@@ -69,11 +69,11 @@ | |||
69 | "defaultMessage": "!!!Basic Account", | 69 | "defaultMessage": "!!!Basic Account", |
70 | "file": "src/components/settings/account/AccountDashboard.js", | 70 | "file": "src/components/settings/account/AccountDashboard.js", |
71 | "start": { | 71 | "start": { |
72 | "line": 38, | 72 | "line": 37, |
73 | "column": 20 | 73 | "column": 20 |
74 | }, | 74 | }, |
75 | "end": { | 75 | "end": { |
76 | "line": 41, | 76 | "line": 40, |
77 | "column": 3 | 77 | "column": 3 |
78 | } | 78 | } |
79 | }, | 79 | }, |
@@ -82,11 +82,11 @@ | |||
82 | "defaultMessage": "!!!Premium Supporter Account", | 82 | "defaultMessage": "!!!Premium Supporter Account", |
83 | "file": "src/components/settings/account/AccountDashboard.js", | 83 | "file": "src/components/settings/account/AccountDashboard.js", |
84 | "start": { | 84 | "start": { |
85 | "line": 42, | 85 | "line": 41, |
86 | "column": 22 | 86 | "column": 22 |
87 | }, | 87 | }, |
88 | "end": { | 88 | "end": { |
89 | "line": 45, | 89 | "line": 44, |
90 | "column": 3 | 90 | "column": 3 |
91 | } | 91 | } |
92 | }, | 92 | }, |
@@ -95,11 +95,11 @@ | |||
95 | "defaultMessage": "!!!Edit Account", | 95 | "defaultMessage": "!!!Edit Account", |
96 | "file": "src/components/settings/account/AccountDashboard.js", | 96 | "file": "src/components/settings/account/AccountDashboard.js", |
97 | "start": { | 97 | "start": { |
98 | "line": 46, | 98 | "line": 45, |
99 | "column": 21 | 99 | "column": 21 |
100 | }, | 100 | }, |
101 | "end": { | 101 | "end": { |
102 | "line": 49, | 102 | "line": 48, |
103 | "column": 3 | 103 | "column": 3 |
104 | } | 104 | } |
105 | }, | 105 | }, |
@@ -108,11 +108,11 @@ | |||
108 | "defaultMessage": "!!Invoices", | 108 | "defaultMessage": "!!Invoices", |
109 | "file": "src/components/settings/account/AccountDashboard.js", | 109 | "file": "src/components/settings/account/AccountDashboard.js", |
110 | "start": { | 110 | "start": { |
111 | "line": 50, | 111 | "line": 49, |
112 | "column": 18 | 112 | "column": 18 |
113 | }, | 113 | }, |
114 | "end": { | 114 | "end": { |
115 | "line": 53, | 115 | "line": 52, |
116 | "column": 3 | 116 | "column": 3 |
117 | } | 117 | } |
118 | }, | 118 | }, |
@@ -121,11 +121,11 @@ | |||
121 | "defaultMessage": "!!!Download", | 121 | "defaultMessage": "!!!Download", |
122 | "file": "src/components/settings/account/AccountDashboard.js", | 122 | "file": "src/components/settings/account/AccountDashboard.js", |
123 | "start": { | 123 | "start": { |
124 | "line": 54, | 124 | "line": 53, |
125 | "column": 19 | 125 | "column": 19 |
126 | }, | 126 | }, |
127 | "end": { | 127 | "end": { |
128 | "line": 57, | 128 | "line": 56, |
129 | "column": 3 | 129 | "column": 3 |
130 | } | 130 | } |
131 | }, | 131 | }, |
@@ -134,11 +134,11 @@ | |||
134 | "defaultMessage": "!!!Could not load user information", | 134 | "defaultMessage": "!!!Could not load user information", |
135 | "file": "src/components/settings/account/AccountDashboard.js", | 135 | "file": "src/components/settings/account/AccountDashboard.js", |
136 | "start": { | 136 | "start": { |
137 | "line": 58, | 137 | "line": 57, |
138 | "column": 25 | 138 | "column": 25 |
139 | }, | 139 | }, |
140 | "end": { | 140 | "end": { |
141 | "line": 61, | 141 | "line": 60, |
142 | "column": 3 | 142 | "column": 3 |
143 | } | 143 | } |
144 | }, | 144 | }, |
@@ -147,11 +147,11 @@ | |||
147 | "defaultMessage": "!!!Try again", | 147 | "defaultMessage": "!!!Try again", |
148 | "file": "src/components/settings/account/AccountDashboard.js", | 148 | "file": "src/components/settings/account/AccountDashboard.js", |
149 | "start": { | 149 | "start": { |
150 | "line": 62, | 150 | "line": 61, |
151 | "column": 28 | 151 | "column": 28 |
152 | }, | 152 | }, |
153 | "end": { | 153 | "end": { |
154 | "line": 65, | 154 | "line": 64, |
155 | "column": 3 | 155 | "column": 3 |
156 | } | 156 | } |
157 | }, | 157 | }, |
@@ -160,11 +160,11 @@ | |||
160 | "defaultMessage": "!!!Delete account", | 160 | "defaultMessage": "!!!Delete account", |
161 | "file": "src/components/settings/account/AccountDashboard.js", | 161 | "file": "src/components/settings/account/AccountDashboard.js", |
162 | "start": { | 162 | "start": { |
163 | "line": 66, | 163 | "line": 65, |
164 | "column": 17 | 164 | "column": 17 |
165 | }, | 165 | }, |
166 | "end": { | 166 | "end": { |
167 | "line": 69, | 167 | "line": 68, |
168 | "column": 3 | 168 | "column": 3 |
169 | } | 169 | } |
170 | }, | 170 | }, |
@@ -173,7 +173,7 @@ | |||
173 | "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", | 173 | "defaultMessage": "!!!If you don't need your Ferdi account any longer, you can delete your account and all related data here.", |
174 | "file": "src/components/settings/account/AccountDashboard.js", | 174 | "file": "src/components/settings/account/AccountDashboard.js", |
175 | "start": { | 175 | "start": { |
176 | "line": 70, | 176 | "line": 69, |
177 | "column": 14 | 177 | "column": 14 |
178 | }, | 178 | }, |
179 | "end": { | 179 | "end": { |
@@ -190,7 +190,7 @@ | |||
190 | "column": 19 | 190 | "column": 19 |
191 | }, | 191 | }, |
192 | "end": { | 192 | "end": { |
193 | "line": 77, | 193 | "line": 78, |
194 | "column": 3 | 194 | "column": 3 |
195 | } | 195 | } |
196 | }, | 196 | }, |
@@ -199,11 +199,11 @@ | |||
199 | "defaultMessage": "!!!Free Trial", | 199 | "defaultMessage": "!!!Free Trial", |
200 | "file": "src/components/settings/account/AccountDashboard.js", | 200 | "file": "src/components/settings/account/AccountDashboard.js", |
201 | "start": { | 201 | "start": { |
202 | "line": 78, | 202 | "line": 79, |
203 | "column": 9 | 203 | "column": 9 |
204 | }, | 204 | }, |
205 | "end": { | 205 | "end": { |
206 | "line": 81, | 206 | "line": 82, |
207 | "column": 3 | 207 | "column": 3 |
208 | } | 208 | } |
209 | }, | 209 | }, |
@@ -212,11 +212,11 @@ | |||
212 | "defaultMessage": "!!!Your Franz License:", | 212 | "defaultMessage": "!!!Your Franz License:", |
213 | "file": "src/components/settings/account/AccountDashboard.js", | 213 | "file": "src/components/settings/account/AccountDashboard.js", |
214 | "start": { | 214 | "start": { |
215 | "line": 82, | 215 | "line": 83, |
216 | "column": 15 | 216 | "column": 15 |
217 | }, | 217 | }, |
218 | "end": { | 218 | "end": { |
219 | "line": 85, | 219 | "line": 86, |
220 | "column": 3 | 220 | "column": 3 |
221 | } | 221 | } |
222 | }, | 222 | }, |
@@ -225,11 +225,11 @@ | |||
225 | "defaultMessage": "!!!Your free trial ends in {duration}.", | 225 | "defaultMessage": "!!!Your free trial ends in {duration}.", |
226 | "file": "src/components/settings/account/AccountDashboard.js", | 226 | "file": "src/components/settings/account/AccountDashboard.js", |
227 | "start": { | 227 | "start": { |
228 | "line": 86, | 228 | "line": 87, |
229 | "column": 15 | 229 | "column": 15 |
230 | }, | 230 | }, |
231 | "end": { | 231 | "end": { |
232 | "line": 89, | 232 | "line": 90, |
233 | "column": 3 | 233 | "column": 3 |
234 | } | 234 | } |
235 | }, | 235 | }, |
@@ -238,11 +238,37 @@ | |||
238 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", | 238 | "defaultMessage": "!!!Please update your billing info to continue using {license} after your trial period.", |
239 | "file": "src/components/settings/account/AccountDashboard.js", | 239 | "file": "src/components/settings/account/AccountDashboard.js", |
240 | "start": { | 240 | "start": { |
241 | "line": 90, | 241 | "line": 91, |
242 | "column": 33 | 242 | "column": 33 |
243 | }, | 243 | }, |
244 | "end": { | 244 | "end": { |
245 | "line": 93, | 245 | "line": 95, |
246 | "column": 3 | ||
247 | } | ||
248 | }, | ||
249 | { | ||
250 | "id": "settings.account.accountUnavailable", | ||
251 | "defaultMessage": "Account is unavailable", | ||
252 | "file": "src/components/settings/account/AccountDashboard.js", | ||
253 | "start": { | ||
254 | "line": 96, | ||
255 | "column": 22 | ||
256 | }, | ||
257 | "end": { | ||
258 | "line": 99, | ||
259 | "column": 3 | ||
260 | } | ||
261 | }, | ||
262 | { | ||
263 | "id": "settings.account.accountUnavailableInfo", | ||
264 | "defaultMessage": "You are using Ferdi without an account. If you want to use Ferdi with an account and keep your services synchronized across installations, please select a server in the Settings tab then login.", | ||
265 | "file": "src/components/settings/account/AccountDashboard.js", | ||
266 | "start": { | ||
267 | "line": 100, | ||
268 | "column": 26 | ||
269 | }, | ||
270 | "end": { | ||
271 | "line": 103, | ||
246 | "column": 3 | 272 | "column": 3 |
247 | } | 273 | } |
248 | } | 274 | } |