1
0
Fork 0
mirror of synced 2024-06-28 11:11:15 +12:00

Fixed Discord RPC bug

This commit is contained in:
Dummerle 2021-04-13 12:38:11 +02:00
parent 22a7421e99
commit 0acc9c5bda
5 changed files with 26 additions and 11 deletions

View file

@ -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/")

View file

@ -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))

View file

@ -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):

View file

@ -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)

View file

@ -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