From 6ba445158d6b4df2278969b91e8ad1276222355c Mon Sep 17 00:00:00 2001
From: Dummerle
Date: Thu, 7 Oct 2021 21:58:50 +0200
Subject: [PATCH] Remove login successful page and auto parse sid
---
rare/components/dialogs/login/__init__.py | 12 +++-------
.../components/dialogs/login/browser_login.py | 24 +++++++++++++++----
.../components/dialogs/login/login_dialog.py | 15 ++----------
.../components/dialogs/login/login_dialog.ui | 17 +------------
4 files changed, 26 insertions(+), 42 deletions(-)
diff --git a/rare/components/dialogs/login/__init__.py b/rare/components/dialogs/login/__init__.py
index 078fb3a2..e0621d65 100644
--- a/rare/components/dialogs/login/__init__.py
+++ b/rare/components/dialogs/login/__init__.py
@@ -17,12 +17,11 @@ class LoginPages:
landing: int
browser: int
import_egl: int
- success: int
class LoginDialog(QDialog, Ui_LoginDialog):
logged_in: bool = False
- pages = LoginPages(landing=0, browser=1, import_egl=2, success=3)
+ pages = LoginPages(landing=0, browser=1, import_egl=2)
def __init__(self, core: LegendaryCore, parent=None):
super(LoginDialog, self).__init__(parent=parent)
@@ -36,7 +35,7 @@ class LoginDialog(QDialog, Ui_LoginDialog):
self.login_stack.insertWidget(self.pages.browser, self.browser_page)
self.browser_page.success.connect(self.login_successful)
self.browser_page.changed.connect(
- lambda: self.next_button.setEnabled(self.browser_page.is_valid())
+ self.next_button.setEnabled
)
self.import_page = ImportLogin(self.core, self.login_stack)
self.login_stack.insertWidget(self.pages.import_egl, self.import_page)
@@ -88,12 +87,7 @@ class LoginDialog(QDialog, Ui_LoginDialog):
try:
if self.core.login():
self.logged_in = True
- self.welcome_label.setText(
- self.welcome_label.text().replace("", f", {self.core.lgd.userdata['displayName']}")
- )
- self.exit_button.setVisible(False)
- self.back_button.setVisible(False)
- self.login_stack.setCurrentIndex(self.pages.success)
+ self.close()
else:
raise ValueError("Login failed.")
except ValueError as e:
diff --git a/rare/components/dialogs/login/browser_login.py b/rare/components/dialogs/login/browser_login.py
index 7c8a1a23..cd6233e9 100644
--- a/rare/components/dialogs/login/browser_login.py
+++ b/rare/components/dialogs/login/browser_login.py
@@ -13,7 +13,7 @@ logger = getLogger("BrowserLogin")
class BrowserLogin(QWidget, Ui_BrowserLogin):
success = pyqtSignal()
- changed = pyqtSignal()
+ changed = pyqtSignal(bool)
login_url = "https://www.epicgames.com/id/login?redirectUrl=https%3A%2F%2Fwww.epicgames.com%2Fid%2Fapi%2Fredirect"
def __init__(self, core: LegendaryCore, parent=None):
@@ -23,10 +23,26 @@ class BrowserLogin(QWidget, Ui_BrowserLogin):
self.core = core
self.open_button.clicked.connect(self.open_browser)
- self.sid_edit.textChanged.connect(self.changed.emit)
+ self.sid_edit.textChanged.connect(self.text_changed)
- def is_valid(self):
- return len(self.sid_edit.text()) == 32
+ def is_valid(self, text: str):
+ if text:
+ return len(text) == 32
+ else:
+ return len(self.sid_edit.text()) == 32
+
+ def text_changed(self, text):
+ if not self.is_valid(text):
+ try:
+ sid = json.loads(text).get("sid")
+ if sid and self.is_valid(sid):
+ self.sid_edit.setText(sid)
+ self.status_label.setText(self.tr("Parsed sid from pasted text"))
+ except json.JSONDecodeError:
+ self.changed.emit(False)
+
+ else:
+ self.changed.emit(True)
def do_login(self):
self.status_label.setText(self.tr("Logging in..."))
diff --git a/rare/ui/components/dialogs/login/login_dialog.py b/rare/ui/components/dialogs/login/login_dialog.py
index cf20d716..a2df9354 100644
--- a/rare/ui/components/dialogs/login/login_dialog.py
+++ b/rare/ui/components/dialogs/login/login_dialog.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
-# Form implementation generated from reading ui file 'login_dialog.ui'
+# Form implementation generated from reading ui file 'rare/ui/components/dialogs/login/login_dialog.ui'
#
# Created by: PyQt5 UI code generator 5.15.4
#
@@ -78,14 +78,6 @@ class Ui_LoginDialog(object):
spacerItem2 = QtWidgets.QSpacerItem(40, 20, QtWidgets.QSizePolicy.Expanding, QtWidgets.QSizePolicy.Minimum)
self.login_page_layout.addItem(spacerItem2, 1, 2, 2, 1)
self.login_stack.addWidget(self.login_page)
- self.success_page = QtWidgets.QWidget()
- self.success_page.setObjectName("success_page")
- self.success_page_layout = QtWidgets.QHBoxLayout(self.success_page)
- self.success_page_layout.setObjectName("success_page_layout")
- self.success_label = QtWidgets.QLabel(self.success_page)
- self.success_label.setObjectName("success_label")
- self.success_page_layout.addWidget(self.success_label)
- self.login_stack.addWidget(self.success_page)
self.dialog_layout.addWidget(self.login_stack)
self.button_layout = QtWidgets.QHBoxLayout()
self.button_layout.setObjectName("button_layout")
@@ -103,7 +95,7 @@ class Ui_LoginDialog(object):
self.dialog_layout.addLayout(self.button_layout)
self.retranslateUi(LoginDialog)
- self.login_stack.setCurrentIndex(1)
+ self.login_stack.setCurrentIndex(0)
QtCore.QMetaObject.connectSlotsByName(LoginDialog)
def retranslateUi(self, LoginDialog):
@@ -115,8 +107,6 @@ class Ui_LoginDialog(object):
self.login_import_label.setText(_translate("LoginDialog", "Import from Epic Games Launcher"))
self.login_import_radio.setText(_translate("LoginDialog", "Import"))
self.login_browser_radio.setText(_translate("LoginDialog", "Browser"))
- self.success_label.setText(_translate("LoginDialog",
- "
Login Successful!
"))
self.exit_button.setText(_translate("LoginDialog", "Exit"))
self.back_button.setText(_translate("LoginDialog", "Back"))
self.next_button.setText(_translate("LoginDialog", "Next"))
@@ -124,7 +114,6 @@ class Ui_LoginDialog(object):
if __name__ == "__main__":
import sys
-
app = QtWidgets.QApplication(sys.argv)
LoginDialog = QtWidgets.QDialog()
ui = Ui_LoginDialog()
diff --git a/rare/ui/components/dialogs/login/login_dialog.ui b/rare/ui/components/dialogs/login/login_dialog.ui
index 468defe3..12a6edcb 100644
--- a/rare/ui/components/dialogs/login/login_dialog.ui
+++ b/rare/ui/components/dialogs/login/login_dialog.ui
@@ -77,7 +77,7 @@
QFrame::Raised
- 1
+ 0
@@ -162,21 +162,6 @@
-
-
- -
-
-
- <html><head/><body><h2 style="
- margin-top:16px; margin-bottom:12px; margin-left:0px; margin-right:0px;
- -qt-block-indent:0; text-indent:0px;"><span style="
- font-size:x-large; font-weight:600;">Login Successful!</span></h2></body></html>
-
-
-
-
-
-
-