diff --git a/setup.py b/setup.py index 7ae85bc41d9735f9635b693e17c01387d49dd3e9..ee09ae24e4e4614b0db6f89ec2b277b025b65af8 100644 --- a/setup.py +++ b/setup.py @@ -117,7 +117,7 @@ else: setup( name = "sakia", - version = "0.11.2", + version = "0.11.3", description = "UCoin client", author = "Inso", options = {"build_exe": options}, diff --git a/src/sakia/__init__.py b/src/sakia/__init__.py index 03e0055e7e45c2e6aa109116494f77af1495f348..e92e1772fccf93ff2627cba943fed2e5091cbfbf 100644 --- a/src/sakia/__init__.py +++ b/src/sakia/__init__.py @@ -1,2 +1,2 @@ -__version_info__ = ('0', '11', '2') +__version_info__ = ('0', '11', '3') __version__ = '.'.join(__version_info__) diff --git a/src/sakia/core/net/api/bma/access.py b/src/sakia/core/net/api/bma/access.py index bd72e65e3616e7a9dda18fe5e71316f81f0e4f0a..34f87c2bffc6d69c0ebd4db6faee50d107d45c1f 100644 --- a/src/sakia/core/net/api/bma/access.py +++ b/src/sakia/core/net/api/bma/access.py @@ -279,8 +279,9 @@ class BmaAccess(QObject): except jsonschema.ValidationError as e: logging.debug(str(e)) tries += 1 - else: + if len(nodes) == 0 or json_data is None: raise NoPeerAvailable("", len(nodes)) + return json_data async def broadcast(self, request, req_args={}, post_args={}): """ diff --git a/src/sakia/gui/community_tile.py b/src/sakia/gui/community_tile.py index 7b347c3245cb1668289096db99b2f288a1c13b9b..419a476cb233eed149c96a159e03f5932ace3012 100644 --- a/src/sakia/gui/community_tile.py +++ b/src/sakia/gui/community_tile.py @@ -9,7 +9,7 @@ from PyQt5.QtWidgets import QFrame, QLabel, QVBoxLayout, QLayout from PyQt5.QtCore import QSize, pyqtSignal from ucoinpy.documents.block import Block -from ..tools.decorators import asyncify +from ..tools.decorators import asyncify, once_at_a_time, cancel_once_task from ..tools.exceptions import NoPeerAvailable from sakia.gui.widgets.busy import Busy @@ -55,6 +55,10 @@ class CommunityTile(QFrame): if state != self._state: self.refresh() + def cancel_refresh(self): + cancel_once_task(self, self.refresh) + + @once_at_a_time @asyncify async def refresh(self): self.busy.show() diff --git a/src/sakia/gui/homescreen.py b/src/sakia/gui/homescreen.py index b60ca759ca2fb632f4428581049bb652be8a47e0..3eb44eadf63bb86595608e6baabae20bf93c3714 100644 --- a/src/sakia/gui/homescreen.py +++ b/src/sakia/gui/homescreen.py @@ -29,6 +29,7 @@ class FrameCommunities(QFrame): def refresh(self, app): for t in self.tiles: + t.cancel_refresh() t.setParent(None) self.tiles = [] if app.current_account: