1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-09-21 09:48:47 +02:00
phorge-phorge/src/applications/phriction
epriestley a9ceebbdb1 Move all ApplicationTransaction publishing to daemons
Summary:
Ref T6367. Do all mail, feed, notification and search stuff from the daemons, in all editors.

There are four relatively-stateful editors (Audit, Differential, Phriction, PhortuneCart) which needed special care to move state into the daemons properly.

Beyond that, I moved mailTo/mailCC/feedRelated/feedNotify to be computed before we enter the worker:

  - This is simpler, since a lot of editors rely on being able to call `$object->getReviewers()` or similar to compute them.
  - This is more correct, since we want to freeze the lists at this moment in time.

Finally, I renamed `loadEdges` to `willPublish` and made it a slightly more general hook.

---

This is a bit fragile and I'm not //thrilled// about it.

It would probably be cleaner to have separate Editor and Publisher classes (something like @fabe's D11329 did). However, I think that's quite a lot of work, and I'd like to see stronger motivation for it (either in this actually being more fragile than I think, or there being other things we get out of it). Overall, I'm comfortable with this change, just definitely not a big fan of the "save" + "load" pattern since I think it's really fragile, nonobvious, hard to debug/predict, etc.

Test Plan:
Directly updated editors:

- Created a new Phriction page, saw "Document Content".
- Edited a Phriction page, saw "Document Diff".
- Edited a revision, got normal looking mail.
- Faked in `changedPriorToCommitURI` and verified it survived the state boundary.
- Sent Audit mail.
- Sent invoice mail.

Indirect editors - for these, I just made a change and made sure the mail generated:

- Updated a paste.
- Updated an event.
- Updated a thread.
- Updated a task.
- Updated a mock.
- Updated a question.
- Updated a project.
- Updated a file.
- Updated an initiative.
- Updated a Legalpad document.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: epriestley, fabe

Maniphest Tasks: T6367

Differential Revision: https://secure.phabricator.com/D13115
2015-06-03 18:59:29 -07:00
..
application Implement a scope selector for the global search 2015-04-22 14:31:36 -07:00
conduit phtize all the things 2015-05-22 21:16:39 +10:00
config Add getGroup to ConfigOptions 2015-02-09 13:10:56 -08:00
constants Remove unused PhrictionActionConstants class 2015-06-03 20:23:08 +10:00
controller phtize all the things 2015-05-22 21:16:39 +10:00
editor Move all ApplicationTransaction publishing to daemons 2015-06-03 18:59:29 -07:00
herald Use a typeahead for "document types" in global search 2015-04-22 15:25:34 -07:00
mail phtize all the things 2015-05-22 21:16:39 +10:00
markup Add some missing type hints 2015-05-05 07:33:00 +10:00
phid Separate handle "status" and "availability" 2015-05-14 11:14:44 -07:00
query phtize all the things 2015-05-22 21:16:39 +10:00
search Rename PHIDType classes 2014-07-24 08:05:46 +10:00
storage phtize all the things 2015-05-22 21:16:39 +10:00