1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-11 01:12:41 +01:00
phorge-phorge/src/applications
epriestley ab2aa74d6e Fix several duplication/replay behaviors in Aphlict
Summary:
Ref T12566. Ref T12563. This fixes three bugs with Aphlict replay stuff:

First, Conphernece would try to repaint the UI even if no thread was open. Only repaint when a thread is open.

Second, although we deduplicate JX.Leader messages, we didn't deduplicate actual notification messages. If you browsed the leader window, then it re-elected itelf as a leader and replayed history, it could rebroadcast notifications and other windows could show doubles. Deduplicate notifications to prevent this.

Third, we always replayed the last 60 seconds of history. When you browsed the leader window, whichever window became the new leader (possibly the one you just browsed) could replay messages from before it had opened, leading to duplicate messages. Particularly, after receiving a message and then browsing you could see that message again. Instead, only replay history as far back as when the window first opened.

Test Plan:
  - Clicked "Repaint" with a thread open, saw a repaint. Clicked "Repaint" with Conpherence open but no thread, no repaint and no 404 request to `/update/null/`.
  - In browser A, opened three windows. In browser B, sent a notification. In browser A, browsed the leader window away twice in a row. Observed that the window which never became a leader doesn't duplicate notifications.
  - In browser A, opened three windows. In browser B, sent a notification. In browser A, browsed the leader window away over and over again. Observed that replay requests issued with appropriate history windows.

Reviewers: chad

Reviewed By: chad

Maniphest Tasks: T12566, T12563

Differential Revision: https://secure.phabricator.com/D17722
2017-04-18 12:10:12 -07:00
..
almanac Cache Almanac URIs for repositories 2016-12-06 09:14:45 -08:00
aphlict Discard stdout/stderr from the aphlict subprocess when running in daemon (normal) mode 2016-11-13 16:43:42 -08:00
arcanist/conduit
audit Restrict Audit buckets to just ApplicationSearch views 2017-03-23 12:46:19 -07:00
auth Dirty the SSH key cache when usernames change 2017-04-14 08:03:00 -07:00
badges Move Files to ModularTransactions 2017-04-04 10:25:05 -07:00
base Rename "PhabricatorHash::digest()" to "weakDigest()" 2017-04-06 15:43:33 -07:00
cache With APCu 5+, use apcu_* function to examine cache state 2017-01-12 15:59:44 -08:00
calendar Render timezones in event reminder mail, and render them more nicely 2017-04-10 08:48:37 -07:00
celerity Rename "PhabricatorHash::digest()" to "weakDigest()" 2017-04-06 15:43:33 -07:00
chatlog Remove empty implementations of describeAutomaticCapabilities() 2016-11-09 15:24:22 -08:00
conduit Provide a hint that submitting a Conduit call shows you how to encode particular parameters 2017-03-24 13:15:03 -07:00
config Hold recent messages in Aphlict so they can be replayed after clients reconnect 2017-04-17 15:53:58 -07:00
conpherence Play a sound when receiving a new chat message 2017-04-18 11:34:17 -07:00
console After a reconnect, repaint Conpherence thread state 2017-04-17 16:00:32 -07:00
countdown Remove old Countdown route 2017-04-13 13:04:55 -07:00
daemon Give Daemons a mobile menu 2017-03-24 09:19:56 -07:00
dashboard Provide a 'no dashboards' fallback state if you can't add any 2017-03-21 11:43:02 -07:00
differential Fix an issue where rejecting reviewers weren't powerful enough 2017-04-11 09:54:34 -07:00
diffusion Fix two strings with missing pht() 2017-04-07 10:07:01 -07:00
diviner Fix a constant typo in Diviner ("DECLARATAION" -> "TION") 2017-03-04 09:54:10 -08:00
doorkeeper Remove empty implementations of describeAutomaticCapabilities() 2016-11-09 15:24:22 -08:00
draft/storage Clean up some log spam caused by races in VersionedDraft 2016-09-05 13:01:53 -07:00
drydock Fix 4 typos in code 2017-04-07 04:09:56 -07:00
fact Update Facts for newPage 2016-04-03 15:07:52 -07:00
favorites Add some style to label in Favorites Menu 2017-02-01 07:20:31 -08:00
feed Prevent media from autoplaying when rendered as a feed story 2016-11-22 14:19:56 -08:00
files Make daemons perform file deletion 2017-04-18 11:09:41 -07:00
flag Remove counts from home navigation 2017-01-21 13:55:40 -08:00
fund Consistently refer to 'Projects' as 'Tags' 2016-04-19 16:48:21 +00:00
guides Add a bunch of Phacility-specific code to the upstream, thinly veiled as generic code 2016-11-15 09:11:22 -08:00
harbormaster Fix 4 typos in code 2017-04-07 04:09:56 -07:00
help Redesign header menus and search 2017-01-17 12:13:06 -08:00
herald Reduce application search engine results list for Dashboards 2017-02-22 12:42:43 -08:00
home Fix italics issue with nux state on homepage 2017-02-25 15:30:17 -08:00
legalpad Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
lipsum Add "--force" and "--quickly" flags to bin/lipsum 2017-02-27 09:09:41 -08:00
macro Fix display of current file on Macro creation 2017-02-03 17:10:02 -08:00
maniphest Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
meta Redesign Home/Profile/Projects side navigation 2017-01-31 08:59:01 -08:00
metamta Raise a tailored error message on "show-outbound --id cat" 2017-04-18 09:51:26 -07:00
multimeter Add a cluster.read-only option 2016-04-09 13:40:47 -07:00
notification Fix several duplication/replay behaviors in Aphlict 2017-04-18 12:10:12 -07:00
nuance Remove some no-op "canUninstall()" Application methods 2016-12-05 11:02:25 -08:00
oauthserver Reduce application search engine results list for Dashboards 2017-02-22 12:42:43 -08:00
owners Allow Owner Packages to be in a Dashboard Panel 2017-03-30 15:13:40 -07:00
packages Reduce application search engine results list for Dashboards 2017-02-22 12:42:43 -08:00
passphrase Make Passphrase "token" credentials accessible via the API 2016-11-15 09:12:35 -08:00
paste Fix bad "editPolicy" key in Paste 2017-04-05 13:09:51 -07:00
people Dirty the SSH key cache when usernames change 2017-04-14 08:03:00 -07:00
phame Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
phid Use violet with not-verified user tags 2017-04-13 12:19:49 -07:00
phlux Remove empty implementations of describeAutomaticCapabilities() 2016-11-09 15:24:22 -08:00
pholio Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
phortune Reduce code duplication in Phortune account controllers 2017-04-14 10:24:56 -07:00
phpast Update phpast for new UI 2016-04-05 13:52:59 -07:00
phragment Remove PhabricatorFile::buildFromFileDataOrHash() 2017-04-04 16:18:00 -07:00
phrequent Allow Phrequent to be used in dashboard panels 2017-03-06 11:00:55 -08:00
phriction Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
phurl Change PhabricatorPhurlURLViewController to use EditEngine for commenting 2017-04-17 10:19:21 -07:00
policy Update "bin/policy show" to use PolicyCodex 2017-04-11 15:21:18 -07:00
ponder Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
project Remove FIELD_KEYWORDS, index project slugs as body content 2017-04-02 09:36:32 -07:00
releeph Replace Remarkup calls to PhabricatorHash::digest() with SHA256 2017-04-06 15:43:18 -07:00
remarkup/conduit
repository When closing tasks with "Fixes xxx", try to act more authentically as the acting user 2017-04-14 08:03:46 -07:00
search Extend "fulltext" and "ngrams" interfaces from "indexable" interface 2017-04-17 12:59:41 -07:00
settings Rename "PhabricatorHash::digest()" to "weakDigest()" 2017-04-06 15:43:33 -07:00
slowvote Fix errors found by PHPStan 2017-02-17 10:10:15 +00:00
spaces Fix errors found by PHPStan 2017-02-17 10:10:15 +00:00
subscriptions Allow task statuses to "lock" them, preventing additional comments and interactions 2017-03-02 16:57:10 -08:00
support/application
system Disallow /source/ in robots.txt 2017-04-06 16:28:09 -07:00
tokens Prevent awarding/revoking tokens when a task is locked 2017-03-04 09:55:35 -08:00
transactions Render timezones in event reminder mail, and render them more nicely 2017-04-10 08:48:37 -07:00
typeahead Drive CLI-based revision edits through "differential.revision.edit" API + EditEngine 2016-12-16 10:08:49 -08:00
uiexample Fix two typos ("Adminstrator", "Recipents") 2017-03-12 14:23:43 -07:00
xhprof Allow XHProf profiles to be drag-and-dropped to upload them 2017-02-23 11:16:19 -08:00