- Re download channel icon if lost

- Don't drop avatars and icons unless needed
- Clear room data on disconnect
This commit is contained in:
Trigg 2022-07-18 08:58:56 +00:00
parent 0cce9a60ca
commit a1a3ffb419
2 changed files with 19 additions and 4 deletions

View file

@ -109,6 +109,8 @@ class DiscordConnector:
self.unsub_voice_channel(self.current_voice)
self.current_voice = "0"
self.current_guild = "0"
self.discover.voice_overlay.set_blank()
self.in_room = []
return
if channel != self.current_voice:
if self.current_voice != "0":
@ -298,6 +300,8 @@ class DiscordConnector:
if j["data"]["user"]["id"] == self.user["id"]:
self.in_room = []
self.find_user()
self.discover.voice_overlay.set_channel_title(None)
self.discover.voice_overlay.set_channel_icon(None)
# User might have been forcibly moved room
elif j["evt"] == "SPEAKING_START":
self.list_altered = True
@ -436,10 +440,11 @@ class DiscordConnector:
elif j["cmd"] == "GET_VOICE_SETTINGS":
return
log.warning(j)
def dump_channel_data(self):
with open(self.discover.channel_file, 'w') as f:
f.write(json.dumps({'channels': self.channels, 'guild': self.guilds}))
f.write(json.dumps(
{'channels': self.channels, 'guild': self.guilds}))
def on_connected(self):
"""
@ -781,7 +786,6 @@ class DiscordConnector:
return
self.rate_limited_channels.append(guild_id)
def connect(self):
"""
Attempt to connect to websocket

View file

@ -77,6 +77,7 @@ class VoiceOverlayWindow(OverlayWindow):
self.def_avatar = None
self.channel_icon = None
self.channel_mask = None
self.channel_icon_url = None
self.overflow = None
self.use_dummy = False
self.dummy_count = 10
@ -112,6 +113,8 @@ class VoiceOverlayWindow(OverlayWindow):
self.redraw()
def set_icon_transparency(self, trans):
if self.icon_transparency == trans:
return
self.icon_transparency = trans
get_surface(self.recv_avatar,
"share/icons/hicolor/256x256/apps/discover-overlay-default.png",
@ -127,6 +130,9 @@ class VoiceOverlayWindow(OverlayWindow):
def set_blank(self):
self.userlist = []
self.channel_icon = None
self.channel_icon_url = None
self.channel_title = None
self.needsredraw = True
def set_title_font(self, font):
@ -360,9 +366,11 @@ class VoiceOverlayWindow(OverlayWindow):
"""
if not url:
self.channel_icon = None
self.channel_icon_url = None
else:
get_surface(self.recv_avatar, url, "channel",
self.avatar_size, self.icon_transparency)
self.channel_icon_url = url
def set_user_list(self, userlist, alt):
"""
@ -472,7 +480,7 @@ class VoiceOverlayWindow(OverlayWindow):
if self.show_connection:
users_to_draw.insert(0, None)
doConnection = True
if self.show_title:
if self.show_title and self.channel_title:
users_to_draw.insert(0, None)
doTitle = True
@ -645,6 +653,9 @@ class VoiceOverlayWindow(OverlayWindow):
pos_x, pos_y, None, avatar_size)
else:
self.blank_avatar(context, pos_x, pos_y, avatar_size)
if self.channel_icon_url:
get_surface(self.recv_avatar, self.channel_icon_url, "channel",
self.avatar_size, self.icon_transparency)
return tw
def unused_fn_needed_translations(self):