Page MenuHomePhabricator

D12339.id29646.diff
No OneTemporary

D12339.id29646.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -354,9 +354,9 @@
'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761',
'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18',
'rsrc/js/application/config/behavior-reorder-fields.js' => '14a827de',
- 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => 'bb928342',
- 'rsrc/js/application/conpherence/behavior-durable-column.js' => 'a0216452',
- 'rsrc/js/application/conpherence/behavior-menu.js' => 'db6c0ba7',
+ 'rsrc/js/application/conpherence/ConpherenceThreadManager.js' => '0a5192c4',
+ 'rsrc/js/application/conpherence/behavior-durable-column.js' => '7ffa744f',
+ 'rsrc/js/application/conpherence/behavior-menu.js' => 'e67cfd8c',
'rsrc/js/application/conpherence/behavior-pontificate.js' => '21ba5861',
'rsrc/js/application/conpherence/behavior-quicksand-blacklist.js' => '7927a7d3',
'rsrc/js/application/conpherence/behavior-widget-pane.js' => '1ec93bcf',
@@ -519,7 +519,7 @@
'conpherence-menu-css' => '7c900089',
'conpherence-message-pane-css' => 'e44b667b',
'conpherence-notification-css' => '04a6e10a',
- 'conpherence-thread-manager' => 'bb928342',
+ 'conpherence-thread-manager' => '0a5192c4',
'conpherence-update-css' => '1099a660',
'conpherence-widget-pane-css' => 'a9082fd0',
'differential-changeset-view-css' => 'e19cfd6e',
@@ -559,7 +559,7 @@
'javelin-behavior-boards-dropdown' => '0ec56e1d',
'javelin-behavior-choose-control' => '6153c708',
'javelin-behavior-config-reorder-fields' => '14a827de',
- 'javelin-behavior-conpherence-menu' => 'db6c0ba7',
+ 'javelin-behavior-conpherence-menu' => 'e67cfd8c',
'javelin-behavior-conpherence-pontificate' => '21ba5861',
'javelin-behavior-conpherence-widget-pane' => '1ec93bcf',
'javelin-behavior-countdown-timer' => 'e4cc26b3',
@@ -586,7 +586,7 @@
'javelin-behavior-diffusion-locate-file' => '6d3e1947',
'javelin-behavior-diffusion-pull-lastmodified' => '2b228192',
'javelin-behavior-doorkeeper-tag' => 'e5822781',
- 'javelin-behavior-durable-column' => 'a0216452',
+ 'javelin-behavior-durable-column' => '7ffa744f',
'javelin-behavior-error-log' => '6882e80a',
'javelin-behavior-fancy-datepicker' => 'c51ae228',
'javelin-behavior-global-drag-and-drop' => 'bbdf75ca',
@@ -874,6 +874,16 @@
'javelin-dom',
'javelin-router',
),
+ '0a5192c4' => array(
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-install',
+ 'javelin-workflow',
+ 'javelin-router',
+ 'javelin-behavior-device',
+ 'javelin-vector',
+ ),
'0c6946e7' => array(
'javelin-install',
'javelin-dom',
@@ -1429,6 +1439,16 @@
'javelin-uri',
'phabricator-file-upload',
),
+ '7ffa744f' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-stratcom',
+ 'javelin-behavior-device',
+ 'javelin-scrollbar',
+ 'javelin-quicksand',
+ 'phabricator-keyboard-shortcut',
+ 'conpherence-thread-manager',
+ ),
82439934 => array(
'javelin-behavior',
'javelin-dom',
@@ -1578,16 +1598,6 @@
'javelin-request',
'phabricator-shaped-request',
),
- 'a0216452' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-stratcom',
- 'javelin-behavior-device',
- 'javelin-scrollbar',
- 'javelin-quicksand',
- 'phabricator-keyboard-shortcut',
- 'conpherence-thread-manager',
- ),
'a0b57eb8' => array(
'javelin-behavior',
'javelin-dom',
@@ -1681,16 +1691,6 @@
'javelin-dom',
'javelin-util',
),
- 'bb928342' => array(
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-install',
- 'javelin-workflow',
- 'javelin-router',
- 'javelin-behavior-device',
- 'javelin-vector',
- ),
'bba9eedf' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1803,19 +1803,6 @@
'javelin-util',
'phabricator-shaped-request',
),
- 'db6c0ba7' => array(
- 'javelin-behavior',
- 'javelin-dom',
- 'javelin-util',
- 'javelin-stratcom',
- 'javelin-workflow',
- 'javelin-behavior-device',
- 'javelin-history',
- 'javelin-vector',
- 'phabricator-title',
- 'phabricator-shaped-request',
- 'conpherence-thread-manager',
- ),
'dbbf48b6' => array(
'javelin-behavior',
'javelin-stratcom',
@@ -1901,6 +1888,19 @@
'javelin-behavior-device',
'phabricator-keyboard-shortcut',
),
+ 'e67cfd8c' => array(
+ 'javelin-behavior',
+ 'javelin-dom',
+ 'javelin-util',
+ 'javelin-stratcom',
+ 'javelin-workflow',
+ 'javelin-behavior-device',
+ 'javelin-history',
+ 'javelin-vector',
+ 'phabricator-title',
+ 'phabricator-shaped-request',
+ 'conpherence-thread-manager',
+ ),
'e723c323' => array(
'javelin-behavior',
'javelin-stratcom',
diff --git a/src/applications/conpherence/controller/ConpherenceUpdateController.php b/src/applications/conpherence/controller/ConpherenceUpdateController.php
--- a/src/applications/conpherence/controller/ConpherenceUpdateController.php
+++ b/src/applications/conpherence/controller/ConpherenceUpdateController.php
@@ -76,11 +76,17 @@
break;
case ConpherenceUpdateActions::MESSAGE:
$message = $request->getStr('text');
- $xactions = $editor->generateTransactionsFromText(
- $user,
- $conpherence,
- $message);
- $delete_draft = true;
+ if ($message) {
+ $xactions = $editor->generateTransactionsFromText(
+ $user,
+ $conpherence,
+ $message);
+ $delete_draft = true;
+ } else {
+ $action = ConpherenceUpdateActions::LOAD;
+ $updated = false;
+ $response_mode = 'ajax';
+ }
break;
case ConpherenceUpdateActions::ADD_PERSON:
$person_phids = $request->getArr('add_person');
@@ -397,13 +403,17 @@
->withIDs(array($conpherence_id))
->executeOne();
- if ($need_transactions) {
+ $non_update = false;
+ if ($need_transactions && $conpherence->getTransactions()) {
$data = ConpherenceTransactionView::renderTransactions(
$user,
$conpherence,
!$this->getRequest()->getExists('minimal_display'));
$participant_obj = $conpherence->getParticipant($user->getPHID());
$participant_obj->markUpToDate($conpherence, $data['latest_transaction']);
+ } else if ($need_transactions) {
+ $non_update = true;
+ $data = array();
} else {
$data = array();
}
@@ -451,6 +461,7 @@
}
$data = $conpherence->getDisplayData($user);
$content = array(
+ 'non_update' => $non_update,
'transactions' => hsprintf('%s', $rendered_transactions),
'conpherence_title' => (string) $data['title'],
'latest_transaction_id' => $new_latest_transaction_id,
diff --git a/webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js b/webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js
--- a/webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js
+++ b/webroot/rsrc/js/application/conpherence/ConpherenceThreadManager.js
@@ -183,6 +183,11 @@
_shouldUpdateDOM: function(r) {
if (this._updating &&
this._updating.threadPHID == this._loadedThreadPHID) {
+
+ if (r.non_update) {
+ return false;
+ }
+
// we have a different, more current update in progress so
// return early
if (r.latest_transaction_id < this._updating.knownID) {
@@ -282,6 +287,11 @@
},
sendMessage: function(form, params) {
+ // don't bother sending up text if there is nothing to submit
+ var textarea = JX.DOM.find(form, 'textarea');
+ if (!textarea.value.length) {
+ return;
+ }
params = this._getParams(params);
var keep_enabled = true;
@@ -292,6 +302,8 @@
this._markUpdated(r);
this._didSendMessageCallback(r);
+ } else if (r.non_update) {
+ this._didSendMessageCallback(r, true);
}
}));
this.syncWorkflow(workflow, 'finally');
diff --git a/webroot/rsrc/js/application/conpherence/behavior-durable-column.js b/webroot/rsrc/js/application/conpherence/behavior-durable-column.js
--- a/webroot/rsrc/js/application/conpherence/behavior-durable-column.js
+++ b/webroot/rsrc/js/application/conpherence/behavior-durable-column.js
@@ -140,7 +140,10 @@
_focusColumnTextareaNode();
});
- threadManager.setDidSendMessageCallback(function(r) {
+ threadManager.setDidSendMessageCallback(function(r, non_update) {
+ if (non_update) {
+ return;
+ }
var messages = _getColumnMessagesNode();
JX.DOM.appendContent(messages, JX.$H(r.transactions));
scrollbar.scrollTo(messages.scrollHeight);
@@ -305,12 +308,6 @@
// newline.
e.kill();
- var textarea = _getColumnTextareaNode();
- if (!textarea.value.length) {
- // If there's no text, don't try to submit the form.
- return;
- }
-
_sendMessage(e);
});
diff --git a/webroot/rsrc/js/application/conpherence/behavior-menu.js b/webroot/rsrc/js/application/conpherence/behavior-menu.js
--- a/webroot/rsrc/js/application/conpherence/behavior-menu.js
+++ b/webroot/rsrc/js/application/conpherence/behavior-menu.js
@@ -57,28 +57,30 @@
markThreadLoading(true);
JX.DOM.alterClass(form_root, 'loading', true);
});
- threadManager.setDidSendMessageCallback(function (r) {
+ threadManager.setDidSendMessageCallback(function (r, non_update) {
var root = JX.DOM.find(document, 'div', 'conpherence-layout');
var form_root = JX.DOM.find(root, 'div', 'conpherence-form');
- var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane');
- var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages');
- var fileWidget = null;
- try {
- fileWidget = JX.DOM.find(root, 'div', 'widgets-files');
- } catch (ex) {
- // Ignore; maybe no files widget
- }
- JX.DOM.appendContent(messages, JX.$H(r.transactions));
- messages.scrollTop = messages.scrollHeight;
+ var textarea = JX.DOM.find(form_root, 'textarea');
+ if (!non_update) {
+ var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane');
+ var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages');
+ var fileWidget = null;
+ try {
+ fileWidget = JX.DOM.find(root, 'div', 'widgets-files');
+ } catch (ex) {
+ // Ignore; maybe no files widget
+ }
+ JX.DOM.appendContent(messages, JX.$H(r.transactions));
+ messages.scrollTop = messages.scrollHeight;
- if (fileWidget) {
- JX.DOM.setContent(
- fileWidget,
- JX.$H(r.file_widget)
- );
+ if (fileWidget) {
+ JX.DOM.setContent(
+ fileWidget,
+ JX.$H(r.file_widget)
+ );
+ }
+ textarea.value = '';
}
- var textarea = JX.DOM.find(form_root, 'textarea');
- textarea.value = '';
markThreadLoading(false);
setTimeout(function() { JX.DOM.focus(textarea); }, 100);

File Metadata

Mime Type
text/plain
Expires
Thu, Feb 6, 6:56 AM (20 h, 9 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7094345
Default Alt Text
D12339.id29646.diff (11 KB)

Event Timeline