diff options
-rw-r--r-- | .all-contributorsrc | 12 | ||||
-rw-r--r-- | README.md | 64 | ||||
-rw-r--r-- | appveyor.yml | 2 | ||||
-rw-r--r-- | package-lock.json | 232 | ||||
-rw-r--r-- | package.json | 6 | ||||
-rw-r--r-- | src/api/RecipePreviewsApi.js | 2 | ||||
-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 |
11 files changed, 502 insertions, 367 deletions
diff --git a/.all-contributorsrc b/.all-contributorsrc index 487175335..20179d7dc 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc | |||
@@ -251,7 +251,17 @@ | |||
251 | "contributions": [ | 251 | "contributions": [ |
252 | "doc" | 252 | "doc" |
253 | ] | 253 | ] |
254 | }, | ||
255 | { | ||
256 | "login": "FWDekker", | ||
257 | "name": "Felix W. Dekker", | ||
258 | "avatar_url": "https://avatars0.githubusercontent.com/u/13442533?v=4", | ||
259 | "profile": "https://fwdekker.com/", | ||
260 | "contributions": [ | ||
261 | "doc" | ||
262 | ] | ||
254 | } | 263 | } |
255 | ], | 264 | ], |
256 | "contributorsPerLine": 6 | 265 | "contributorsPerLine": 6, |
266 | "skipCi": true | ||
257 | } | 267 | } |
@@ -18,14 +18,14 @@ | |||
18 | <details> | 18 | <details> |
19 | <summary>Toggle navigation</summary> | 19 | <summary>Toggle navigation</summary> |
20 | <ul> | 20 | <ul> |
21 | <li><a href="#what-is-ferdi-">What is Ferdi ?</a></li> | 21 | <li><a href="#what-is-ferdi">What is Ferdi?</a></li> |
22 | <li><a href="#what-ferdi-looks-like-">What Ferdi looks like ?</a></li> | 22 | <li><a href="#what-does-ferdi-look-like">What does Ferdi look like?</a></li> |
23 | <li><a href="#download-ferdi">Download Ferdi</a> | 23 | <li><a href="#download-ferdi">Download Ferdi</a> |
24 | <ul> | 24 | <ul> |
25 | <li><a href="#or-use-homebrew-macos-only">Or use homebrew</a></li> | 25 | <li><a href="#or-use-homebrew-macos-only">Or use homebrew</a></li> |
26 | </ul> | 26 | </ul> |
27 | </li> | 27 | </li> |
28 | <li><a href="#ferdi-specific-features">Ferdi-specific Features</a></li> | 28 | <li><a href="#ferdi-specific-features">Ferdi-specific features</a></li> |
29 | <li><a href="#development">Development</a></li> | 29 | <li><a href="#development">Development</a></li> |
30 | <ul> | 30 | <ul> |
31 | <li><a href="#install-os-dependencies">Install OS dependencies</a></li> | 31 | <li><a href="#install-os-dependencies">Install OS dependencies</a></li> |
@@ -42,11 +42,11 @@ | |||
42 | </ul> | 42 | </ul> |
43 | </details> | 43 | </details> |
44 | 44 | ||
45 | ### What is Ferdi ? | 45 | ### What is Ferdi? |
46 | 46 | ||
47 | Ferdi is a messaging browser that allows you to combine your favorite messaging services into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additonal features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. Find out more about Ferdi and its features on [getferdi.com](https://getferdi.com). | 47 | Ferdi is a messaging browser that allows you to combine your favorite messaging services into one application. It is based on Franz - a software already used by thousands of people - with the difference that Ferdi gives you many additonal features and doesn't restrict its usage! Ferdi is compatible with your existing Franz account so you can continue right where you left off. Find out more about Ferdi and its features on [getferdi.com](https://getferdi.com). |
48 | 48 | ||
49 | ### What Ferdi looks like ? | 49 | ### What does Ferdi look like? |
50 | 50 | ||
51 | <details> | 51 | <details> |
52 | <summary>Toggle screenshots</summary> | 52 | <summary>Toggle screenshots</summary> |
@@ -75,10 +75,10 @@ You can find the installers in the [latest stable release](https://github.com/ge | |||
75 | ### Or use AUR (Arch Linux) | 75 | ### Or use AUR (Arch Linux) |
76 | 76 | ||
77 | Ferdi has two seperate AUR packages you can use: | 77 | Ferdi has two seperate AUR packages you can use: |
78 | - **ferdi-build**: Uses your debian build and extracts it to Arch | 78 | - **ferdi-bin**: Uses your debian build and extracts it to Arch |
79 | - **ferdi-git**: Uses system electron version | 79 | - **ferdi-git**: Uses system electron version |
80 | 80 | ||
81 | If you use a AUR Helper e.g. yay, simply install it via Β΄yay -S ferdi-binΒ΄ | 81 | If you use an AUR Helper e.g. yay, simply install it via `yay -S ferdi-bin`. |
82 | 82 | ||
83 | `ferdi-git` may not work on all systems so we advice you to use `ferdi-bin` instead. | 83 | `ferdi-git` may not work on all systems so we advice you to use `ferdi-bin` instead. |
84 | 84 | ||
@@ -206,40 +206,44 @@ When pushing a new tag, the CI builds will create a draft GitHub release and upl | |||
206 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): | 206 | Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/docs/en/emoji-key)): |
207 | 207 | ||
208 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | 208 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> |
209 | <!-- prettier-ignore --> | 209 | <!-- prettier-ignore-start --> |
210 | <!-- markdownlint-disable --> | ||
210 | <table> | 211 | <table> |
211 | <tr> | 212 | <tr> |
212 | <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="40px;" alt="Bennett"/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Code">π»</a> <a href="#design-vantezzen" title="Design">π¨</a> <a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Documentation">π</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">π€</a> <a href="#translation-vantezzen" title="Translation">π</a> <a href="#example-vantezzen" title="Examples">π‘</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Avantezzen" title="Bug reports">π</a> <a href="#content-vantezzen" title="Content">π</a> <a href="#infra-vantezzen" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#userTesting-vantezzen" title="User Testing">π</a> <a href="#question-vantezzen" title="Answering Questions">π¬</a> <a href="#projectManagement-vantezzen" title="Project Management">π</a> <a href="#review-vantezzen" title="Reviewed Pull Requests">π</a></td> | 213 | <td align="center"><a href="https://vantezzen.io"><img src="https://avatars2.githubusercontent.com/u/10333196?v=4" width="40px;" alt=""/><br /><sub><b>Bennett</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Code">π»</a> <a href="#design-vantezzen" title="Design">π¨</a> <a href="https://github.com/getferdi/ferdi/commits?author=vantezzen" title="Documentation">π</a> <a href="#ideas-vantezzen" title="Ideas, Planning, & Feedback">π€</a> <a href="#translation-vantezzen" title="Translation">π</a> <a href="#example-vantezzen" title="Examples">π‘</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Avantezzen" title="Bug reports">π</a> <a href="#content-vantezzen" title="Content">π</a> <a href="#infra-vantezzen" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#userTesting-vantezzen" title="User Testing">π</a> <a href="#question-vantezzen" title="Answering Questions">π¬</a> <a href="#projectManagement-vantezzen" title="Project Management">π</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Avantezzen" title="Reviewed Pull Requests">π</a></td> |
213 | <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="40px;" alt="Stefan Malzner"/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Code">π»</a> <a href="#content-adlk" title="Content">π</a> <a href="#design-adlk" title="Design">π¨</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Documentation">π</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">π€</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#projectManagement-adlk" title="Project Management">π</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Tests">β οΈ</a> <a href="#translation-adlk" title="Translation">π</a></td> | 214 | <td align="center"><a href="http://www.adlk.io"><img src="https://avatars1.githubusercontent.com/u/3265004?v=4" width="40px;" alt=""/><br /><sub><b>Stefan Malzner</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Code">π»</a> <a href="#content-adlk" title="Content">π</a> <a href="#design-adlk" title="Design">π¨</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Documentation">π</a> <a href="#ideas-adlk" title="Ideas, Planning, & Feedback">π€</a> <a href="#infra-adlk" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#projectManagement-adlk" title="Project Management">π</a> <a href="https://github.com/getferdi/ferdi/commits?author=adlk" title="Tests">β οΈ</a> <a href="#translation-adlk" title="Translation">π</a></td> |
214 | <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="40px;" alt="Amine Mouafik"/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="#question-kytwb" title="Answering Questions">π¬</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Code">π»</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Documentation">π</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">π€</a> <a href="#maintenance-kytwb" title="Maintenance">π§</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">π¦</a> <a href="#projectManagement-kytwb" title="Project Management">π</a> <a href="#review-kytwb" title="Reviewed Pull Requests">π</a> <a href="#infra-kytwb" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#fundingFinding-kytwb" title="Funding Finding">π</a> <a href="#blog-kytwb" title="Blogposts">π</a></td> | 215 | <td align="center"><a href="https://twitter.com/kytwb"><img src="https://avatars0.githubusercontent.com/u/412895?v=4" width="40px;" alt=""/><br /><sub><b>Amine Mouafik</b></sub></a><br /><a href="#question-kytwb" title="Answering Questions">π¬</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Code">π»</a> <a href="https://github.com/getferdi/ferdi/commits?author=kytwb" title="Documentation">π</a> <a href="#ideas-kytwb" title="Ideas, Planning, & Feedback">π€</a> <a href="#maintenance-kytwb" title="Maintenance">π§</a> <a href="#platform-kytwb" title="Packaging/porting to new platform">π¦</a> <a href="#projectManagement-kytwb" title="Project Management">π</a> <a href="https://github.com/getferdi/ferdi/pulls?q=is%3Apr+reviewed-by%3Akytwb" title="Reviewed Pull Requests">π</a> <a href="#infra-kytwb" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#fundingFinding-kytwb" title="Funding Finding">π</a> <a href="#blog-kytwb" title="Blogposts">π</a></td> |
215 | <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="40px;" alt="ZeroCool"/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=ZeroCool940711" title="Code">π»</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">π€</a></td> | 216 | <td align="center"><a href="http://seriesgt.com"><img src="https://avatars3.githubusercontent.com/u/5977640?v=4" width="40px;" alt=""/><br /><sub><b>ZeroCool</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=ZeroCool940711" title="Code">π»</a> <a href="#ideas-ZeroCool940711" title="Ideas, Planning, & Feedback">π€</a></td> |
216 | <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="40px;" alt="rseitbekov"/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=rseitbekov" title="Code">π»</a></td> | 217 | <td align="center"><a href="https://github.com/rseitbekov"><img src="https://avatars2.githubusercontent.com/u/35684439?v=4" width="40px;" alt=""/><br /><sub><b>rseitbekov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=rseitbekov" title="Code">π»</a></td> |
217 | <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="40px;" alt="Peter Bittner"/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">π€</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Abittner" title="Bug reports">π</a></td> | 218 | <td align="center"><a href="https://djangogigs.com/developers/peter-bittner/"><img src="https://avatars2.githubusercontent.com/u/665072?v=4" width="40px;" alt=""/><br /><sub><b>Peter Bittner</b></sub></a><br /><a href="#ideas-bittner" title="Ideas, Planning, & Feedback">π€</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3Abittner" title="Bug reports">π</a></td> |
218 | </tr> | 219 | </tr> |
219 | <tr> | 220 | <tr> |
220 | <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="40px;" alt="Justus Saul"/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">π</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">π€</a></td> | 221 | <td align="center"><a href="https://github.com/justus-saul"><img src="https://avatars1.githubusercontent.com/u/5861826?v=4" width="40px;" alt=""/><br /><sub><b>Justus Saul</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Ajustus-saul" title="Bug reports">π</a> <a href="#ideas-justus-saul" title="Ideas, Planning, & Feedback">π€</a></td> |
221 | <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="40px;" alt="igreil"/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">π€</a></td> | 222 | <td align="center"><a href="https://github.com/igreil"><img src="https://avatars0.githubusercontent.com/u/17239151?v=4" width="40px;" alt=""/><br /><sub><b>igreil</b></sub></a><br /><a href="#ideas-igreil" title="Ideas, Planning, & Feedback">π€</a></td> |
222 | <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="40px;" alt="Marco Lopes"/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">π€</a></td> | 223 | <td align="center"><a href="http://marcolopes.eu"><img src="https://avatars1.githubusercontent.com/u/431889?v=4" width="40px;" alt=""/><br /><sub><b>Marco Lopes</b></sub></a><br /><a href="#ideas-marcolopes" title="Ideas, Planning, & Feedback">π€</a></td> |
223 | <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="40px;" alt="dayzlun"/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adayzlun" title="Bug reports">π</a></td> | 224 | <td align="center"><a href="https://github.com/dayzlun"><img src="https://avatars3.githubusercontent.com/u/17259690?v=4" width="40px;" alt=""/><br /><sub><b>dayzlun</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Adayzlun" title="Bug reports">π</a></td> |
224 | <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="40px;" alt="Tobias GΓΌnther"/><br /><sub><b>Tobias GΓΌnther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">π€</a></td> | 225 | <td align="center"><a href="https://twitter.com/tobigue_"><img src="https://avatars2.githubusercontent.com/u/1560152?v=4" width="40px;" alt=""/><br /><sub><b>Tobias GΓΌnther</b></sub></a><br /><a href="#ideas-tobigue" title="Ideas, Planning, & Feedback">π€</a></td> |
225 | <td align="center"><a href="https://github.com/AGCaesar"><img src="https://avatars3.githubusercontent.com/u/7844066?v=4" width="40px;" alt="AGCaesar"/><br /><sub><b>AGCaesar</b></sub></a><br /><a href="#platform-AGCaesar" title="Packaging/porting to new platform">π¦</a></td> | 226 | <td align="center"><a href="https://github.com/AGCaesar"><img src="https://avatars3.githubusercontent.com/u/7844066?v=4" width="40px;" alt=""/><br /><sub><b>AGCaesar</b></sub></a><br /><a href="#platform-AGCaesar" title="Packaging/porting to new platform">π¦</a></td> |
226 | </tr> | 227 | </tr> |
227 | <tr> | 228 | <tr> |
228 | <td align="center"><a href="https://github.com/Makazzz"><img src="https://avatars2.githubusercontent.com/u/49844464?v=4" width="40px;" alt="Makazzz"/><br /><sub><b>Makazzz</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3AMakazzz" title="Bug reports">π</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Code">π»</a> <a href="#translation-Makazzz" title="Translation">π</a> <a href="#content-Makazzz" title="Content">π</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Documentation">π</a> <a href="#platform-Makazzz" title="Packaging/porting to new platform">π¦</a></td> | 229 | <td align="center"><a href="https://github.com/Makazzz"><img src="https://avatars2.githubusercontent.com/u/49844464?v=4" width="40px;" alt=""/><br /><sub><b>Makazzz</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3AMakazzz" title="Bug reports">π</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Code">π»</a> <a href="#translation-Makazzz" title="Translation">π</a> <a href="#content-Makazzz" title="Content">π</a> <a href="https://github.com/getferdi/ferdi/commits?author=Makazzz" title="Documentation">π</a> <a href="#platform-Makazzz" title="Packaging/porting to new platform">π¦</a></td> |
229 | <td align="center"><a href="https://github.com/xthursdayx"><img src="https://avatars0.githubusercontent.com/u/18044308?v=4" width="40px;" alt="xthursdayx"/><br /><sub><b>xthursdayx</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Code">π»</a> <a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Documentation">π</a> <a href="#infra-xthursdayx" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#platform-xthursdayx" title="Packaging/porting to new platform">π¦</a></td> | 230 | <td align="center"><a href="https://github.com/xthursdayx"><img src="https://avatars0.githubusercontent.com/u/18044308?v=4" width="40px;" alt=""/><br /><sub><b>xthursdayx</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Code">π»</a> <a href="https://github.com/getferdi/ferdi/commits?author=xthursdayx" title="Documentation">π</a> <a href="#infra-xthursdayx" title="Infrastructure (Hosting, Build-Tools, etc)">π</a> <a href="#platform-xthursdayx" title="Packaging/porting to new platform">π¦</a></td> |
230 | <td align="center"><a href="https://github.com/Gaboris"><img src="https://avatars2.githubusercontent.com/u/9462372?v=4" width="40px;" alt="Gaboris"/><br /><sub><b>Gaboris</b></sub></a><br /><a href="#question-Gaboris" title="Answering Questions">π¬</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3AGaboris" title="Bug reports">π</a></td> | 231 | <td align="center"><a href="https://github.com/Gaboris"><img src="https://avatars2.githubusercontent.com/u/9462372?v=4" width="40px;" alt=""/><br /><sub><b>Gaboris</b></sub></a><br /><a href="#question-Gaboris" title="Answering Questions">π¬</a> <a href="https://github.com/getferdi/ferdi/issues?q=author%3AGaboris" title="Bug reports">π</a></td> |
231 | <td align="center"><a href="http://www.cu3ed.com/"><img src="https://avatars1.githubusercontent.com/u/61343?v=4" width="40px;" alt="Ce"/><br /><sub><b>Ce</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aincace" title="Bug reports">π</a></td> | 232 | <td align="center"><a href="http://www.cu3ed.com/"><img src="https://avatars1.githubusercontent.com/u/61343?v=4" width="40px;" alt=""/><br /><sub><b>Ce</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aincace" title="Bug reports">π</a></td> |
232 | <td align="center"><a href="http://pztrn.name/"><img src="https://avatars1.githubusercontent.com/u/869402?v=4" width="40px;" alt="Stanislav N."/><br /><sub><b>Stanislav N.</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Apztrn" title="Bug reports">π</a></td> | 233 | <td align="center"><a href="http://pztrn.name/"><img src="https://avatars1.githubusercontent.com/u/869402?v=4" width="40px;" alt=""/><br /><sub><b>Stanislav N.</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Apztrn" title="Bug reports">π</a></td> |
233 | <td align="center"><a href="http://www.patrickcurl.com"><img src="https://avatars1.githubusercontent.com/u/1470061?v=4" width="40px;" alt="Patrick Curl"/><br /><sub><b>Patrick Curl</b></sub></a><br /><a href="#ideas-patrickcurl" title="Ideas, Planning, & Feedback">π€</a></td> | 234 | <td align="center"><a href="http://www.patrickcurl.com"><img src="https://avatars1.githubusercontent.com/u/1470061?v=4" width="40px;" alt=""/><br /><sub><b>Patrick Curl</b></sub></a><br /><a href="#ideas-patrickcurl" title="Ideas, Planning, & Feedback">π€</a></td> |
234 | </tr> | 235 | </tr> |
235 | <tr> | 236 | <tr> |
236 | <td align="center"><a href="https://github.com/Stanzilla"><img src="https://avatars3.githubusercontent.com/u/75278?v=4" width="40px;" alt="Benjamin Staneck"/><br /><sub><b>Benjamin Staneck</b></sub></a><br /><a href="#design-Stanzilla" title="Design">π¨</a></td> | 237 | <td align="center"><a href="https://github.com/Stanzilla"><img src="https://avatars3.githubusercontent.com/u/75278?v=4" width="40px;" alt=""/><br /><sub><b>Benjamin Staneck</b></sub></a><br /><a href="#design-Stanzilla" title="Design">π¨</a></td> |
237 | <td align="center"><a href="https://github.com/ammarmalhas"><img src="https://avatars1.githubusercontent.com/u/57057209?v=4" width="40px;" alt="ammarmalhas"/><br /><sub><b>ammarmalhas</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aammarmalhas" title="Bug reports">π</a> <a href="#security-ammarmalhas" title="Security">π‘οΈ</a></td> | 238 | <td align="center"><a href="https://github.com/ammarmalhas"><img src="https://avatars1.githubusercontent.com/u/57057209?v=4" width="40px;" alt=""/><br /><sub><b>ammarmalhas</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/issues?q=author%3Aammarmalhas" title="Bug reports">π</a> <a href="#security-ammarmalhas" title="Security">π‘οΈ</a></td> |
238 | <td align="center"><a href="https://github.com/steliyan"><img src="https://avatars1.githubusercontent.com/u/1850292?v=4" width="40px;" alt="Steliyan Stoyanov"/><br /><sub><b>Steliyan Stoyanov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=steliyan" title="Code">π»</a> <a href="#ideas-steliyan" title="Ideas, Planning, & Feedback">π€</a></td> | 239 | <td align="center"><a href="https://github.com/steliyan"><img src="https://avatars1.githubusercontent.com/u/1850292?v=4" width="40px;" alt=""/><br /><sub><b>Steliyan Stoyanov</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=steliyan" title="Code">π»</a> <a href="#ideas-steliyan" title="Ideas, Planning, & Feedback">π€</a></td> |
239 | <td align="center"><a href="https://github.com/brorbw"><img src="https://avatars2.githubusercontent.com/u/5909562?v=4" width="40px;" alt="Bror Winther"/><br /><sub><b>Bror Winther</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=brorbw" title="Documentation">π</a></td> | 240 | <td align="center"><a href="https://github.com/brorbw"><img src="https://avatars2.githubusercontent.com/u/5909562?v=4" width="40px;" alt=""/><br /><sub><b>Bror Winther</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=brorbw" title="Documentation">π</a></td> |
241 | <td align="center"><a href="https://fwdekker.com/"><img src="https://avatars0.githubusercontent.com/u/13442533?v=4" width="40px;" alt=""/><br /><sub><b>Felix W. Dekker</b></sub></a><br /><a href="https://github.com/getferdi/ferdi/commits?author=FWDekker" title="Documentation">π</a></td> | ||
240 | </tr> | 242 | </tr> |
241 | </table> | 243 | </table> |
242 | 244 | ||
245 | <!-- markdownlint-enable --> | ||
246 | <!-- prettier-ignore-end --> | ||
243 | <!-- ALL-CONTRIBUTORS-LIST:END --> | 247 | <!-- ALL-CONTRIBUTORS-LIST:END --> |
244 | 248 | ||
245 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> | 249 | <!-- ALL-CONTRIBUTORS-LIST:START - Do not remove or modify this section --> |
diff --git a/appveyor.yml b/appveyor.yml index a0b33d1e1..693fdb700 100644 --- a/appveyor.yml +++ b/appveyor.yml | |||
@@ -1,7 +1,7 @@ | |||
1 | environment: | 1 | environment: |
2 | APPVEYOR_CACHE_SKIP_RESTORE: true | 2 | APPVEYOR_CACHE_SKIP_RESTORE: true |
3 | 3 | ||
4 | version: 5.4.1-beta.2.{build} | 4 | version: 5.4.1-beta.3.{build} |
5 | 5 | ||
6 | install: | 6 | install: |
7 | - git submodule update --init --recursive | 7 | - git submodule update --init --recursive |
diff --git a/package-lock.json b/package-lock.json index c551ecf2f..2ffd534e0 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -1,6 +1,6 @@ | |||
1 | { | 1 | { |
2 | "name": "ferdi", | 2 | "name": "ferdi", |
3 | "version": "5.4.1-beta.2", | 3 | "version": "5.4.1-beta.3", |
4 | "lockfileVersion": 1, | 4 | "lockfileVersion": 1, |
5 | "requires": true, | 5 | "requires": true, |
6 | "dependencies": { | 6 | "dependencies": { |
@@ -2592,9 +2592,9 @@ | |||
2592 | } | 2592 | } |
2593 | }, | 2593 | }, |
2594 | "@electron/get": { | 2594 | "@electron/get": { |
2595 | "version": "1.7.1", | 2595 | "version": "1.7.2", |
2596 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.1.tgz", | 2596 | "resolved": "https://registry.npmjs.org/@electron/get/-/get-1.7.2.tgz", |
2597 | "integrity": "sha512-+BOIzkmYbe+oOBGqSByq8zXYXCFztccoymR3uNkvX5ckJ/5xU+4peVyEvFyH6+zfv58hCo99RxgIpwuaMfRtRg==", | 2597 | "integrity": "sha512-LSE4LZGMjGS9TloDx0yO44D2UTbaeKRk+QjlhWLiQlikV6J4spgDCjb6z4YIcqmPAwNzlNCnWF4dubytwI+ATA==", |
2598 | "dev": true, | 2598 | "dev": true, |
2599 | "requires": { | 2599 | "requires": { |
2600 | "debug": "^4.1.1", | 2600 | "debug": "^4.1.1", |
@@ -2604,7 +2604,7 @@ | |||
2604 | "global-tunnel-ng": "^2.7.1", | 2604 | "global-tunnel-ng": "^2.7.1", |
2605 | "got": "^9.6.0", | 2605 | "got": "^9.6.0", |
2606 | "sanitize-filename": "^1.6.2", | 2606 | "sanitize-filename": "^1.6.2", |
2607 | "sumchecker": "^3.0.0" | 2607 | "sumchecker": "^3.0.1" |
2608 | }, | 2608 | }, |
2609 | "dependencies": { | 2609 | "dependencies": { |
2610 | "env-paths": { | 2610 | "env-paths": { |
@@ -4509,108 +4509,103 @@ | |||
4509 | "@types/node": ">= 8" | 4509 | "@types/node": ">= 8" |
4510 | } | 4510 | } |
4511 | }, | 4511 | }, |
4512 | "@sentry/apm": { | ||
4513 | "version": "5.10.2", | ||
4514 | "resolved": "https://registry.npmjs.org/@sentry/apm/-/apm-5.10.2.tgz", | ||
4515 | "integrity": "sha512-rPeAFsD/6ontvs7bsuHh+XAg1ohWo04ms08SNWqEvLRQJx7WfiWnjziyC0S3dXIYZDGdhruSsqQJPJN8r6Aj5g==", | ||
4516 | "requires": { | ||
4517 | "@sentry/hub": "5.10.2", | ||
4518 | "@sentry/minimal": "5.10.2", | ||
4519 | "@sentry/types": "5.10.0", | ||
4520 | "@sentry/utils": "5.10.2", | ||
4521 | "tslib": "^1.9.3" | ||
4522 | } | ||
4523 | }, | ||
4512 | "@sentry/browser": { | 4524 | "@sentry/browser": { |
4513 | "version": "4.6.6", | 4525 | "version": "5.10.2", |
4514 | "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-4.6.6.tgz", | 4526 | "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-5.10.2.tgz", |
4515 | "integrity": "sha512-+9VsQ+oQYU+PYlLJG2ex7JCMSVQbnUvWPI2uZOofWdI9sWIPUub3boWItMzRQNQ1T4S3FZd4FqAWNFd3azdnBw==", | 4527 | "integrity": "sha512-r3eyBu2ln7odvWtXARCZPzpuGrKsD6U9F3gKTu4xdFkA0swSLUvS7AC2FUksj/1BE23y+eB/zzPT+RYJ58tidA==", |
4516 | "requires": { | 4528 | "requires": { |
4517 | "@sentry/core": "4.6.6", | 4529 | "@sentry/core": "5.10.2", |
4518 | "@sentry/types": "4.5.3", | 4530 | "@sentry/types": "5.10.0", |
4519 | "@sentry/utils": "4.6.5", | 4531 | "@sentry/utils": "5.10.2", |
4520 | "tslib": "^1.9.3" | 4532 | "tslib": "^1.9.3" |
4521 | } | 4533 | } |
4522 | }, | 4534 | }, |
4523 | "@sentry/core": { | 4535 | "@sentry/core": { |
4524 | "version": "4.6.6", | 4536 | "version": "5.10.2", |
4525 | "resolved": "https://registry.npmjs.org/@sentry/core/-/core-4.6.6.tgz", | 4537 | "resolved": "https://registry.npmjs.org/@sentry/core/-/core-5.10.2.tgz", |
4526 | "integrity": "sha512-7z9HKLTNr3zVBR3tBRheTxkkkuK2IqISUc5Iyo3crN2OecOLtpptT96f5XjLndBEL2ab39eCBPpA5OFjbpzrIA==", | 4538 | "integrity": "sha512-sKVeFH3v8K8xw2vM5MKMnnyAAwih+JSE3pbNL0CcCCA+/SwX+3jeAo2BhgXev2SAR/TjWW+wmeC9TdIW7KyYbg==", |
4527 | "requires": { | 4539 | "requires": { |
4528 | "@sentry/hub": "4.6.5", | 4540 | "@sentry/hub": "5.10.2", |
4529 | "@sentry/minimal": "4.6.5", | 4541 | "@sentry/minimal": "5.10.2", |
4530 | "@sentry/types": "4.5.3", | 4542 | "@sentry/types": "5.10.0", |
4531 | "@sentry/utils": "4.6.5", | 4543 | "@sentry/utils": "5.10.2", |
4532 | "tslib": "^1.9.3" | 4544 | "tslib": "^1.9.3" |
4533 | } | 4545 | } |
4534 | }, | 4546 | }, |
4535 | "@sentry/electron": { | 4547 | "@sentry/electron": { |
4536 | "version": "0.17.4", | 4548 | "version": "1.1.0", |
4537 | "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-0.17.4.tgz", | 4549 | "resolved": "https://registry.npmjs.org/@sentry/electron/-/electron-1.1.0.tgz", |
4538 | "integrity": "sha512-1IU0o+E8eY5Lrthj6Pqf+Dh8MptddHsFFmcOwKlft/bbZ+6RTKEefLtFOclKUMLR64C7GTqa80Yddq0ssjOv5w==", | 4550 | "integrity": "sha512-ot6nYOhZOjylSlK2LEaBuqzPEEcmRn76SDf+VZpujOxig5Jv/LIbgwha/xou/mggOD2y3a5cM2o8ubbs5U5Bfg==", |
4539 | "requires": { | 4551 | "requires": { |
4540 | "@sentry/browser": "4.6.2 || ~4.6.4", | 4552 | "@sentry/browser": "~5.10.0", |
4541 | "@sentry/core": "4.6.2 || ~4.6.4", | 4553 | "@sentry/core": "~5.10.0", |
4542 | "@sentry/minimal": "^4.5.0", | 4554 | "@sentry/minimal": "~5.10.0", |
4543 | "@sentry/node": "4.6.2 || ~4.6.4", | 4555 | "@sentry/node": "~5.10.0", |
4544 | "@sentry/types": "^4.5.0", | 4556 | "@sentry/types": "~5.10.0", |
4545 | "@sentry/utils": "4.6.2 || ~4.6.4", | 4557 | "@sentry/utils": "~5.10.0", |
4546 | "electron-fetch": "1.3.0", | 4558 | "form-data": "2.5.1", |
4547 | "form-data": "2.3.2", | 4559 | "node-fetch": "^2.6.0", |
4548 | "util.promisify": "1.0.0" | 4560 | "util.promisify": "1.0.0", |
4561 | "win-ca": "^3.1.1" | ||
4549 | }, | 4562 | }, |
4550 | "dependencies": { | 4563 | "dependencies": { |
4551 | "combined-stream": { | ||
4552 | "version": "1.0.6", | ||
4553 | "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.6.tgz", | ||
4554 | "integrity": "sha1-cj599ugBrFYTETp+RFqbactjKBg=", | ||
4555 | "requires": { | ||
4556 | "delayed-stream": "~1.0.0" | ||
4557 | } | ||
4558 | }, | ||
4559 | "electron-fetch": { | ||
4560 | "version": "1.3.0", | ||
4561 | "resolved": "https://registry.npmjs.org/electron-fetch/-/electron-fetch-1.3.0.tgz", | ||
4562 | "integrity": "sha512-WzHnWZqKdiCKHqqHu+GphezoWRSUVH6BQ/f13vu16VwYKJRZNt2dUrx40eZJcyZcDGn6RJDTAHS6jVoHoglgNw==", | ||
4563 | "requires": { | ||
4564 | "encoding": "^0.1.12" | ||
4565 | } | ||
4566 | }, | ||
4567 | "form-data": { | 4564 | "form-data": { |
4568 | "version": "2.3.2", | 4565 | "version": "2.5.1", |
4569 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.2.tgz", | 4566 | "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", |
4570 | "integrity": "sha1-SXBJi+YEwgwAXU9cI67NIda0kJk=", | 4567 | "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", |
4571 | "requires": { | 4568 | "requires": { |
4572 | "asynckit": "^0.4.0", | 4569 | "asynckit": "^0.4.0", |
4573 | "combined-stream": "1.0.6", | 4570 | "combined-stream": "^1.0.6", |
4574 | "mime-types": "^2.1.12" | 4571 | "mime-types": "^2.1.12" |
4575 | } | 4572 | } |
4576 | } | 4573 | } |
4577 | } | 4574 | } |
4578 | }, | 4575 | }, |
4579 | "@sentry/hub": { | 4576 | "@sentry/hub": { |
4580 | "version": "4.6.5", | 4577 | "version": "5.10.2", |
4581 | "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-4.6.5.tgz", | 4578 | "resolved": "https://registry.npmjs.org/@sentry/hub/-/hub-5.10.2.tgz", |
4582 | "integrity": "sha512-v9vee8s8C1fK/DPtNOzv6r+AMbPDOWfnasouNcBUkbQUSN5wUNyCDvt51QbWaw5kMMY5TSqjdVqY6gXQZI0APQ==", | 4579 | "integrity": "sha512-hSlZIiu3hcR/I5yEhlpN9C0nip+U7hiRzRzUQaBiHO4YG4TC58NqnOPR89D/ekiuHIXzFpjW9OQmqtAMRoSUYA==", |
4583 | "requires": { | 4580 | "requires": { |
4584 | "@sentry/types": "4.5.3", | 4581 | "@sentry/types": "5.10.0", |
4585 | "@sentry/utils": "4.6.5", | 4582 | "@sentry/utils": "5.10.2", |
4586 | "tslib": "^1.9.3" | 4583 | "tslib": "^1.9.3" |
4587 | } | 4584 | } |
4588 | }, | 4585 | }, |
4589 | "@sentry/minimal": { | 4586 | "@sentry/minimal": { |
4590 | "version": "4.6.5", | 4587 | "version": "5.10.2", |
4591 | "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-4.6.5.tgz", | 4588 | "resolved": "https://registry.npmjs.org/@sentry/minimal/-/minimal-5.10.2.tgz", |
4592 | "integrity": "sha512-tf+J+uUNmSgzC7d9JSN8Ekw1HeBAX87Efa/jyFbzLvaw80oibvTiLSLqDjQ9PgvyIzBUuuPImkS2NpvPQGWFtg==", | 4589 | "integrity": "sha512-GalixiM9sckYfompH5HHTp9XT2BcjawBkcl1DMEKUBEi37+kUq0bivOBmnN1G/I4/wWOUdnAI/kagDWaWpbZPg==", |
4593 | "requires": { | 4590 | "requires": { |
4594 | "@sentry/hub": "4.6.5", | 4591 | "@sentry/hub": "5.10.2", |
4595 | "@sentry/types": "4.5.3", | 4592 | "@sentry/types": "5.10.0", |
4596 | "tslib": "^1.9.3" | 4593 | "tslib": "^1.9.3" |
4597 | } | 4594 | } |
4598 | }, | 4595 | }, |
4599 | "@sentry/node": { | 4596 | "@sentry/node": { |
4600 | "version": "4.6.6", | 4597 | "version": "5.10.2", |
4601 | "resolved": "https://registry.npmjs.org/@sentry/node/-/node-4.6.6.tgz", | 4598 | "resolved": "https://registry.npmjs.org/@sentry/node/-/node-5.10.2.tgz", |
4602 | "integrity": "sha512-+zZHE2uOwQTgypP6N9oBd0Io6BKXaJh6mdmZBauF0G46/8V28sBQ/dXBtJJNZ8tW7eVlLGpLSGuJb9Ai7c/rNw==", | 4599 | "integrity": "sha512-1ib1hAhVtmfXOThpcCfR4S6wFopd6lHqgOMrAUPo9saHy8zseZPRC7iTWGoSPy2RMwjrURAk54VvFnLe7G+PdQ==", |
4603 | "requires": { | 4600 | "requires": { |
4604 | "@sentry/core": "4.6.6", | 4601 | "@sentry/apm": "5.10.2", |
4605 | "@sentry/hub": "4.6.5", | 4602 | "@sentry/core": "5.10.2", |
4606 | "@sentry/types": "4.5.3", | 4603 | "@sentry/hub": "5.10.2", |
4607 | "@sentry/utils": "4.6.5", | 4604 | "@sentry/types": "5.10.0", |
4608 | "@types/stack-trace": "0.0.29", | 4605 | "@sentry/utils": "5.10.2", |
4609 | "cookie": "0.3.1", | 4606 | "cookie": "^0.3.1", |
4610 | "https-proxy-agent": "2.2.1", | 4607 | "https-proxy-agent": "^3.0.0", |
4611 | "lru_map": "0.3.3", | 4608 | "lru_map": "^0.3.3", |
4612 | "lsmod": "1.0.0", | ||
4613 | "stack-trace": "0.0.10", | ||
4614 | "tslib": "^1.9.3" | 4609 | "tslib": "^1.9.3" |
4615 | }, | 4610 | }, |
4616 | "dependencies": { | 4611 | "dependencies": { |
@@ -4623,27 +4618,27 @@ | |||
4623 | } | 4618 | } |
4624 | }, | 4619 | }, |
4625 | "https-proxy-agent": { | 4620 | "https-proxy-agent": { |
4626 | "version": "2.2.1", | 4621 | "version": "3.0.1", |
4627 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.1.tgz", | 4622 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-3.0.1.tgz", |
4628 | "integrity": "sha512-HPCTS1LW51bcyMYbxUIOO4HEOlQ1/1qRaFWcyxvwaqUS9TY88aoEuHUY33kuAh1YhVVaDQhLZsnPd+XNARWZlQ==", | 4623 | "integrity": "sha512-+ML2Rbh6DAuee7d07tYGEKOEi2voWPUGan+ExdPbPW6Z3svq+JCqr0v8WmKPOkz1vOVykPCBSuobe7G8GJUtVg==", |
4629 | "requires": { | 4624 | "requires": { |
4630 | "agent-base": "^4.1.0", | 4625 | "agent-base": "^4.3.0", |
4631 | "debug": "^3.1.0" | 4626 | "debug": "^3.1.0" |
4632 | } | 4627 | } |
4633 | } | 4628 | } |
4634 | } | 4629 | } |
4635 | }, | 4630 | }, |
4636 | "@sentry/types": { | 4631 | "@sentry/types": { |
4637 | "version": "4.5.3", | 4632 | "version": "5.10.0", |
4638 | "resolved": "https://registry.npmjs.org/@sentry/types/-/types-4.5.3.tgz", | 4633 | "resolved": "https://registry.npmjs.org/@sentry/types/-/types-5.10.0.tgz", |
4639 | "integrity": "sha512-7ll1PAFNjrBNX9rzy3P2qAQrpQwHaDO3uKj735qsnGw34OtAS8Xr8WYrjI14f9fMPa/XIeWvMPb4GMic28V/ag==" | 4634 | "integrity": "sha512-TW20GzkCWsP6uAxR2JIpIkiitCKyIOfkyDsKBeLqYj4SaZjfvBPnzgNCcYR0L0UsP1/Es6oHooZfIGSkp6GGxQ==" |
4640 | }, | 4635 | }, |
4641 | "@sentry/utils": { | 4636 | "@sentry/utils": { |
4642 | "version": "4.6.5", | 4637 | "version": "5.10.2", |
4643 | "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-4.6.5.tgz", | 4638 | "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-5.10.2.tgz", |
4644 | "integrity": "sha512-rTISJtRRbWsd3UE+TkA3QG1C0VzPKPW8w74tieBwYhtTCGmOHNwz2nDC/MZGbGj4OgDmNKKl4CCyQr88EX08hA==", | 4639 | "integrity": "sha512-UcbbaFpYrGSV448lQ16Cr+W/MPuKUflQQUdrMCt5vgaf5+M7kpozlcji4GGGZUCXIA7oRP93ABoXj55s1OM9zw==", |
4645 | "requires": { | 4640 | "requires": { |
4646 | "@sentry/types": "4.5.3", | 4641 | "@sentry/types": "5.10.0", |
4647 | "tslib": "^1.9.3" | 4642 | "tslib": "^1.9.3" |
4648 | } | 4643 | } |
4649 | }, | 4644 | }, |
@@ -4874,11 +4869,6 @@ | |||
4874 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.0.tgz", | 4869 | "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.0.tgz", |
4875 | "integrity": "sha512-1OzrNb4RuAzIT7wHSsgZRlMBlNsJl+do6UblR7JMW4oB7bbR+uBEYtUh7gEc/jM84GGilh68lSOokyM/zNUlBA==" | 4870 | "integrity": "sha512-1OzrNb4RuAzIT7wHSsgZRlMBlNsJl+do6UblR7JMW4oB7bbR+uBEYtUh7gEc/jM84GGilh68lSOokyM/zNUlBA==" |
4876 | }, | 4871 | }, |
4877 | "@types/stack-trace": { | ||
4878 | "version": "0.0.29", | ||
4879 | "resolved": "https://registry.npmjs.org/@types/stack-trace/-/stack-trace-0.0.29.tgz", | ||
4880 | "integrity": "sha512-TgfOX+mGY/NyNxJLIbDWrO9DjGoVSW9+aB8H2yy1fy32jsvxijhmyJI9fDFgvz3YP4lvJaq9DzdR/M1bOgVc9g==" | ||
4881 | }, | ||
4882 | "@types/stack-utils": { | 4872 | "@types/stack-utils": { |
4883 | "version": "1.0.1", | 4873 | "version": "1.0.1", |
4884 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", | 4874 | "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-1.0.1.tgz", |
@@ -9634,9 +9624,9 @@ | |||
9634 | "dev": true | 9624 | "dev": true |
9635 | }, | 9625 | }, |
9636 | "electron": { | 9626 | "electron": { |
9637 | "version": "7.1.2", | 9627 | "version": "7.1.6", |
9638 | "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.2.tgz", | 9628 | "resolved": "https://registry.npmjs.org/electron/-/electron-7.1.6.tgz", |
9639 | "integrity": "sha512-7hjONYt2GlQfKuKgQrhhUL1P9lbGWLBfMUq+2QFU3yeLtCvM0ROfPJCRP4OF5pVp3KDyfFp4DtmhuVzAnxV3jA==", | 9629 | "integrity": "sha512-0QSxQYYzSrBRbctKgAWS79k/I+vm95I7bz/zTuF0Qv4PvTtQf5hK21q6wtyKVPPJFFXnmSyvfQ2ce6iktfgK8g==", |
9640 | "dev": true, | 9630 | "dev": true, |
9641 | "requires": { | 9631 | "requires": { |
9642 | "@electron/get": "^1.0.1", | 9632 | "@electron/get": "^1.0.1", |
@@ -13497,9 +13487,9 @@ | |||
13497 | }, | 13487 | }, |
13498 | "dependencies": { | 13488 | "dependencies": { |
13499 | "core-js": { | 13489 | "core-js": { |
13500 | "version": "3.4.4", | 13490 | "version": "3.5.0", |
13501 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.4.4.tgz", | 13491 | "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.5.0.tgz", |
13502 | "integrity": "sha512-vKea1DrcLA80Hrfc7AQgfoGvEaByfR5mH08t+zuWOWY94TFBmabdEL56mUbcijvadG9RxsXR2gUUFrfj4/iTcA==", | 13492 | "integrity": "sha512-Ifh3kj78gzQ7NAoJXeTu+XwzDld0QRIwjBLRqAMhuLhP3d2Av5wmgE9ycfnvK6NAEjTkQ1sDPeoEZAWO3Hx1Uw==", |
13503 | "dev": true, | 13493 | "dev": true, |
13504 | "optional": true | 13494 | "optional": true |
13505 | }, | 13495 | }, |
@@ -13563,15 +13553,13 @@ | |||
13563 | "dev": true | 13553 | "dev": true |
13564 | }, | 13554 | }, |
13565 | "globalthis": { | 13555 | "globalthis": { |
13566 | "version": "1.0.0", | 13556 | "version": "1.0.1", |
13567 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.0.tgz", | 13557 | "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.1.tgz", |
13568 | "integrity": "sha512-vcCAZTJ3r5Qcu5l8/2oyVdoFwxKgfYnMTR2vwWeux/NAVZK3PwcMaWkdUIn4GJbmKuRK7xcvDsLuK+CKcXyodg==", | 13558 | "integrity": "sha512-mJPRTc/P39NH/iNG4mXa9aIhNymaQikTrnspeCa2ZuJ+mH2QN/rXwtX3XwKrHqWgUQFbNZKtHM105aHzJalElw==", |
13569 | "dev": true, | 13559 | "dev": true, |
13570 | "optional": true, | 13560 | "optional": true, |
13571 | "requires": { | 13561 | "requires": { |
13572 | "define-properties": "^1.1.2", | 13562 | "define-properties": "^1.1.3" |
13573 | "function-bind": "^1.1.1", | ||
13574 | "object-keys": "^1.0.12" | ||
13575 | } | 13563 | } |
13576 | }, | 13564 | }, |
13577 | "globby": { | 13565 | "globby": { |
@@ -16047,6 +16035,11 @@ | |||
16047 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", | 16035 | "integrity": "sha1-pqLzL/0t+wT1yiXs0Pa4PPeYoeE=", |
16048 | "dev": true | 16036 | "dev": true |
16049 | }, | 16037 | }, |
16038 | "is-electron": { | ||
16039 | "version": "2.2.0", | ||
16040 | "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.0.tgz", | ||
16041 | "integrity": "sha512-SpMppC2XR3YdxSzczXReBjqs2zGscWQpBIKqwXYBFic0ERaxNVgwLCHwOLZeESfdJQjX0RDvrJ1lBXX2ij+G1Q==" | ||
16042 | }, | ||
16050 | "is-equal-shallow": { | 16043 | "is-equal-shallow": { |
16051 | "version": "0.1.3", | 16044 | "version": "0.1.3", |
16052 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", | 16045 | "resolved": "https://registry.npmjs.org/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz", |
@@ -18183,11 +18176,6 @@ | |||
18183 | "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", | 18176 | "resolved": "https://registry.npmjs.org/lru_map/-/lru_map-0.3.3.tgz", |
18184 | "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" | 18177 | "integrity": "sha1-tcg1G5Rky9dQM1p5ZQoOwOVhGN0=" |
18185 | }, | 18178 | }, |
18186 | "lsmod": { | ||
18187 | "version": "1.0.0", | ||
18188 | "resolved": "https://registry.npmjs.org/lsmod/-/lsmod-1.0.0.tgz", | ||
18189 | "integrity": "sha1-mgD3bco26yP6BTUK/htYXUKZ5ks=" | ||
18190 | }, | ||
18191 | "macos-notification-state": { | 18179 | "macos-notification-state": { |
18192 | "version": "1.3.1", | 18180 | "version": "1.3.1", |
18193 | "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.3.1.tgz", | 18181 | "resolved": "https://registry.npmjs.org/macos-notification-state/-/macos-notification-state-1.3.1.tgz", |
@@ -18222,7 +18210,6 @@ | |||
18222 | "version": "1.3.0", | 18210 | "version": "1.3.0", |
18223 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", | 18211 | "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", |
18224 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", | 18212 | "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", |
18225 | "dev": true, | ||
18226 | "requires": { | 18213 | "requires": { |
18227 | "pify": "^3.0.0" | 18214 | "pify": "^3.0.0" |
18228 | } | 18215 | } |
@@ -20901,8 +20888,7 @@ | |||
20901 | "pify": { | 20888 | "pify": { |
20902 | "version": "3.0.0", | 20889 | "version": "3.0.0", |
20903 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", | 20890 | "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", |
20904 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", | 20891 | "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=" |
20905 | "dev": true | ||
20906 | }, | 20892 | }, |
20907 | "pinkie": { | 20893 | "pinkie": { |
20908 | "version": "2.0.4", | 20894 | "version": "2.0.4", |
@@ -24225,7 +24211,6 @@ | |||
24225 | "version": "1.0.1", | 24211 | "version": "1.0.1", |
24226 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", | 24212 | "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", |
24227 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", | 24213 | "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", |
24228 | "dev": true, | ||
24229 | "requires": { | 24214 | "requires": { |
24230 | "through": "2" | 24215 | "through": "2" |
24231 | } | 24216 | } |
@@ -25187,8 +25172,7 @@ | |||
25187 | "through": { | 25172 | "through": { |
25188 | "version": "2.3.8", | 25173 | "version": "2.3.8", |
25189 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", | 25174 | "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", |
25190 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", | 25175 | "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=" |
25191 | "dev": true | ||
25192 | }, | 25176 | }, |
25193 | "through2": { | 25177 | "through2": { |
25194 | "version": "3.0.1", | 25178 | "version": "3.0.1", |
@@ -26954,6 +26938,24 @@ | |||
26954 | "string-width": "^2.1.1" | 26938 | "string-width": "^2.1.1" |
26955 | } | 26939 | } |
26956 | }, | 26940 | }, |
26941 | "win-ca": { | ||
26942 | "version": "3.1.1", | ||
26943 | "resolved": "https://registry.npmjs.org/win-ca/-/win-ca-3.1.1.tgz", | ||
26944 | "integrity": "sha512-uZj8zifF459u1apoVjXKVBBnh4NyILbC0W5asVtILwseNenc+krP44C0FWn6RXGjOHvxLKfYoIm0xl/R8wlw+g==", | ||
26945 | "requires": { | ||
26946 | "is-electron": "^2.2.0", | ||
26947 | "make-dir": "^1.3.0", | ||
26948 | "node-forge": "^0.8.2", | ||
26949 | "split": "^1.0.1" | ||
26950 | }, | ||
26951 | "dependencies": { | ||
26952 | "node-forge": { | ||
26953 | "version": "0.8.5", | ||
26954 | "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-0.8.5.tgz", | ||
26955 | "integrity": "sha512-vFMQIWt+J/7FLNyKouZ9TazT74PRV3wgv9UT4cRjC8BffxFbKXkgIWR42URCPSnHm/QDz6BOlb2Q0U4+VQT67Q==" | ||
26956 | } | ||
26957 | } | ||
26958 | }, | ||
26957 | "window-size": { | 26959 | "window-size": { |
26958 | "version": "0.1.4", | 26960 | "version": "0.1.4", |
26959 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", | 26961 | "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", |
diff --git a/package.json b/package.json index f60556f51..2641cb721 100644 --- a/package.json +++ b/package.json | |||
@@ -2,7 +2,7 @@ | |||
2 | "name": "ferdi", | 2 | "name": "ferdi", |
3 | "productName": "Ferdi", | 3 | "productName": "Ferdi", |
4 | "appId": "com.kytwb.ferdi", | 4 | "appId": "com.kytwb.ferdi", |
5 | "version": "5.4.1-beta.2", | 5 | "version": "5.4.1-beta.3", |
6 | "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", | 6 | "description": "Messaging app for WhatsApp, Slack, Telegram, HipChat, Hangouts and many many more.", |
7 | "copyright": "kytwb", | 7 | "copyright": "kytwb", |
8 | "main": "index.js", | 8 | "main": "index.js", |
@@ -56,7 +56,7 @@ | |||
56 | "@meetfranz/forms": "file:packages/forms", | 56 | "@meetfranz/forms": "file:packages/forms", |
57 | "@meetfranz/theme": "file:packages/theme", | 57 | "@meetfranz/theme": "file:packages/theme", |
58 | "@meetfranz/ui": "file:packages/ui", | 58 | "@meetfranz/ui": "file:packages/ui", |
59 | "@sentry/electron": "0.17.4", | 59 | "@sentry/electron": "1.1.0", |
60 | "address-rfc2822": "^2.0.1", | 60 | "address-rfc2822": "^2.0.1", |
61 | "atob": "2.1.2", | 61 | "atob": "2.1.2", |
62 | "auto-launch": "5.0.5", | 62 | "auto-launch": "5.0.5", |
@@ -152,7 +152,7 @@ | |||
152 | "cross-env": "^5.0.5", | 152 | "cross-env": "^5.0.5", |
153 | "cz-conventional-changelog": "2.1.0", | 153 | "cz-conventional-changelog": "2.1.0", |
154 | "dotenv": "^4.0.0", | 154 | "dotenv": "^4.0.0", |
155 | "electron": "7.1.2", | 155 | "electron": "7.1.6", |
156 | "electron-builder": "21.2.0", | 156 | "electron-builder": "21.2.0", |
157 | "electron-notarize": "0.2.1", | 157 | "electron-notarize": "0.2.1", |
158 | "electron-rebuild": "1.8.8", | 158 | "electron-rebuild": "1.8.8", |
diff --git a/src/api/RecipePreviewsApi.js b/src/api/RecipePreviewsApi.js index d9c675d76..a56fa587f 100644 --- a/src/api/RecipePreviewsApi.js +++ b/src/api/RecipePreviewsApi.js | |||
@@ -1,4 +1,4 @@ | |||
1 | export default class ServicesApi { | 1 | export default class RecipePreviewsApi { |
2 | constructor(server) { | 2 | constructor(server) { |
3 | this.server = server; | 3 | this.server = server; |
4 | } | 4 | } |
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 | } |