mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-18 21:02:41 +01:00
Conpherence - make show older messages work correctly in durable column
Summary: Fixes T8009. This was basically moving the behavior from conpherence full behavior menu into the ConpherenceThreadManager so it could be re used in the durable column. The durable column bit has no special styles - its just a link - but it seems to work well enough. I think it could be removed altogether if / when we add some automagical scrolling back into history stuff. Test Plan: loaded up a conpherence in a durable column and used 'show older messages' successfully. loaded up a conpherence in regular view mid transaction and used show older and show newer successfully Reviewers: epriestley Reviewed By: epriestley Subscribers: Korvin, epriestley Maniphest Tasks: T8009 Differential Revision: https://secure.phabricator.com/D12816
This commit is contained in:
parent
8e9ee86357
commit
048eb6cf61
4 changed files with 110 additions and 97 deletions
|
@ -8,7 +8,7 @@
|
||||||
return array(
|
return array(
|
||||||
'names' => array(
|
'names' => array(
|
||||||
'core.pkg.css' => 'ed3d6355',
|
'core.pkg.css' => 'ed3d6355',
|
||||||
'core.pkg.js' => '3ed82e2f',
|
'core.pkg.js' => '616511ac',
|
||||||
'darkconsole.pkg.js' => 'e7393ebb',
|
'darkconsole.pkg.js' => 'e7393ebb',
|
||||||
'differential.pkg.css' => 'bb338e4b',
|
'differential.pkg.css' => 'bb338e4b',
|
||||||
'differential.pkg.js' => '895b8d62',
|
'differential.pkg.js' => '895b8d62',
|
||||||
|
@ -348,10 +348,10 @@ return array(
|
||||||
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
|
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
|
||||||
'rsrc/js/application/calendar/event-all-day.js' => 'ca5fa62a',
|
'rsrc/js/application/calendar/event-all-day.js' => 'ca5fa62a',
|
||||||
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
|
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
|
||||||
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '9e507b59',
|
'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'de397217',
|
||||||
'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' => 'bc5107aa',
|
'rsrc/js/application/conpherence/behavior-durable-column.js' => '61252a27',
|
||||||
'rsrc/js/application/conpherence/behavior-menu.js' => '804b0773',
|
'rsrc/js/application/conpherence/behavior-menu.js' => 'eb61cb03',
|
||||||
'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861',
|
'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861',
|
||||||
'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
|
'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
|
||||||
'rsrc/js/application/conpherence/behavior-widget-pane.js' => '93568464',
|
'rsrc/js/application/conpherence/behavior-widget-pane.js' => '93568464',
|
||||||
|
@ -516,7 +516,7 @@ return array(
|
||||||
'conpherence-menu-css' => 'f389e048',
|
'conpherence-menu-css' => 'f389e048',
|
||||||
'conpherence-message-pane-css' => '0e75feef',
|
'conpherence-message-pane-css' => '0e75feef',
|
||||||
'conpherence-notification-css' => 'd208f806',
|
'conpherence-notification-css' => 'd208f806',
|
||||||
'conpherence-thread-manager' => '9e507b59',
|
'conpherence-thread-manager' => 'de397217',
|
||||||
'conpherence-transaction-css' => '42a457f6',
|
'conpherence-transaction-css' => '42a457f6',
|
||||||
'conpherence-update-css' => '1099a660',
|
'conpherence-update-css' => '1099a660',
|
||||||
'conpherence-widget-pane-css' => '2af42ebe',
|
'conpherence-widget-pane-css' => '2af42ebe',
|
||||||
|
@ -557,7 +557,7 @@ return array(
|
||||||
'javelin-behavior-choose-control' => '6153c708',
|
'javelin-behavior-choose-control' => '6153c708',
|
||||||
'javelin-behavior-config-reorder-fields' => '14a827de',
|
'javelin-behavior-config-reorder-fields' => '14a827de',
|
||||||
'javelin-behavior-conpherence-drag-and-drop-photo' => 'cf86d16a',
|
'javelin-behavior-conpherence-drag-and-drop-photo' => 'cf86d16a',
|
||||||
'javelin-behavior-conpherence-menu' => '804b0773',
|
'javelin-behavior-conpherence-menu' => 'eb61cb03',
|
||||||
'javelin-behavior-conpherence-pontificate' => '21ba5861',
|
'javelin-behavior-conpherence-pontificate' => '21ba5861',
|
||||||
'javelin-behavior-conpherence-widget-pane' => '93568464',
|
'javelin-behavior-conpherence-widget-pane' => '93568464',
|
||||||
'javelin-behavior-countdown-timer' => 'e4cc26b3',
|
'javelin-behavior-countdown-timer' => 'e4cc26b3',
|
||||||
|
@ -584,7 +584,7 @@ return array(
|
||||||
'javelin-behavior-diffusion-locate-file' => '6d3e1947',
|
'javelin-behavior-diffusion-locate-file' => '6d3e1947',
|
||||||
'javelin-behavior-diffusion-pull-lastmodified' => '2b228192',
|
'javelin-behavior-diffusion-pull-lastmodified' => '2b228192',
|
||||||
'javelin-behavior-doorkeeper-tag' => 'e5822781',
|
'javelin-behavior-doorkeeper-tag' => 'e5822781',
|
||||||
'javelin-behavior-durable-column' => 'bc5107aa',
|
'javelin-behavior-durable-column' => '61252a27',
|
||||||
'javelin-behavior-error-log' => '6882e80a',
|
'javelin-behavior-error-log' => '6882e80a',
|
||||||
'javelin-behavior-event-all-day' => 'ca5fa62a',
|
'javelin-behavior-event-all-day' => 'ca5fa62a',
|
||||||
'javelin-behavior-fancy-datepicker' => '5c0f680f',
|
'javelin-behavior-fancy-datepicker' => '5c0f680f',
|
||||||
|
@ -1256,6 +1256,16 @@ return array(
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'61252a27' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-behavior-device',
|
||||||
|
'javelin-scrollbar',
|
||||||
|
'javelin-quicksand',
|
||||||
|
'phabricator-keyboard-shortcut',
|
||||||
|
'conpherence-thread-manager',
|
||||||
|
),
|
||||||
'6153c708' => array(
|
'6153c708' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
|
@ -1395,20 +1405,6 @@ return array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-history',
|
'javelin-history',
|
||||||
),
|
),
|
||||||
'804b0773' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-workflow',
|
|
||||||
'javelin-behavior-device',
|
|
||||||
'javelin-history',
|
|
||||||
'javelin-vector',
|
|
||||||
'javelin-scrollbar',
|
|
||||||
'phabricator-title',
|
|
||||||
'phabricator-shaped-request',
|
|
||||||
'conpherence-thread-manager',
|
|
||||||
),
|
|
||||||
82439934 => array(
|
82439934 => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
@ -1578,17 +1574,6 @@ 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',
|
||||||
|
@ -1734,16 +1719,6 @@ return array(
|
||||||
'javelin-stratcom',
|
'javelin-stratcom',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
'bc5107aa' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-behavior-device',
|
|
||||||
'javelin-scrollbar',
|
|
||||||
'javelin-quicksand',
|
|
||||||
'phabricator-keyboard-shortcut',
|
|
||||||
'conpherence-thread-manager',
|
|
||||||
),
|
|
||||||
'bd4c8dca' => array(
|
'bd4c8dca' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
|
@ -1857,6 +1832,17 @@ return array(
|
||||||
'javelin-typeahead-ondemand-source',
|
'javelin-typeahead-ondemand-source',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'de397217' => array(
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-aphlict',
|
||||||
|
'javelin-workflow',
|
||||||
|
'javelin-router',
|
||||||
|
'javelin-behavior-device',
|
||||||
|
'javelin-vector',
|
||||||
|
),
|
||||||
'df5e11d2' => array(
|
'df5e11d2' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
),
|
),
|
||||||
|
@ -1934,6 +1920,20 @@ return array(
|
||||||
'phabricator-phtize',
|
'phabricator-phtize',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'eb61cb03' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-workflow',
|
||||||
|
'javelin-behavior-device',
|
||||||
|
'javelin-history',
|
||||||
|
'javelin-vector',
|
||||||
|
'javelin-scrollbar',
|
||||||
|
'phabricator-title',
|
||||||
|
'phabricator-shaped-request',
|
||||||
|
'conpherence-thread-manager',
|
||||||
|
),
|
||||||
'efe49472' => array(
|
'efe49472' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
|
|
|
@ -30,6 +30,7 @@ JX.install('ConpherenceThreadManager', {
|
||||||
_canEditLoadedThread: null,
|
_canEditLoadedThread: null,
|
||||||
_updating: null,
|
_updating: null,
|
||||||
_minimalDisplay: false,
|
_minimalDisplay: false,
|
||||||
|
_messagesRootCallback: JX.bag,
|
||||||
_willLoadThreadCallback: JX.bag,
|
_willLoadThreadCallback: JX.bag,
|
||||||
_didLoadThreadCallback: JX.bag,
|
_didLoadThreadCallback: JX.bag,
|
||||||
_didUpdateThreadCallback: JX.bag,
|
_didUpdateThreadCallback: JX.bag,
|
||||||
|
@ -99,6 +100,11 @@ JX.install('ConpherenceThreadManager', {
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
setMessagesRootCallback: function(callback) {
|
||||||
|
this._messagesRootCallback = callback;
|
||||||
|
return this;
|
||||||
|
},
|
||||||
|
|
||||||
setWillLoadThreadCallback: function(callback) {
|
setWillLoadThreadCallback: function(callback) {
|
||||||
this._willLoadThreadCallback = callback;
|
this._willLoadThreadCallback = callback;
|
||||||
return this;
|
return this;
|
||||||
|
@ -183,6 +189,52 @@ JX.install('ConpherenceThreadManager', {
|
||||||
|
|
||||||
this._updateThread();
|
this._updateThread();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
JX.Stratcom.listen(
|
||||||
|
'click',
|
||||||
|
'show-older-messages',
|
||||||
|
JX.bind(this, function(e) {
|
||||||
|
e.kill();
|
||||||
|
var data = e.getNodeData('show-older-messages');
|
||||||
|
|
||||||
|
var node = e.getNode('show-older-messages');
|
||||||
|
JX.DOM.setContent(node, 'Loading...');
|
||||||
|
JX.DOM.alterClass(
|
||||||
|
node,
|
||||||
|
'conpherence-show-more-messages-loading',
|
||||||
|
true);
|
||||||
|
|
||||||
|
new JX.Workflow(this._getMoreMessagesURI(), data)
|
||||||
|
.setHandler(JX.bind(this, function(r) {
|
||||||
|
JX.DOM.remove(node);
|
||||||
|
var messages = JX.$H(r.messages);
|
||||||
|
JX.DOM.prependContent(
|
||||||
|
this._messagesRootCallback(),
|
||||||
|
messages);
|
||||||
|
})).start();
|
||||||
|
}));
|
||||||
|
JX.Stratcom.listen(
|
||||||
|
'click',
|
||||||
|
'show-newer-messages',
|
||||||
|
JX.bind(this, function(e) {
|
||||||
|
e.kill();
|
||||||
|
var data = e.getNodeData('show-newer-messages');
|
||||||
|
var node = e.getNode('show-newer-messages');
|
||||||
|
JX.DOM.setContent(node, 'Loading...');
|
||||||
|
JX.DOM.alterClass(
|
||||||
|
node,
|
||||||
|
'conpherence-show-more-messages-loading',
|
||||||
|
true);
|
||||||
|
|
||||||
|
new JX.Workflow(this._getMoreMessagesURI(), data)
|
||||||
|
.setHandler(JX.bind(this, function(r) {
|
||||||
|
JX.DOM.remove(node);
|
||||||
|
var messages = JX.$H(r.messages);
|
||||||
|
JX.DOM.appendContent(
|
||||||
|
this._messagesRootCallback(),
|
||||||
|
JX.$H(messages));
|
||||||
|
})).start();
|
||||||
|
}));
|
||||||
},
|
},
|
||||||
|
|
||||||
_shouldUpdateDOM: function(r) {
|
_shouldUpdateDOM: function(r) {
|
||||||
|
@ -216,9 +268,7 @@ JX.install('ConpherenceThreadManager', {
|
||||||
action: 'load',
|
action: 'load',
|
||||||
});
|
});
|
||||||
|
|
||||||
var uri = '/conpherence/update/' + this._loadedThreadID + '/';
|
var workflow = new JX.Workflow(this._getUpdateURI())
|
||||||
|
|
||||||
var workflow = new JX.Workflow(uri)
|
|
||||||
.setData(params)
|
.setData(params)
|
||||||
.setHandler(JX.bind(this, function(r) {
|
.setHandler(JX.bind(this, function(r) {
|
||||||
if (this._shouldUpdateDOM(r)) {
|
if (this._shouldUpdateDOM(r)) {
|
||||||
|
@ -350,9 +400,8 @@ JX.install('ConpherenceThreadManager', {
|
||||||
var data = e.getNodeData('tag:form');
|
var data = e.getNodeData('tag:form');
|
||||||
|
|
||||||
if (!data.preview) {
|
if (!data.preview) {
|
||||||
var uri = '/conpherence/update/' + this._loadedThreadID + '/';
|
|
||||||
data.preview = new JX.PhabricatorShapedRequest(
|
data.preview = new JX.PhabricatorShapedRequest(
|
||||||
uri,
|
this._getUpdateURI(),
|
||||||
JX.bag,
|
JX.bag,
|
||||||
JX.bind(this, function () {
|
JX.bind(this, function () {
|
||||||
var data = JX.DOM.convertFormToDictionary(form);
|
var data = JX.DOM.convertFormToDictionary(form);
|
||||||
|
@ -362,6 +411,14 @@ JX.install('ConpherenceThreadManager', {
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
data.preview.trigger();
|
data.preview.trigger();
|
||||||
|
},
|
||||||
|
|
||||||
|
_getUpdateURI: function() {
|
||||||
|
return '/conpherence/update/' + this._loadedThreadID + '/';
|
||||||
|
},
|
||||||
|
|
||||||
|
_getMoreMessagesURI: function() {
|
||||||
|
return '/conpherence/' + this._loadedThreadID + '/';
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -119,6 +119,9 @@ JX.behavior('durable-column', function(config, statics) {
|
||||||
|
|
||||||
var threadManager = new JX.ConpherenceThreadManager();
|
var threadManager = new JX.ConpherenceThreadManager();
|
||||||
threadManager.setMinimalDisplay(true);
|
threadManager.setMinimalDisplay(true);
|
||||||
|
threadManager.setMessagesRootCallback(function() {
|
||||||
|
return _getColumnMessagesNode();
|
||||||
|
});
|
||||||
threadManager.setLoadThreadURI('/conpherence/columnview/');
|
threadManager.setLoadThreadURI('/conpherence/columnview/');
|
||||||
threadManager.setWillLoadThreadCallback(function() {
|
threadManager.setWillLoadThreadCallback(function() {
|
||||||
_markLoading(true);
|
_markLoading(true);
|
||||||
|
|
|
@ -28,6 +28,9 @@ JX.behavior('conpherence-menu', function(config) {
|
||||||
|
|
||||||
// TODO - move more logic into the ThreadManager
|
// TODO - move more logic into the ThreadManager
|
||||||
var threadManager = new JX.ConpherenceThreadManager();
|
var threadManager = new JX.ConpherenceThreadManager();
|
||||||
|
threadManager.setMessagesRootCallback(function() {
|
||||||
|
return scrollbar.getContentNode();
|
||||||
|
});
|
||||||
threadManager.setWillLoadThreadCallback(function() {
|
threadManager.setWillLoadThreadCallback(function() {
|
||||||
markThreadLoading(true);
|
markThreadLoading(true);
|
||||||
});
|
});
|
||||||
|
@ -415,56 +418,6 @@ JX.behavior('conpherence-menu', function(config) {
|
||||||
.start();
|
.start();
|
||||||
});
|
});
|
||||||
|
|
||||||
var _oldLoadingTransactionID = null;
|
|
||||||
JX.Stratcom.listen('click', 'show-older-messages', function(e) {
|
|
||||||
e.kill();
|
|
||||||
var data = e.getNodeData('show-older-messages');
|
|
||||||
if (data.oldest_transaction_id == _oldLoadingTransactionID) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_oldLoadingTransactionID = data.oldest_transaction_id;
|
|
||||||
|
|
||||||
var node = e.getNode('show-older-messages');
|
|
||||||
JX.DOM.setContent(node, 'Loading...');
|
|
||||||
JX.DOM.alterClass(node, 'conpherence-show-more-messages-loading', true);
|
|
||||||
|
|
||||||
var conf_id = _thread.selected;
|
|
||||||
var messages_root = scrollbar.getContentNode();
|
|
||||||
new JX.Workflow(config.baseURI + conf_id + '/', data)
|
|
||||||
.setHandler(function(r) {
|
|
||||||
JX.DOM.remove(node);
|
|
||||||
var messages = JX.$H(r.messages);
|
|
||||||
JX.DOM.prependContent(
|
|
||||||
messages_root,
|
|
||||||
JX.$H(messages));
|
|
||||||
}).start();
|
|
||||||
});
|
|
||||||
|
|
||||||
var _newLoadingTransactionID = null;
|
|
||||||
JX.Stratcom.listen('click', 'show-newer-messages', function(e) {
|
|
||||||
e.kill();
|
|
||||||
var data = e.getNodeData('show-newer-messages');
|
|
||||||
if (data.newest_transaction_id == _newLoadingTransactionID) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
_newLoadingTransactionID = data.newest_transaction_id;
|
|
||||||
|
|
||||||
var node = e.getNode('show-newer-messages');
|
|
||||||
JX.DOM.setContent(node, 'Loading...');
|
|
||||||
JX.DOM.alterClass(node, 'conpherence-show-more-messages-loading', true);
|
|
||||||
|
|
||||||
var conf_id = _thread.selected;
|
|
||||||
var messages_root = scrollbar.getContentNode();
|
|
||||||
new JX.Workflow(config.baseURI + conf_id + '/', data)
|
|
||||||
.setHandler(function(r) {
|
|
||||||
JX.DOM.remove(node);
|
|
||||||
var messages = JX.$H(r.messages);
|
|
||||||
JX.DOM.appendContent(
|
|
||||||
messages_root,
|
|
||||||
JX.$H(messages));
|
|
||||||
}).start();
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* On devices, we just show a thread list, so we don't want to automatically
|
* On devices, we just show a thread list, so we don't want to automatically
|
||||||
* select or load any threads. On desktop, we automatically select the first
|
* select or load any threads. On desktop, we automatically select the first
|
||||||
|
|
Loading…
Reference in a new issue