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