@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.

Conpherence - fix 0 messages in header race condition

Summary:
Fixes T7545. Turns out we had the right logic to handle this basically, and just needed to variablize the CSS class that gets added / removed as appropos.

Note the new behavior is to keep the icon highlighted just with no number. This emulates how it would work if e.g. there was no unread message in the first place and you just clicked the message icon to invoke the message menu.

Test Plan: had a durable conpherence open for user A with user B. used a separate browser to send message as user B. reloaded as user A - saw new message in conpherence durable column and the "1" unread icon. I then clicked the "1" and saw it disappear as expected

Reviewers: chad, epriestley

Reviewed By: epriestley

Subscribers: Korvin, epriestley

Maniphest Tasks: T7545

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

+17 -15
+13 -13
resources/celerity/map.php
··· 8 8 return array( 9 9 'names' => array( 10 10 'core.pkg.css' => 'a7f3dc55', 11 - 'core.pkg.js' => '69f7e542', 11 + 'core.pkg.js' => '75599122', 12 12 'darkconsole.pkg.js' => '8ab24e01', 13 13 'differential.pkg.css' => '1940be3f', 14 14 'differential.pkg.js' => '85fd84c6', ··· 347 347 'rsrc/image/texture/table_header_hover.png' => '038ec3b9', 348 348 'rsrc/image/texture/table_header_tall.png' => 'd56b434f', 349 349 'rsrc/js/application/aphlict/Aphlict.js' => '2be71d56', 350 - 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '830b3278', 350 + 'rsrc/js/application/aphlict/behavior-aphlict-dropdown.js' => '00def500', 351 351 'rsrc/js/application/aphlict/behavior-aphlict-listen.js' => 'bdf2226d', 352 352 'rsrc/js/application/aphlict/behavior-aphlict-status.js' => 'ea681761', 353 353 'rsrc/js/application/auth/behavior-persona-login.js' => '9414ff18', ··· 543 543 'inline-comment-summary-css' => 'eb5f8e8c', 544 544 'javelin-aphlict' => '2be71d56', 545 545 'javelin-behavior' => '61cbc29a', 546 - 'javelin-behavior-aphlict-dropdown' => '830b3278', 546 + 'javelin-behavior-aphlict-dropdown' => '00def500', 547 547 'javelin-behavior-aphlict-listen' => 'bdf2226d', 548 548 'javelin-behavior-aphlict-status' => 'ea681761', 549 549 'javelin-behavior-aphront-basic-tokenizer' => 'b3a4b884', ··· 832 832 'unhandled-exception-css' => '37d4f9a2', 833 833 ), 834 834 'requires' => array( 835 + '00def500' => array( 836 + 'javelin-behavior', 837 + 'javelin-request', 838 + 'javelin-stratcom', 839 + 'javelin-vector', 840 + 'javelin-dom', 841 + 'javelin-uri', 842 + 'javelin-behavior-device', 843 + 'phabricator-title', 844 + ), 835 845 '0286a1db' => array( 836 846 'javelin-dom', 837 847 'javelin-util', ··· 1431 1441 ), 1432 1442 '82ce2142' => array( 1433 1443 'aphront-typeahead-control-css', 1434 - ), 1435 - '830b3278' => array( 1436 - 'javelin-behavior', 1437 - 'javelin-request', 1438 - 'javelin-stratcom', 1439 - 'javelin-vector', 1440 - 'javelin-dom', 1441 - 'javelin-uri', 1442 - 'javelin-behavior-device', 1443 - 'phabricator-title', 1444 1444 ), 1445 1445 '834a1173' => array( 1446 1446 'javelin-behavior',
+2
src/view/page/menu/PhabricatorMainMenuView.php
··· 375 375 'uri' => '/conpherence/panel/', 376 376 'countType' => 'messages', 377 377 'countNumber' => $message_count_number, 378 + 'unreadClass' => 'message-unread', 378 379 )); 379 380 380 381 $message_notification_dropdown = javelin_tag( ··· 458 459 'uri' => '/notification/panel/', 459 460 'countType' => 'notifications', 460 461 'countNumber' => $count_number, 462 + 'unreadClass' => 'alert-unread', 461 463 )); 462 464 463 465 $notification_dropdown = javelin_tag(
+2 -2
webroot/rsrc/js/application/aphlict/behavior-aphlict-dropdown.js
··· 49 49 50 50 JX.DOM.setContent(count, display); 51 51 if (response.number === 0) { 52 - JX.DOM.alterClass(bubble, 'alert-unread', false); 52 + JX.DOM.alterClass(bubble, config.unreadClass, false); 53 53 } else { 54 - JX.DOM.alterClass(bubble, 'alert-unread', true); 54 + JX.DOM.alterClass(bubble, config.unreadClass, true); 55 55 } 56 56 dirty = false; 57 57 JX.DOM.alterClass(