@recaptime-dev's working patches + fork for Phorge, a community fork of Phabricator. (Upstream dev and stable branches are at upstream/main and upstream/stable respectively.) hq.recaptime.dev/wiki/Phorge
phorge phabricator
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

When you swap between document rendering engines, populate or redraw blame if appropriate

Summary: Depends on D19311. Ref T13105. Currently, blame only renders on the initial request. Instead, redraw blame after swapping views.

Test Plan: Swapped from "Source -> Hexdump -> Source" and "Hexdump -> Source". Saw blame on source in all cases.

Maniphest Tasks: T13105

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

+27 -11
+7 -7
resources/celerity/map.php
··· 390 390 'rsrc/js/application/diffusion/behavior-pull-lastmodified.js' => 'f01586dc', 391 391 'rsrc/js/application/doorkeeper/behavior-doorkeeper-tag.js' => '1db13e70', 392 392 'rsrc/js/application/drydock/drydock-live-operation-status.js' => '901935ef', 393 - 'rsrc/js/application/files/behavior-document-engine.js' => 'ac52a3be', 393 + 'rsrc/js/application/files/behavior-document-engine.js' => 'ed539253', 394 394 'rsrc/js/application/files/behavior-icon-composer.js' => '8499b6ab', 395 395 'rsrc/js/application/files/behavior-launch-icon-composer.js' => '48086888', 396 396 'rsrc/js/application/harbormaster/behavior-harbormaster-log.js' => '191b4909', ··· 604 604 'javelin-behavior-diffusion-jump-to' => '73d09eef', 605 605 'javelin-behavior-diffusion-locate-file' => '6d3e1947', 606 606 'javelin-behavior-diffusion-pull-lastmodified' => 'f01586dc', 607 - 'javelin-behavior-document-engine' => 'ac52a3be', 607 + 'javelin-behavior-document-engine' => 'ed539253', 608 608 'javelin-behavior-doorkeeper-tag' => '1db13e70', 609 609 'javelin-behavior-drydock-live-operation-status' => '901935ef', 610 610 'javelin-behavior-durable-column' => '2ae077e1', ··· 1764 1764 'javelin-dom', 1765 1765 'javelin-typeahead-normalizer', 1766 1766 ), 1767 - 'ac52a3be' => array( 1768 - 'javelin-behavior', 1769 - 'javelin-dom', 1770 - 'javelin-stratcom', 1771 - ), 1772 1767 'acd29eee' => array( 1773 1768 'javelin-behavior', 1774 1769 'javelin-stratcom', ··· 2120 2115 'javelin-dom', 2121 2116 'javelin-stratcom', 2122 2117 'javelin-vector', 2118 + ), 2119 + 'ed539253' => array( 2120 + 'javelin-behavior', 2121 + 'javelin-dom', 2122 + 'javelin-stratcom', 2123 2123 ), 2124 2124 'edf8a145' => array( 2125 2125 'javelin-behavior',
+20 -4
webroot/rsrc/js/application/files/behavior-document-engine.js
··· 151 151 } 152 152 153 153 data.sequence = (data.sequence || 0) + 1; 154 - var handler = JX.bind(null, onrender, data, data.sequence); 154 + var handler = JX.bind(null, onrender, data, data.sequence, spec); 155 155 156 156 data.viewKey = spec.viewKey; 157 157 ··· 190 190 JX.DOM.setContent(viewport, JX.$H(spec.loadingMarkup)); 191 191 } 192 192 193 - function onrender(data, sequence, r) { 193 + function onrender(data, sequence, spec, r) { 194 194 // If this isn't the most recent request we sent, throw it away. This can 195 195 // happen if the user makes multiple selections from the menu while we are 196 196 // still rendering the first view. ··· 209 209 data.loadingView = false; 210 210 211 211 JX.DOM.setContent(viewport, JX.$H(r.markup)); 212 + 213 + // If this engine supports rendering blame, populate or draw it. 214 + if (spec.canBlame) { 215 + blame(data); 216 + } 212 217 } 213 218 214 219 function blame(data) { 220 + // If the rendering engine can't handle blame, bail. 215 221 if (!data.blame.uri) { 216 222 return; 217 223 } 218 224 225 + // If we already have an outstanding request for blame data, bail. 226 + if (data.blame.request) { 227 + return; 228 + } 229 + 230 + // If we don't have blame data yet, request it and then try rendering 231 + // again later. 219 232 if (!data.blame.value) { 220 - new JX.Request(data.blame.uri, JX.bind(null, onblame, data)) 221 - .send(); 233 + var req = new JX.Request(data.blame.uri, JX.bind(null, onblame, data)); 234 + data.blame.request = req; 235 + req.send(); 222 236 return; 223 237 } 224 238 239 + // We're ready to render. 225 240 var viewport = JX.$(data.viewportID); 226 241 227 242 var cells = JX.DOM.scry(viewport, 'th'); ··· 253 268 } 254 269 255 270 function onblame(data, r) { 271 + data.blame.request = null; 256 272 data.blame.value = r; 257 273 blame(data); 258 274 }