mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-03-06 04:54:34 +08:00
💌 A beautiful, fast and fully open source mail client for Mac, Windows and Linux.
Summary: refactor multi-send This diff started off by fixing sending with attachments. The issue is that our `FileUploadStore` listened for `Actions.sendDraftSuccess` as its signal to remove the files from the .nylas temp directory. Unfortunately, the old MultiSend tasks, after delivery of the message, would try and put the base message in the sent folder. Since we already deleted the file from our local temp dir, creating the base message for the sent folder would fail. This exposed a much bigger issue which is that we don't consistently distinguish between "delivery" of a message and any post-processing we do (like filling the sent folder). This was leading to a variety of other subtle issues. For example, N1 assumes that if the SendMessage task fails, then we pop the draft back up and ask the user to try again. Unfortunately, since we were combining "delivery" and "post processing" it was possible for the message to actually deliver, but fail when stuffing the sent folder, or fail due to some other random bug. This would cause the user to send the message twice. To help us ensure we never "deliver" twice and handle errors more intuitively, I separated out the two concepts. Now there are "send" set of tasks and endpoints, and a "EnsureMessageInSentFolder" set of tasks and endpoint (the latter used to be ambiguously known as ReconcileMultiSend, whatever that meant) The logic for send hasn't changed. This is mostly a renaming and moving files around. Test Plan: manual :( Reviewers: jackie, juan, halla Reviewed By: juan, halla Differential Revision: https://phab.nylas.com/D3577 |
||
---|---|---|
.ebextensions | ||
arclib | ||
packages | ||
scripts | ||
.arcconfig | ||
.arclint | ||
.babelrc | ||
.dockerignore | ||
.eslintrc | ||
.gitignore | ||
.tern-project | ||
Dockerfile | ||
lerna.json | ||
package.json | ||
pm2-dev.yml | ||
pm2-prod-api.yml | ||
pm2-prod-workers.yml | ||
README.md | ||
test_accounts.txt |
K2 - Local Sync Engine & Cloud Services for Nylas N1
This is a collection of all sync and cloud components required to run N1.
- 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
- Isomorphic Core: Shared code across local client and cloud servers
- Local Sync: The local mailsync engine integreated in Nylas N1
See /packages
for the separate pieces. Each folder in /packages
is
designed to be its own stand-alone repositoriy. They are all bundled here
for the ease of source control management.
Initial Setup for All Local & Cloud Services:
New Computer (Mac):
- Install Homebrew
- Install NVM
brew install nvm
- Install Node 6 via NVM:
nvm install 6
- Install Redis locally
brew install redis
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.