mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-09-27 23:14:36 +08:00
💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Summary: This commit splits apart the `AccountDeltaConnection` class, which was in charge of listening to both cloud /and/ local deltas by way of an artificial interface, `DeltaStreamingInMemoryConnection`. Splitting this into 2 modules with separate responsibilities will hopefully make this code easier to reason about and reduce some cruft and unnecessary indirection. Specifically, this commit makes it so: - `DeltaConnectionManager` is only in charge of starting and ending `DeltaStreamingConnection`s, which are solely in charge of listening to deltas from the cloud api - `LocalSyncDeltaEmitter` no longer unnecessarily emits events for the `deltas` package to listen to but rather directly processes and saves those deltas from the K2 db to edgehill.db - `LocalSyncDeltaEmitter` is also in charge of keeping track of the latest received cursor, under its own JSONBlob key in edgehill.db. This migrates localSync cursors saved under the old key. - `LocalSyncDeltaEmitter` is now instantiated and managed from within the `SyncProcessManager` as opposed to the `SyncWorker`. Apart from removing extra state from the `SyncWorker`, this removes dependencies on the client-app environment from the sync-worker. - `DeltaStreamingInMemoryConnection` and `AccountDeltaConnection` are now gone (Sorry for the big diff! This one was a little hard to split up without landing something broken) Depends on D4121 Test Plan: manual + unit tests planned in upcoming diff Reviewers: halla, mark, evan, spang Reviewed By: evan Differential Revision: https://phab.nylas.com/D4122 |
||
---|---|---|
.ebextensions | ||
arclib | ||
packages | ||
scripts | ||
.arcconfig | ||
.arclint | ||
.babelrc | ||
.dockerignore | ||
.eslintrc | ||
.gitignore | ||
.travis.yml | ||
appveyor.yml | ||
deploy-it | ||
Dockerfile | ||
lerna.json | ||
package.json | ||
README.md |
Nylas Mail
This is a collection of all components required to run Nylas Mail.
- Isomorphic Core: Shared code across local client and cloud servers
- Client App: The main Electron app for Nylas Mail mirrored to open source repo.
- Client Sync: The local mailsync engine integreated in Nylas Mail
- Client Private Plugins: Private Nylas Mail plugins (like SFDC)
- Cloud API: The cloud-based auth and metadata APIs for N1
- Cloud Core: Shared code used in all remote cloud services
- Cloud Workers: Cloud workers for services like send later
See /packages
for the separate pieces. Each folder in /packages
is
designed to be its own stand-alone repository. They are all bundled here
for the ease of source control management.
Initial Setup for All Local & Cloud Services:
New Computer (Mac):
New Computer (Linux - Debian/Ubuntu):
- Install Node 6+ via NodeSource (trusted):
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs
- Install Redis locally
sudo apt-get install -y redis-server redis-tools
benefit of letting us use subdomains.
Running Nylas Mail
npm install
(Only on fresh install and new packages)npm run start-client
: Starts Electron app clientnpm run start-cloud
: Starts cloud API locally