1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2025-03-06 09:29:28 +01:00

Conpherence - improve performance by handling dropdowns (notifications, threads) as standard response data

Summary: Ref T7708. Rather than invoking the general client -> server dropdown refresh path, return the data with the various conpherence requests and update the dropdowns that way. Saves 2 client -> server requests per conpherence action.

Test Plan: loaded up /conpherence/ and noted message count deduct correctly. clicked specific message and noted message count deduct successfully. did same two tests via durable column and again saw message counts deduct successfully.

Reviewers: epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T7708

Differential Revision: https://secure.phabricator.com/D12761
This commit is contained in:
Bob Trahan 2015-05-07 16:04:56 -07:00
parent ef3b62564e
commit 33e7038b96
6 changed files with 80 additions and 43 deletions

View file

@ -8,7 +8,7 @@
return array( return array(
'names' => array( 'names' => array(
'core.pkg.css' => 'ca3f6a60', 'core.pkg.css' => 'ca3f6a60',
'core.pkg.js' => 'dcd6c8e3', 'core.pkg.js' => '919c56b5',
'darkconsole.pkg.js' => 'e7393ebb', 'darkconsole.pkg.js' => 'e7393ebb',
'differential.pkg.css' => 'bb338e4b', 'differential.pkg.css' => 'bb338e4b',
'differential.pkg.js' => '895b8d62', 'differential.pkg.js' => '895b8d62',
@ -341,12 +341,12 @@ return array(
'rsrc/image/texture/table_header_hover.png' => '038ec3b9', 'rsrc/image/texture/table_header_hover.png' => '038ec3b9',
'rsrc/image/texture/table_header_tall.png' => 'd56b434f', 'rsrc/image/texture/table_header_tall.png' => 'd56b434f',
'rsrc/js/application/aphlict/Aphlict.js' => '5359e785', 'rsrc/js/application/aphlict/Aphlict.js' => '5359e785',
'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '0323afdd', 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '995ad707',
'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'b1a59974', 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'b1a59974',
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761', 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761',
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de', 'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '7a608e21', 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '9e507b59',
'rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js' => 'cf86d16a', 'rsrc/js/application/conpherence/behavior-drag-and-drop-photo.js' => 'cf86d16a',
'rsrc/js/application/conpherence/behavior-durable-column.js' => '657c2b50', 'rsrc/js/application/conpherence/behavior-durable-column.js' => '657c2b50',
'rsrc/js/application/conpherence/behavior-menu.js' => '804b0773', 'rsrc/js/application/conpherence/behavior-menu.js' => '804b0773',
@ -513,7 +513,7 @@ return array(
'conpherence-menu-css' => 'f389e048', 'conpherence-menu-css' => 'f389e048',
'conpherence-message-pane-css' => '3150e2a2', 'conpherence-message-pane-css' => '3150e2a2',
'conpherence-notification-css' => 'd208f806', 'conpherence-notification-css' => 'd208f806',
'conpherence-thread-manager' => '7a608e21', 'conpherence-thread-manager' => '9e507b59',
'conpherence-transaction-css' => '25138b7f', 'conpherence-transaction-css' => '25138b7f',
'conpherence-update-css' => '1099a660', 'conpherence-update-css' => '1099a660',
'conpherence-widget-pane-css' => '2af42ebe', 'conpherence-widget-pane-css' => '2af42ebe',
@ -541,7 +541,7 @@ return array(
'inline-comment-summary-css' => 'eb5f8e8c', 'inline-comment-summary-css' => 'eb5f8e8c',
'javelin-aphlict' => '5359e785', 'javelin-aphlict' => '5359e785',
'javelin-behavior' => '61cbc29a', 'javelin-behavior' => '61cbc29a',
'javelin-behavior-aphlict-dropdown' => '0323afdd', 'javelin-behavior-aphlict-dropdown' => '995ad707',
'javelin-behavior-aphlict-listen' => 'b1a59974', 'javelin-behavior-aphlict-listen' => 'b1a59974',
'javelin-behavior-aphlict-status' => 'ea681761', 'javelin-behavior-aphlict-status' => 'ea681761',
'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884', 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884',
@ -836,16 +836,6 @@ return array(
'029a133d' => array( '029a133d' => array(
'aphront-dialog-view-css', 'aphront-dialog-view-css',
), ),
'0323afdd' => array(
'javelin-behavior',
'javelin-request',
'javelin-stratcom',
'javelin-vector',
'javelin-dom',
'javelin-uri',
'javelin-behavior-device',
'phabricator-title',
),
'048330fa' => array( '048330fa' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-typeahead-ondemand-source', 'javelin-typeahead-ondemand-source',
@ -1387,17 +1377,6 @@ return array(
'javelin-behavior', 'javelin-behavior',
'javelin-quicksand', 'javelin-quicksand',
), ),
'7a608e21' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
'javelin-aphlict',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
),
'7a68dda3' => array( '7a68dda3' => array(
'owners-path-editor', 'owners-path-editor',
'javelin-behavior', 'javelin-behavior',
@ -1589,6 +1568,16 @@ return array(
'javelin-dom', 'javelin-dom',
'javelin-reactor-dom', 'javelin-reactor-dom',
), ),
'995ad707' => array(
'javelin-behavior',
'javelin-request',
'javelin-stratcom',
'javelin-vector',
'javelin-dom',
'javelin-uri',
'javelin-behavior-device',
'phabricator-title',
),
'9a340b3d' => array( '9a340b3d' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-dom', 'javelin-dom',
@ -1598,6 +1587,17 @@ return array(
'phuix-action-view', 'phuix-action-view',
'javelin-workflow', 'javelin-workflow',
), ),
'9e507b59' => array(
'javelin-dom',
'javelin-util',
'javelin-stratcom',
'javelin-install',
'javelin-aphlict',
'javelin-workflow',
'javelin-router',
'javelin-behavior-device',
'javelin-vector',
),
'9f36c42d' => array( '9f36c42d' => array(
'javelin-behavior', 'javelin-behavior',
'javelin-stratcom', 'javelin-stratcom',

View file

@ -88,12 +88,19 @@ final class ConpherenceColumnViewController extends
PhabricatorPolicyCapability::CAN_EDIT); PhabricatorPolicyCapability::CAN_EDIT);
} }
$dropdown_query = id(new AphlictDropdownDataQuery())
->setViewer($user);
$dropdown_query->execute();
$response = array( $response = array(
'content' => hsprintf('%s', $durable_column), 'content' => hsprintf('%s', $durable_column),
'threadID' => $conpherence_id, 'threadID' => $conpherence_id,
'threadPHID' => $conpherence_phid, 'threadPHID' => $conpherence_phid,
'latestTransactionID' => $latest_transaction_id, 'latestTransactionID' => $latest_transaction_id,
'canEdit' => $can_edit, 'canEdit' => $can_edit,
'aphlictDropdownData' => array(
$dropdown_query->getNotificationData(),
$dropdown_query->getConpherenceData(),
),
); );
return id(new AphrontAjaxResponse())->setContent($response); return id(new AphrontAjaxResponse())->setContent($response);

View file

@ -543,8 +543,10 @@ final class ConpherenceUpdateController
break; break;
} }
} }
$data = $conpherence->getDisplayData($user); $data = $conpherence->getDisplayData($user);
$dropdown_query = id(new AphlictDropdownDataQuery())
->setViewer($user);
$dropdown_query->execute();
$content = array( $content = array(
'non_update' => $non_update, 'non_update' => $non_update,
'transactions' => hsprintf('%s', $rendered_transactions), 'transactions' => hsprintf('%s', $rendered_transactions),
@ -555,6 +557,10 @@ final class ConpherenceUpdateController
'header' => $header, 'header' => $header,
'file_widget' => $file_widget, 'file_widget' => $file_widget,
'people_widget' => $people_widget, 'people_widget' => $people_widget,
'aphlictDropdownData' => array(
$dropdown_query->getNotificationData(),
$dropdown_query->getConpherenceData(),
),
); );
return $content; return $content;

View file

@ -94,6 +94,9 @@ final class ConpherenceViewController extends
$content['title'] = $title = $d_data['title']; $content['title'] = $title = $d_data['title'];
if ($request->isAjax()) { if ($request->isAjax()) {
$dropdown_query = id(new AphlictDropdownDataQuery())
->setViewer($user);
$dropdown_query->execute();
$content['threadID'] = $conpherence->getID(); $content['threadID'] = $conpherence->getID();
$content['threadPHID'] = $conpherence->getPHID(); $content['threadPHID'] = $conpherence->getPHID();
$content['latestTransactionID'] = $data['latest_transaction_id']; $content['latestTransactionID'] = $data['latest_transaction_id'];
@ -101,6 +104,10 @@ final class ConpherenceViewController extends
$user, $user,
$conpherence, $conpherence,
PhabricatorPolicyCapability::CAN_EDIT); PhabricatorPolicyCapability::CAN_EDIT);
$content['aphlictDropdownData'] = array(
$dropdown_query->getNotificationData(),
$dropdown_query->getConpherenceData(),
);
return id(new AphrontAjaxResponse())->setContent($content); return id(new AphrontAjaxResponse())->setContent($content);
} }

View file

@ -93,8 +93,19 @@ JX.behavior('aphlict-dropdown', function(config, statics) {
if (!data.fromServer) { if (!data.fromServer) {
return; return;
} }
var updated = false;
var new_data = data.newResponse.aphlictDropdownData; var new_data = data.newResponse.aphlictDropdownData;
update_counts(new_data);
});
JX.Stratcom.listen(
'conpherence-redraw-aphlict',
null,
function (e) {
update_counts(e.getData());
});
function update_counts(new_data) {
var updated = false;
for (var ii = 0; ii < new_data.length; ii++) { for (var ii = 0; ii < new_data.length; ii++) {
if (new_data[ii].countType != config.countType) { if (new_data[ii].countType != config.countType) {
continue; continue;
@ -108,7 +119,7 @@ JX.behavior('aphlict-dropdown', function(config, statics) {
if (updated) { if (updated) {
dirty = true; dirty = true;
} }
}); }
function set_visible(menu, icon) { function set_visible(menu, icon) {
if (menu) { if (menu) {

View file

@ -205,7 +205,10 @@ JX.install('ConpherenceThreadManager', {
_markUpdated: function(r) { _markUpdated: function(r) {
this._updating.knownID = r.latest_transaction_id; this._updating.knownID = r.latest_transaction_id;
this._latestTransactionID = r.latest_transaction_id; this._latestTransactionID = r.latest_transaction_id;
JX.Stratcom.invoke('notification-panel-update', null, {}); JX.Stratcom.invoke(
'conpherence-redraw-aphlict',
null,
r.aphlictDropdownData);
}, },
_updateThread: function() { _updateThread: function() {
@ -298,7 +301,10 @@ JX.install('ConpherenceThreadManager', {
this._latestTransactionID = r.latestTransactionID; this._latestTransactionID = r.latestTransactionID;
this._canEditLoadedThread = r.canEdit; this._canEditLoadedThread = r.canEdit;
JX.Stratcom.invoke('notification-panel-update', null, {}); JX.Stratcom.invoke(
'conpherence-redraw-aphlict',
null,
r.aphlictDropdownData);
this._didLoadThreadCallback(r); this._didLoadThreadCallback(r);