Simplify field saving before draft publishing.

Review Request #13043 — Created May 11, 2023 and submitted

Information

Review Board
release-6.x

Reviewers

In order to make the "save before publish" operation a little more
streamlined, I'm rearranging things so that it can be somewhat less
event driven. This previously involved:

  1. ReviewRequestEditorView calls finishSave for each open field.
  2. The field calls InlineEditorView.submit.
  3. InlineEditorView.save triggers the "complete" event.
  4. "complete" is handled by the field view, which calls
    ReviewRequestEditor.setDraftField
  5. ReviewRequestEditor.setDraftField calls ReviewRequestDraft.save
    with the new data.
  6. As each of the fields are saved, ReviewRequestEditor is keeping
    track via a pendingSaveCount attribute, which will trigger a new
    call to publishDraft once the count is zero.

After this change, it involves:

  1. ReviewRequestEditorView calls finishSave for each open field,
    using the returned promise to wait for the save completion.
  2. ReviewRequestEditorView calls ReviewRequestEditor.publishDraft.

IMPORTANT NOTE: this only affects the legacy draft review banner, which
is disabled and will be removed soon (perhaps before RB6, perhaps
after). A similar implementation for the unified banner is coming next.

This change also fixes up several unit tests which had been broken by
refactoring but were marked as "pending" when the unified banner is
enabled.

  • Ran js-tests.
  • Disabled the unified banner feature and ran js-tests.
  • Disabled the unified banner feature and published a draft while
    several field editors were open. Saw them all save and the draft
    publish correctly.
Summary ID
Simplify field saving before draft publishing.
In order to make the "save before publish" operation a little more streamlined, I'm rearranging things so that it can be somewhat less event driven. This previously involved: 1. `ReviewRequestEditorView` calls `finishSave` for each open field. 2. The field calls `InlineEditorView.submit`. 3. `InlineEditorView.save` triggers the "complete" event. 4. "complete" is handled by the field view, which calls `ReviewRequestEditor.setDraftField` 5. `ReviewRequestEditor.setDraftField` calls `ReviewRequestDraft.save` with the new data. 6. As each of the fields are saved, `ReviewRequestEditor` is keeping track via a `pendingSaveCount` attribute, which will trigger a new call to `publishDraft` once the count is zero. After this change, it involves: 1. `ReviewRequestEditorView` calls `finishSave` for each open field, using the returned promise to wait for the save completion. 2. `ReviewRequestEditorView` calls `ReviewRequestEditor.publishDraft`. IMPORTANT NOTE: this only affects the legacy draft review banner, which is disabled and will be removed soon (perhaps before RB6, perhaps after). A similar implementation for the unified banner is coming next. This change also fixes up several unit tests which had been broken by refactoring but were marked as "pending" when the unified banner is enabled. Testing Done: - Ran js-tests. - Disabled the unified banner feature and ran js-tests. - Disabled the unified banner feature and published a draft while several field editors were open. Saw them all save and the draft publish correctly.
b52caff30fac415b925da5d1f2c257ddd38be471
maubin
  1. Ship It!
  2. 
      
david
Review request changed
Status:
Completed
Change Summary:
Pushed to release-6.x (0d58bf3)