1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-22 14:52:41 +01:00

Avoid PhabricatorApplicationTransactionStructureException on editors not supporting Mute Notifications

Summary:
Do not expose the "Mute Notifications" sidebar menu entry when the underlying Editor for that object type does not support muting notifications (means: creating a transaction of type "core:edge") at all.
This avoids a disappointing `PhabricatorApplicationTransactionStructureException` after two clicks.

Disabling the menu entry while still exposing it makes no sense here as the user could never get it enabled anyway.

```
EXCEPTION: (PhabricatorApplicationTransactionStructureException) Attempting to apply a transaction (of class "PhabricatorFileTransaction", with type "core:edge") which has not been constructed correctly: Transaction has type "core:edge", but that transaction type is not supported by this editor (PhabricatorFileEditor). at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:1830]
```

```
EXCEPTION: (PhabricatorApplicationTransactionStructureException) Attempting to apply a transaction (of class "LegalpadTransaction", with type "core:edge") which has not been constructed correctly: Transaction has type "core:edge", but that transaction type is not supported by this editor (LegalpadDocumentEditor). at [<phorge>/src/applications/transactions/editor/PhabricatorApplicationTransactionEditor.php:1830]
```

Closes T15378

Test Plan:
* Open various different object types:
** Files: http://phorge.localhost/F1 (not implemented)
** Legalpad: http://phorge.localhost/legalpad/view/1/ (not implemented)
** Maniphest: http://phorge.localhost/T1 (implemented)
* Click "Subscribe" on these various types of objects.
* Click "Mute Notifications" on these various types of objects, remember which objects throw an exception.
* Apply this patch.
* Check that "Mute Notifications" is not exposed for those types of objects that threw an exception.

Reviewers: O1 Blessed Committers, valerio.bozzolan

Reviewed By: O1 Blessed Committers, valerio.bozzolan

Subscribers: tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15378

Differential Revision: https://we.phorge.it/D25730
This commit is contained in:
Andre Klapper 2024-07-11 12:07:28 +02:00
parent 8793bdbaa8
commit e2919211f3

View file

@ -94,6 +94,15 @@ final class PhabricatorSubscriptionsUIEventListener
} }
} }
$actions = $event->getValue('actions');
$actions[] = $sub_action;
// Hide "Mute Notifications" in sidebar if not supported by Editor - T15378
$supported_editor_transaction_types =
array_fill_keys($object->getApplicationTransactionEditor()
->getTransactionTypesForObject($object), true);
if (array_key_exists(PhabricatorTransactions::TYPE_EDGE,
$supported_editor_transaction_types)) {
$mute_action = id(new PhabricatorActionView()) $mute_action = id(new PhabricatorActionView())
->setWorkflow(true) ->setWorkflow(true)
->setHref('/subscriptions/mute/'.$object->getPHID().'/') ->setHref('/subscriptions/mute/'.$object->getPHID().'/')
@ -109,11 +118,9 @@ final class PhabricatorSubscriptionsUIEventListener
->setIcon('fa-volume-off') ->setIcon('fa-volume-off')
->setColor(PhabricatorActionView::RED); ->setColor(PhabricatorActionView::RED);
} }
$actions = $event->getValue('actions');
$actions[] = $sub_action;
$actions[] = $mute_action; $actions[] = $mute_action;
}
$event->setValue('actions', $actions); $event->setValue('actions', $actions);
} }