Fix an issue with watching channel being lost on cleanup

This commit is contained in:
DevilXD committed 2022-02-01 12:51:28 +01:00
1 parent a43b6e6df7
commit 1a1117b90c
1 file changed
+10 -7
+10 -7
View File
@@ -240,10 +240,6 @@ class Twitch:
WebsocketTopic.as_str("Channel", "VideoPlayback", channel.id) WebsocketTopic.as_str("Channel", "VideoPlayback", channel.id)
for channel in to_remove for channel in to_remove
) )
watching_channel = self.watching_channel.get_with_default(None)
if watching_channel is not None and watching_channel in to_remove:
# we're removing a channel we're watching
self.stop_watching()
for channel in to_remove: for channel in to_remove:
del self.channels[channel.id] del self.channels[channel.id]
channel.remove() channel.remove()
@@ -297,6 +293,16 @@ class Twitch:
for channel_id in self.channels for channel_id in self.channels
] ]
self.websocket.add_topics(topics) self.websocket.add_topics(topics)
# relink watching channel after cleanup,
# or stop watching it if it no longer qualifies
watching_channel = self.watching_channel.get_with_default(None)
if watching_channel is not None:
new_watching = self.channels.get(watching_channel.id)
if new_watching is not None and self.can_watch(new_watching):
self.watch(new_watching)
else:
# we're removing a channel we're watching
self.stop_watching()
self.change_state(State.CHANNEL_SWITCH) self.change_state(State.CHANNEL_SWITCH)
elif self._state is State.CHANNEL_SWITCH: elif self._state is State.CHANNEL_SWITCH:
if self.game is None: if self.game is None:
@@ -412,9 +418,6 @@ class Twitch:
) )
def watch(self, channel: Channel): def watch(self, channel: Channel):
if self.is_watching(channel):
# we're already watching the same channel, so there's no point switching
return
self.gui.channels.set_watching(channel) self.gui.channels.set_watching(channel)
self.watching_channel.set(channel) self.watching_channel.set(channel)