From 79366795e7ad7125823bf491213679a90d099dda Mon Sep 17 00:00:00 2001 From: epriestley Date: Tue, 24 Jun 2014 09:41:40 -0700 Subject: [PATCH] React to Aphlict disconnects in the UI Summary: Ref T5365. Surface disconnects in the UI. Test Plan: - Connected, then killed the server. - Saw disconnected event and appropriate update in the UI. {F169605} Reviewers: joshuaspence Reviewed By: joshuaspence Subscribers: epriestley Maniphest Tasks: T5365 Differential Revision: https://secure.phabricator.com/D9706 --- .../PhabricatorNotificationStatusView.php | 2 ++ support/aphlict/client/src/AphlictMaster.as | 2 +- webroot/rsrc/swf/aphlict.swf | Bin 6456 -> 6456 bytes 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/applications/notification/view/PhabricatorNotificationStatusView.php b/src/applications/notification/view/PhabricatorNotificationStatusView.php index ee847e0913..e08e76bcd7 100644 --- a/src/applications/notification/view/PhabricatorNotificationStatusView.php +++ b/src/applications/notification/view/PhabricatorNotificationStatusView.php @@ -23,6 +23,8 @@ final class PhabricatorNotificationStatusView extends AphrontTagView { 'error.flash.xdomain' => pht( 'Unable to connect to Flash Policy Server. Check that the '. 'notification server is running and port 843 is not firewalled.'), + 'error.flash.disconnected' => pht( + 'Disconnected from notification server.'), ), )); diff --git a/support/aphlict/client/src/AphlictMaster.as b/support/aphlict/client/src/AphlictMaster.as index f1fd370f7d..f53399d2f7 100644 --- a/support/aphlict/client/src/AphlictMaster.as +++ b/support/aphlict/client/src/AphlictMaster.as @@ -145,7 +145,7 @@ package { } private function didCloseSocket(event:Event):void { - this.externalInvoke('close'); + this.setStatusOnClients('error', 'error.flash.disconnected'); } private function didIOErrorSocket(event:IOErrorEvent):void { diff --git a/webroot/rsrc/swf/aphlict.swf b/webroot/rsrc/swf/aphlict.swf index 46238a34a544877fa9643cf37316f5bad7fe1ab2..e3a4dc56498ba22f5d3870a0d94a73fe57343e07 100644 GIT binary patch delta 5885 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%0An~K_l=t1KgGf;bo+i9}xMr<**7C9w!t5(9O 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