HomePhabricator

Update client logic for inline comment "Save" and "Cancel" actions

Description

Update client logic for inline comment "Save" and "Cancel" actions

Summary: Ref T13559. Substantially correct the client logic for "Save" and "Cancel" actions to handle unusual cases.

Test Plan:
Quoting behavior:

  • Quoted a comment.
  • Cancelled the quoted comment without modifying anything.
  • Reloaded page.
    • Before changes: quoted comment still exists.
    • After changes: quoted comment is deleted.
  • Looked at comment count in header, saw consistent behavior (before: weird behavior).

Empty suggestion behavior:

  • Created a new comment on a suggestable file.
  • Clicked "Suggest Edit" to enable suggestions.
  • Without making any text or suggestion changes, clicked "Save".
    • Before changes: comment saves, but is empty.
    • After changes: comment deletes itself without undo.

General behavior:

  • Created and saved an empty comment (deletes itself).
  • Created and saved a nonempty comment (saves as draft).
  • Created and saved an empty comment with an edit suggestion (saves).
  • Created and saved an empty comment with a suggestion to entirely delete lines -- that is, no suggestion text (saves).
  • Edited a comment, saved without changes (save).
  • Edited a comment, save deleting all text (saves -- note that this is intentionally without undo, since this is a lot of steps to do by accident).
  • Cancel editing an unchanged comment (cancels without undo).
  • Cancel editing a changed comment (cancels with undo).
    • Undo'd, got text back.
  • Cancel new comment with no text (deletes without undo).
  • Cancel new comment with text (deletes with undo).
    • Undo'd, got text back.
  • Saved a quoted comment with no changes (saves -- note that this is intentionally not a "delete", since just quoting someone seems fine if you click "Save" -- maybe you want to come back to it later).

Maniphest Tasks: T13559

Differential Revision: https://secure.phabricator.com/D21654