Martin Brennan bd25627198
FIX: IMAP post alerter race condition and code improvements (#11711)
This PR fixes a race condition with the IMAP notification code. In the `Email::Receiver` we call the `NewPostManager` to create the post and enqueue jobs and sends alerts via `PostAlerter`. However, if the post alerter reaches the `notify_pm_users` and the `group_notifying_via_smtp` method _before_ the incoming email is updated with the post and topic, we unnecessarily send a notification to the person who just posted. The result of this is that the IMAP syncer re-imports the email sent to the user about their own post, which looks like this in the group inbox:

To fix this, we skip the jobs enqueued by `NewPostManager` and only enqueue them with `PostJobsEnqueuer` manually _after_ the incoming email record has been updated with the post and topic.

Other improvements:

* Moved code to calculate email addresses from `IncomingEmail` records into the topic, with a group passed in, for easier testing and debugging. It is not the responsibility of the post alerter to figure this stuff out.
* Add shortcut methods on `IncomingEmail` to split or provide an empty array for to and cc addresses to avoid repetition.
2021-01-15 10:54:46 +10:00
..
2020-04-28 15:59:39 +05:30
2019-11-29 15:49:08 +00:00
2020-08-21 11:36:53 +08:00
2020-10-27 23:42:33 +05:30
2019-10-21 12:08:20 +01:00
2019-05-13 15:24:24 +01:00
2020-05-05 13:46:57 +10:00
2020-09-01 13:41:04 +05:30
2020-09-01 13:41:04 +05:30
2020-12-02 12:36:41 +05:30
2020-10-27 23:42:33 +05:30
2020-10-27 23:42:33 +05:30
2020-10-27 23:42:33 +05:30
2020-04-28 15:59:39 +05:30
2020-10-27 23:42:33 +05:30
2019-10-17 16:58:22 +11:00
2020-10-27 23:42:33 +05:30