# HG changeset patch # User Goffi # Date 1357398505 -3600 # Node ID 58442ed28f2bdbca3f6d1c28b1d102299ac2f4f6 # Parent b17ec3a6a11220c9a32aa08a0286c762c576a762 browser side: basic disconnection management: hard reload is done on empty signal response diff -r b17ec3a6a112 -r 58442ed28f2b browser_side/menu.py --- a/browser_side/menu.py Sat Jan 05 16:07:33 2013 +0100 +++ b/browser_side/menu.py Sat Jan 05 16:08:25 2013 +0100 @@ -127,8 +127,7 @@ _item_tpl = "%s" menu_general = MenuBar(vertical=True) - menu_general.addItem("Social contract", MenuCmd(self, "onSocialContract")) - menu_general.addItem("About", MenuCmd(self, "onAbout")) + menu_general.addItem("Disconnect", MenuCmd(self, "onDisconnect")) menu_contacts = MenuBar(vertical=True) menu_contacts.addItem("add contact", MenuCmd(self, "onAddContact")) @@ -170,6 +169,14 @@ self.add(menubar) #General menu + def onDisconnect(self): + def confirm_cb(answer): + if answer: + print "déconnexion" + self.host.bridge.call('disconnect', None) + _dialog = dialog.ConfirmDialog(confirm_cb, text="Do you really want to disconnect ?") + _dialog.show() + def onSocialContract(self): _frame = Frame('contrat_social.html') _frame.setStyleName('infoFrame') diff -r b17ec3a6a112 -r 58442ed28f2b libervia.py --- a/libervia.py Sat Jan 05 16:07:33 2013 +0100 +++ b/libervia.py Sat Jan 05 16:08:25 2013 +0100 @@ -86,7 +86,7 @@ "joinMUC", "getRoomsJoined", "launchTarotGame", "getTarotCardsPaths", "tarotGameReady", "tarotGameContratChoosed", "tarotGamePlayCards", "launchRadioCollective", "getWaitingSub", "subscription", "delContact", "updateContact", "getEntityData", "getParamsUI", #"setParam", - "launchAction", + "launchAction", "disconnect", ]) class BridgeSignals(LiberviaJsonProxy): @@ -104,7 +104,10 @@ def onRemoteError(self, code, errobj, request_info): - LiberviaJsonProxy.onRemoteError(self, code, errobj, request_info) + if errobj['message'] == 'Empty Response': + Window.getLocation().reload() # XXX: reset page in case of session ended. + # FIXME: Should be done more properly without hard reload + LiberviaJsonProxy.onRemoteError(self, code, errobj, request_info) #we now try to reconnect if isinstance(errobj['message'],dict) and errobj['message']['faultCode']==0: Window.alert('You are not allowed to connect to server')