Fixed Discord RPC bug
This commit is contained in:
parent
22a7421e99
commit
0acc9c5bda
5 changed files with 26 additions and 11 deletions
|
@ -1,5 +1,5 @@
|
|||
import os
|
||||
|
||||
__version__ = "1.0.0"
|
||||
__version__ = "1.1.0"
|
||||
style_path = os.path.join(os.path.dirname(__file__), "styles/")
|
||||
lang_path = os.path.join(os.path.dirname(__file__), "languages/")
|
||||
|
|
|
@ -27,9 +27,9 @@ class MainWindow(QMainWindow):
|
|||
|
||||
# Discord RPC on game launch
|
||||
self.tab_widget.games_tab.default_widget.game_list.game_started.connect(
|
||||
lambda: self.rpc.set_discord_rpc(self.tab_widget.games_tab.default_widget.game_list.running_games))
|
||||
lambda: self.rpc.set_discord_rpc(self.tab_widget.games_tab.default_widget.game_list.running_games[0]))
|
||||
# Remove RPC
|
||||
self.tab_widget.delete_presence.connect(self.rpc.remove_rpc)
|
||||
self.tab_widget.delete_presence.connect(self.rpc.set_discord_rpc)
|
||||
# Show RPC on changed rare_settings
|
||||
self.tab_widget.settings.rare_settings.rpc.update_settings.connect(lambda: self.rpc.changed_settings(self.tab_widget.games_tab.default_widget.game_list.running_games))
|
||||
|
||||
|
|
|
@ -20,6 +20,7 @@ class TabWidget(QTabWidget):
|
|||
def __init__(self, core: LegendaryCore):
|
||||
super(TabWidget, self).__init__()
|
||||
disabled_tab = 3
|
||||
self.core = core
|
||||
self.setTabBar(TabBar(disabled_tab))
|
||||
|
||||
# Generate Tabs
|
||||
|
@ -82,7 +83,8 @@ class TabWidget(QTabWidget):
|
|||
# Sync game and delete dc rpc
|
||||
def game_finished(self, app_name):
|
||||
self.delete_presence.emit()
|
||||
self.cloud_saves.sync_game(app_name, True)
|
||||
if self.core.get_game(app_name).supports_cloud_saves:
|
||||
self.cloud_saves.sync_game(app_name, True)
|
||||
|
||||
# Update gamelist and set text of Downlaods to "Downloads"
|
||||
def dl_finished(self, update_list):
|
||||
|
|
|
@ -207,14 +207,14 @@ class GameList(QStackedWidget):
|
|||
logger.info("Auto saves disabled")
|
||||
return
|
||||
|
||||
self.game_exited.emit(app_name)
|
||||
self.widgets[app_name][0].info_text = self.tr("Sync CLoud saves")
|
||||
self.widgets[app_name][0].info_label.setText(self.tr("Sync CLoud saves"))
|
||||
self.widgets[app_name][1].info_label.setText(self.tr("Sync CLoud saves"))
|
||||
self.game_exited.emit(app_name)
|
||||
|
||||
def launch(self, app_name):
|
||||
self.game_started.emit(app_name)
|
||||
self.running_games.append(app_name)
|
||||
self.game_started.emit(app_name)
|
||||
self.widgets[app_name][0].info_text = self.tr("Game running")
|
||||
self.widgets[app_name][0].info_label.setText(self.tr("Game running"))
|
||||
self.widgets[app_name][1].launch_button.setDisabled(True)
|
||||
|
|
|
@ -1,12 +1,15 @@
|
|||
import platform
|
||||
import time
|
||||
from logging import getLogger
|
||||
|
||||
from PyQt5.QtCore import QObject, QSettings
|
||||
from PyQt5.QtWidgets import QMessageBox
|
||||
from pypresence import Presence
|
||||
|
||||
from custom_legendary.core import LegendaryCore
|
||||
|
||||
client_id = "830732538225360908"
|
||||
logger = getLogger("RPC")
|
||||
|
||||
|
||||
class DiscordRPC(QObject):
|
||||
|
@ -25,8 +28,10 @@ class DiscordRPC(QObject):
|
|||
if value == 2:
|
||||
self.remove_rpc()
|
||||
return
|
||||
if not game_running:
|
||||
if not game_running and value == 0:
|
||||
self.remove_rpc()
|
||||
elif not game_running:
|
||||
self.set_discord_rpc()
|
||||
else:
|
||||
self.set_discord_rpc(game_running[0])
|
||||
|
||||
|
@ -34,9 +39,13 @@ class DiscordRPC(QObject):
|
|||
if self.settings.value("rpc_enable", 0, int) != 1:
|
||||
if not self.RPC:
|
||||
return
|
||||
self.RPC.close()
|
||||
try:
|
||||
self.RPC.close()
|
||||
except Exception:
|
||||
logger.warning("Already closed")
|
||||
del self.RPC
|
||||
self.RPC = None
|
||||
logger.info("Remove RPC")
|
||||
self.state = 2
|
||||
else:
|
||||
self.state = 1
|
||||
|
@ -44,12 +53,16 @@ class DiscordRPC(QObject):
|
|||
|
||||
def set_discord_rpc(self, app_name=None):
|
||||
if not self.RPC:
|
||||
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
|
||||
self.RPC.connect()
|
||||
try:
|
||||
self.RPC = Presence("830732538225360908") # Rare app: https://discord.com/developers/applications
|
||||
self.RPC.connect()
|
||||
except ConnectionRefusedError as e:
|
||||
logger.warning("Discord is not active\n" + str(e))
|
||||
return
|
||||
self.update_rpc(app_name)
|
||||
|
||||
def update_rpc(self, app_name=None):
|
||||
if self.settings.value("rpc_enable", 0, int) == 2:
|
||||
if self.settings.value("rpc_enable", 0, int) == 2 or (app_name is None and self.settings.value("rpc_enable", 0) == 0):
|
||||
self.remove_rpc()
|
||||
return
|
||||
title = None
|
||||
|
|
Loading…
Reference in a new issue