From 7cf4f15122ac59aa5868ed60ac9cd748ea04bbeb Mon Sep 17 00:00:00 2001 From: Dummerle Date: Mon, 14 Jun 2021 23:17:21 +0200 Subject: [PATCH] Fix bug if change filter too fast --- rare/components/tabs/shop/browse_games.py | 25 +- rare/ui/components/tabs/store/browse_games.py | 37 +- rare/ui/components/tabs/store/browse_games.ui | 316 ++++++++---------- 3 files changed, 174 insertions(+), 204 deletions(-) diff --git a/rare/components/tabs/shop/browse_games.py b/rare/components/tabs/shop/browse_games.py index e862f1bf..ec727d7a 100644 --- a/rare/components/tabs/shop/browse_games.py +++ b/rare/components/tabs/shop/browse_games.py @@ -19,6 +19,8 @@ class BrowseGames(QWidget, Ui_browse_games): show_game = pyqtSignal(dict) price = "" platform = (False, False) + request_active = False + next_request = () def __init__(self, path): super(BrowseGames, self).__init__() @@ -48,11 +50,16 @@ class BrowseGames(QWidget, Ui_browse_games): lambda: self.prepare_request(platform=(self.win_cb.isChecked(), self.mac_cb.isChecked()))) def prepare_request(self, price: str = None, platform: tuple = None): + if price is not None: self.price = price if platform is not None: self.platform = platform + if self.request_active: + self.next_request = (self.price, self.platform) + return + locale = get_lang() self.stack.setCurrentIndex(2) date = f"[,{datetime.datetime.strftime(datetime.datetime.now(), '%Y-%m-%dT%X')}.{str(random.randint(0, 999)).zfill(3)}Z]" @@ -80,10 +87,12 @@ class BrowseGames(QWidget, Ui_browse_games): request = QNetworkRequest(QUrl("https://www.epicgames.com/graphql")) request.setHeader(QNetworkRequest.ContentTypeHeader, "application/json") + self.request_active = True self.game_request = self.manager.post(request, json.dumps(payload).encode("utf-8")) self.game_request.finished.connect(self.show_games) def show_games(self): + if self.game_request: if self.game_request.error() == QNetworkReply.NoError: error = QJsonParseError() @@ -105,13 +114,23 @@ class BrowseGames(QWidget, Ui_browse_games): self.games_widget.layout().addWidget(w) w.show_info.connect(self.show_game.emit) self.stack.setCurrentIndex(0) + + self.request_active = False + if self.next_request: + self.prepare_request(*self.next_request) + self.next_request = () + return else: - logger.info(self.slug, error.errorString()) + logger.error(error.errorString()) else: - print(self.game_request.errorString()) - self.stack.setCurrentIndex(1) + logger.error(self.game_request.errorString()) + if self.next_request: + self.prepare_request(*self.next_request) + self.next_request = () + else: + self.stack.setCurrentIndex(1) game_query = "query searchStoreQuery($allowCountries: String, $category: String, $count: Int, $country: String!, " \ diff --git a/rare/ui/components/tabs/store/browse_games.py b/rare/ui/components/tabs/store/browse_games.py index fba96450..e5729c0f 100644 --- a/rare/ui/components/tabs/store/browse_games.py +++ b/rare/ui/components/tabs/store/browse_games.py @@ -8,7 +8,7 @@ # run again. Do not edit this file unless you know what you are doing. -from PyQt5 import QtCore, QtGui, QtWidgets +from PyQt5 import QtCore, QtWidgets class Ui_browse_games(object): @@ -17,11 +17,7 @@ class Ui_browse_games(object): browse_games.resize(706, 541) self.horizontalLayout_2 = QtWidgets.QHBoxLayout(browse_games) self.horizontalLayout_2.setObjectName("horizontalLayout_2") - self.games_gb = QtWidgets.QGroupBox(browse_games) - self.games_gb.setObjectName("games_gb") - self.verticalLayout_4 = QtWidgets.QVBoxLayout(self.games_gb) - self.verticalLayout_4.setObjectName("verticalLayout_4") - self.stack = QtWidgets.QStackedWidget(self.games_gb) + self.stack = QtWidgets.QStackedWidget(browse_games) self.stack.setObjectName("stack") self.games_page = QtWidgets.QWidget() self.games_page.setObjectName("games_page") @@ -31,7 +27,7 @@ class Ui_browse_games(object): self.games.setWidgetResizable(True) self.games.setObjectName("games") self.scrollAreaWidgetContents = QtWidgets.QWidget() - self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 394, 306)) + self.scrollAreaWidgetContents.setGeometry(QtCore.QRect(0, 0, 462, 503)) self.scrollAreaWidgetContents.setObjectName("scrollAreaWidgetContents") self.games.setWidget(self.scrollAreaWidgetContents) self.verticalLayout_5.addWidget(self.games) @@ -46,25 +42,13 @@ class Ui_browse_games(object): spacerItem = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_6.addItem(spacerItem) self.stack.addWidget(self.error) - self.verticalLayout_4.addWidget(self.stack) - self.horizontalLayout_2.addWidget(self.games_gb) - self.filter_gb = QtWidgets.QGroupBox(browse_games) - sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred) - sizePolicy.setHorizontalStretch(0) - sizePolicy.setVerticalStretch(0) - sizePolicy.setHeightForWidth(self.filter_gb.sizePolicy().hasHeightForWidth()) - self.filter_gb.setSizePolicy(sizePolicy) - self.filter_gb.setMaximumSize(QtCore.QSize(200, 16777215)) - self.filter_gb.setFlat(False) - self.filter_gb.setCheckable(False) - self.filter_gb.setObjectName("filter_gb") - self.verticalLayout = QtWidgets.QVBoxLayout(self.filter_gb) - self.verticalLayout.setObjectName("verticalLayout") - self.filter_scroll = QtWidgets.QScrollArea(self.filter_gb) + self.horizontalLayout_2.addWidget(self.stack) + self.filter_scroll = QtWidgets.QScrollArea(browse_games) + self.filter_scroll.setMaximumSize(QtCore.QSize(200, 16777215)) self.filter_scroll.setWidgetResizable(True) self.filter_scroll.setObjectName("filter_scroll") self.scroll_widget = QtWidgets.QWidget() - self.scroll_widget.setGeometry(QtCore.QRect(0, 0, 174, 479)) + self.scroll_widget.setGeometry(QtCore.QRect(0, 0, 198, 521)) self.scroll_widget.setObjectName("scroll_widget") self.verticalLayout_3 = QtWidgets.QVBoxLayout(self.scroll_widget) self.verticalLayout_3.setObjectName("verticalLayout_3") @@ -109,19 +93,16 @@ class Ui_browse_games(object): spacerItem1 = QtWidgets.QSpacerItem(20, 40, QtWidgets.QSizePolicy.Minimum, QtWidgets.QSizePolicy.Expanding) self.verticalLayout_3.addItem(spacerItem1) self.filter_scroll.setWidget(self.scroll_widget) - self.verticalLayout.addWidget(self.filter_scroll) - self.horizontalLayout_2.addWidget(self.filter_gb) + self.horizontalLayout_2.addWidget(self.filter_scroll) self.retranslateUi(browse_games) - self.stack.setCurrentIndex(1) + self.stack.setCurrentIndex(0) QtCore.QMetaObject.connectSlotsByName(browse_games) def retranslateUi(self, browse_games): _translate = QtCore.QCoreApplication.translate browse_games.setWindowTitle(_translate("browse_games", "Form")) - self.games_gb.setTitle(_translate("browse_games", "Games")) self.error_label.setText(_translate("browse_games", "An error occured")) - self.filter_gb.setTitle(_translate("browse_games", "Filter")) self.price_gb.setTitle(_translate("browse_games", "Price")) self.clear_price.setText(_translate("browse_games", "Clear price filter")) self.free_button.setText(_translate("browse_games", "Free")) diff --git a/rare/ui/components/tabs/store/browse_games.ui b/rare/ui/components/tabs/store/browse_games.ui index 8845f141..9f0ce58b 100644 --- a/rare/ui/components/tabs/store/browse_games.ui +++ b/rare/ui/components/tabs/store/browse_games.ui @@ -15,207 +15,177 @@ - - - Games + + + 0 - - - - - 1 - - - - - - - true - - - - - 0 - 0 - 394 - 306 - - - - - - + + + + + + true + + + + + 0 + 0 + 462 + 503 + + + - - - - - - An error occured - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - + + + + + + + + + An error occured + - - - + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + - - - - 0 - 0 - - + 200 16777215 - - Filter + + true - - false - - - false - - - - - - true - - - - - 0 - 0 - 174 - 479 - + + + + 0 + 0 + 198 + 521 + + + + + + + Price - + - - - Price + + + Clear price filter + + + true - - - - - Clear price filter - - - true - - - - - - - Free - - - - - - - Under 10 - - - - - - - Under 20 - - - - - - - Under 30 - - - - - - - 14.99 and above - - - - - - - Discount - - - - - - - Platform + + + Free - - - - - Windows - - - - - - - Mac - - - - - - - Qt::Vertical + + + Under 10 - - - 20 - 40 - + + + + + + Under 20 - + + + + + + Under 30 + + + + + + + 14.99 and above + + + + + + + Discount + + - - - + + + + + Platform + + + + + + Windows + + + + + + + Mac + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + +