HomePhabricator

Provide a global router for Ajax requests

Description

Provide a global router for Ajax requests

Summary:
Fixes T430. Fixes T4834. Obsoletes D7641. Currently, we do some things less-well than we could:

  • We just let the browser queue and prioritize requests, so if you load a revision with 50 changes and then click "Award Token", the action blocks until the changes load in most/all browsers. It would be better to prioritize this action and queue it immediately.
  • Similarly, changes tend to load in order, even if the user has clicked to a specific file. When the user expresses a preference for a specific file, we should prioritize it.
  • We show a spinning GIF when waiting on requests. This is appropriate for some types of reuqests, but distracting for others.

To fix this:

  • Queue all (or, at least, most) requests into a new queue in JX.Router.
  • JX.Router handles prioritizing the requests. Principally:
    • You can submit a request with a specific priority (500 = general content loading, 1000 = default, 2000 = explicit user action) and JX.Router will get the higher stuff fired off sooner.
    • You can name requests and then adjust their prorities later, if the user expresses an interest in specific results.
  • Only use the spinner gif for "workflow" requests, which is bascially when the user clicked something and we're waiting on the server. I think it's useful and not-annoying in this case.
  • Don't show any status for draft requests.
  • For content requests, show a subtle hipster-style top loading bar.

Test Plan:

  • Viewed a diff with 93 changes, and clicked award token.
    • Prior to this patch, the action took many many seconds to resolve.
    • After this patch, it resolves quickly.
  • Viewed a diff with 93 changes and saw a pleasant subtle hipster-style loading bar.
  • Viewed a diff with 93 changes and typed some draft text. Previews populated fairly quickly and there was no spinner.
  • Viewed a diff with 93 changes and clicked something with workflow, saw a spinner after a moment.
  • Viewed a diff with 93 changes and clicked a file in the table of contents near the end of the list.
    • Prior to this patch, it took a long time to show up.
    • After this patch, it loads directly.

Reviewers: chad, btrahan

Reviewed By: btrahan

Subscribers: epriestley

Maniphest Tasks: T430, T4834

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

Details

Provenance
epriestleyAuthored on
epriestleyPushed on May 5 2014, 5:57 PM
Reviewer
btrahan
Differential Revision
D8979: Provide a global router for Ajax requests
Parents
rPbfc1ccfdf110: Move all comment management junk into a dropdown menu
Branches
Unknown
Tags
Unknown
Tasks
Restricted Maniphest Task
T4834: Distracting (animated gif!) compass when typing Maniphest tasks and comments

Event Timeline