Steps to reproduce:
1. As an admin, go to `/config/edit/maniphest.statuses/` and make sure that the a closed task status (e.g. `"resolved"`) includes the line `"claim": true`
2. Have a simple Task, Open, without owner
3. Add Action > Change Status > Resolved
- NOTE: An automatic Transaction is added to Claim=yourself
4. Add Action > Assign / Claim > __unset yourself__
5. Save
What happens:
> {F267558}
What should happen:
No warning should be raised.
This is a corner case since, the warning it's useful when a field is empty. But, in this case, there is a default in action: it is really setting yourself as Assignee. And you are unsetting it, and not leaving it as just blank.
== What probably happens ==
This is an attempt to describe what kind of interaction happens under the hood. Every line is a new time phase.
Starting from a simple Task, Open, without owner:
| Phase | What you Do | What Phorge does | Notes |
|-------|--------------------------------------------------|------------------|-------|
| 1 | Add Action > Change Status > Resolved {F325665} | | |
| 2 | | The `ManiphestTransactionEditor` ([[ /source/phorge/browse/master/src/applications/maniphest/editor/ManiphestTransactionEditor.php;4cedb928aa2032c92e5ef509a3541b191b9d88f6$356-368 | :356-368 ]]) expandes the transaction to __set yourself as claimer__ {F325667} | (This is nice) |
| 3 | Add Action > Assign / Claim > __unset yourself__ {F325669} | | |
| | | The Preview does not show anymore yourself as claimer. {F325671} | |
| 4 | Save (what is it actually sent?) | | ← On Save, maybe "Expanded transactions that were unset" should be skipped |
| 5 | | The `PhabricatorApplicationTransactionEditor` ([[ /source/phorge/browse/master/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php;4cedb928aa2032c92e5ef509a3541b191b9d88f6$2821-2826 | :2821-2826 ]]) thinks Claim=null was unuseful | |
| 6 | | `throw new PhabricatorApplicationTransactionNoEffectException` | |
| 7 | | The mentioned error is shown {F267558} | |
Things that could be inspirational:
* `PhabricatorApplicationTransaction::setIgnoreOnNoEffect()`
* https://secure.phabricator.com/D8328 (that implemented that ↑)
It seems the comment actions are generated from these files:
* https://we.phorge.it/source/phorge/browse/master/src/applications/transactions/view/PhabricatorApplicationTransactionCommentView.php
* https://we.phorge.it/source/phorge/browse/master/webroot/rsrc/js/application/transactions/behavior-comment-actions.js