Skip to content

Commit eddce3e

Browse files
committed
Move checking for sensitive game info into an own class
Fixes #360. Signed-off-by: Igor Kotrasinski <[email protected]>
1 parent 21a6f3e commit eddce3e

File tree

3 files changed

+31
-19
lines changed

3 files changed

+31
-19
lines changed

changelog.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,11 @@
1515
* Hotfix race condition between downloading avatars and removing chatters (#957)
1616
* Don't proceed with game launch if FA path is invalid (#933, #959)
1717
* Hotfix an irclib exception popping up in some cases (#958)
18+
* Delay displaying of user's ladder game info until launch (#360, #912)
1819

1920
Contributors:
2021
- Wesmania
22+
- Grothe
2123

2224
0.16.1-rc.2
2325
====

src/chat/chatter.py

Lines changed: 6 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,7 @@
1313

1414
from model.game import GameState
1515
from client.aliasviewer import AliasWindow
16-
17-
import logging
18-
logger = logging.getLogger(__name__)
19-
16+
from chat.gameinfo import SensitiveMapInfoChecker
2017

2118
"""
2219
A chatter is the representation of a person on IRC, in a channel's nick list.
@@ -52,6 +49,7 @@ def __init__(self, parent, user, channel, chat_widget, me):
5249
self._me.ircRelationsUpdated.connect(self._checkUserRelation)
5350

5451
self._aliases = AliasWindow(self.parent)
52+
self._game_info_hider = SensitiveMapInfoChecker(self._me)
5553

5654
self.setFlags(QtCore.Qt.ItemIsEnabled)
5755
self.setTextAlignment(QtCore.Qt.AlignLeft | QtCore.Qt.AlignVCenter)
@@ -73,8 +71,6 @@ def __init__(self, parent, user, channel, chat_widget, me):
7371
self.mapItem.setFlags(QtCore.Qt.ItemIsEnabled)
7472
self.mapItem.setTextAlignment(QtCore.Qt.AlignHCenter)
7573

76-
self._ladder_hide = False
77-
7874
self._user = None
7975
self._user_player = None
8076
self._user_game = None
@@ -319,26 +315,16 @@ def update_rank(self):
319315
self.rankItem.setToolTip(tooltip_str)
320316

321317
def updateGame(self):
322-
self.check_game_status()
323318
self.update_status_tooltip()
324319
self.update_status_icon()
325320
self.update_map()
326321

327-
def check_game_status(self):
328-
self._ladder_hide = False
329-
if self._me.player is None or self._me.player.login != self.user.name:
330-
return
331-
game = self.user_game
332-
if game is None or game.closed():
333-
return
334-
if game.featured_mod == "ladder1v1" and game.state == GameState.OPEN:
335-
self._ladder_hide = True
336-
337322
def update_status_tooltip(self):
338323
# Status tooltip handling
339324
game = self.user_game
325+
should_hide_info = self._game_info_hider.has_sensitive_data(game)
340326
if game is not None and not game.closed():
341-
if self._ladder_hide:
327+
if should_hide_info:
342328
game_map = "<i>[delayed reveal]</i>"
343329
game_title = "<i>[delayed reveal]</i>"
344330
else:
@@ -390,8 +376,9 @@ def update_status_icon(self):
390376
def update_map(self):
391377
# Map icon handling - if we're in game, show the map if toggled on
392378
game = self.user_game
379+
should_hide_info = self._game_info_hider.has_sensitive_data(game)
393380
if game is not None and not game.closed() and util.settings.value("chat/chatmaps", False):
394-
if self._ladder_hide:
381+
if should_hide_info:
395382
self.mapItem.setIcon(util.THEME.icon("chat/status/unknown.png"))
396383
self.mapItem.setToolTip("<i>[delayed reveal]</i>")
397384
else:

src/chat/gameinfo.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
from PyQt5.QtCore import QObject
2+
from model.game import GameState
3+
4+
5+
class SensitiveMapInfoChecker(QObject):
6+
def __init__(self, me):
7+
QObject.__init__(self)
8+
self._me = me
9+
10+
def has_sensitive_data(self, game):
11+
if game is None or game.closed():
12+
return False
13+
14+
if game.featured_mod == "ladder1v1":
15+
return self._ladder_has_sensitive_data(game)
16+
return False
17+
18+
def _ladder_has_sensitive_data(self, game):
19+
if game.state != GameState.OPEN:
20+
return False
21+
if self._me.player is None:
22+
return False
23+
return self._me.player.login in game.players

0 commit comments

Comments
 (0)