Page MenuHomePhorge

Avoid PhabricatorApplicationTransactionStructureException on editors not supporting Mute Notifications
ClosedPublic

Authored by aklapper on Jul 11 2024, 10:08.

Details

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:
  • 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.

Diff Detail

Repository
rP Phorge
Branch
T15378
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 1436
Build 1436: arc lint + arc unit