All Projects → ProtonMail → proton-mail-settings

ProtonMail / proton-mail-settings

Licence: other
React web application to manage ProtonMail settings

Programming Languages

typescript
32286 projects
shell
77523 projects
SCSS
7915 projects
HTML
75241 projects
javascript
184084 projects - #8 most used programming language

ProtonMail-settings

You will need:

  • bash
  • node (mini latest LTS)
  • npm (latest too, it's better)

If you use Windows plz follow this document before anything else how to prepare Windows

How to dev 1

  1. Clone this repository
  2. Run $ npm i
  3. $ npm start

It will give you the URL where it's available.

You can login via /login

How to dev 2

  1. Clone the WebClient
  2. Clone this repository
  3. Clone fe-proxy
  4. Run $ npm install in every repo
  5. Create an env file with the key ROOT_DIR=/tmp (if you cloned everything inside /tmp )

⚠️ Clone them inside the same root dir.

Once it's done ./app dev 🎉

It will run first, WebClient, then settings and proxy. ⚠️ A bit static for now, it's quick&dirty so 8080, 8081 and 8040 need to be available.

App available on http://localhost:8040. Settings available on http://localhost:8040/settings/

Where should I should I clone them ?

Better to keep the default dir and inside the same dir. ex:

49 directories, 56 files 
[atlas]:~/dev/taf
$ pwd     
/home/dhoko/dev/taf
[atlas]:~/dev/taf
$ tree -l
.
├── Angular
├── protonmail-settings
└── fe-proxy

Here WebClient is inside the dir Angular, is it an issue ? Nope. We can configure it via the env.

ROOT_DIR=/home/dhoko/dev/taf
WEBCLIENT_APP=Angular

One key/env:

  • WEBCLIENT_APP: dirname where is the webclient
  • SETTINGS_APP: dirname where is protonmail-settings
  • PROXY_APP: dirname where is the fe-proxy

Default === dirname with the default git clone dir.

Sync translations [App to crowdin]

You can sync them via $ npm run i18n:upgrade, it will:

  • Extract translations
  • Push them to crowndin
  • Create a commit with them on the repo

How to deploy

  • $ npm run deploy -- --branch=<deploy-X> --api=<target> Deploy the app as /settings

  • $ npm run deploy:standalone -- --branch=<deploy-X> --api=<target> Deploy the app as deploy + /login

Based on proton-bundler

Deploy to prod

$ npm run deploy:prod

Build from master post git clone into /tmp. --no-remote build from local.

How to test

  1. Set up tests
  2. Start the app
  3. Run npm run e2e for the CLI or npm run e2e-dev for the cypress test runner.
  4. 🎉🎉🎉

Sync translations [Crowdin to our App]

To get latest translations available on crowdin, you can run $ npm run i18n:getlatest. It will:

  • Get list of translations available (default same as proton-i18n crowdin --list --type --limit=95)
  • Upgrade our translations with ones from crowdin
  • Store a cache of translations available in the app
  • Export translations as JSON
  • Commit everything

⚠️ If you want to get only a custom list of translations, configure it inside po/i18n.txt and run $ npm run i18n:getlatest -- --custom

🚀 Create a new version (before deploy)

This command will:

  • Manage dependencies (detect and update the lock)
  • Take care of active npm links
  • run npm version
$ npx proton-version <patch|minor|major>

Default is patch

If you want to force the update of all dependencies add the flag --all;

By default it provides a prompt and ask you what you want to update etc.

If you have an active npm link it will remove it from your node_modules.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].