diff --git a/gui/__main__.py b/gui/__main__.py index 74158e2..62d6a5f 100755 --- a/gui/__main__.py +++ b/gui/__main__.py @@ -1379,6 +1379,7 @@ class Worker(QObject): profile_observer.subscribe( 'enabled', lambda event: self.handle_profile_status(event.subject, True)) self.profile_type = None + self._ticket_error_emitted = False def run(self): self.profile = ProfileController.get(int(self.profile_data['id'])) @@ -1391,6 +1392,8 @@ class Worker(QObject): self.profile_data['billing_code'] = ticket_billing_code elif 'billing_code' not in self.profile_data and self.profile is not None: ticket_billing_code = self._maybe_auto_use_ticket() + if ticket_billing_code is None and self._ticket_error_emitted: + return if ticket_billing_code: self.profile_data['billing_code'] = ticket_billing_code @@ -1486,13 +1489,18 @@ class Worker(QObject): which_ticket, error_msg = do_we_use_a_random_ticket(ticket_observer) except Exception: return None - if which_ticket is None or which_ticket == 'error' or error_msg: + if error_msg: + self._ticket_error_emitted = True + self.change_page.emit(f'Ticket use failed: {error_msg}', True) + return None + if which_ticket is None or which_ticket == 'error': return None return self._consume_ticket(which_ticket, None) def _consume_ticket(self, which_ticket, which_location): candidates = self._location_candidates(preferred=which_location) if not candidates: + self._ticket_error_emitted = True self.change_page.emit('Could not determine profile location for ticket use.', True) return None @@ -1514,9 +1522,11 @@ class Worker(QObject): msg = outcome.get('message', 'failed') last_msg = msg if msg != 'invalid_location': + self._ticket_error_emitted = True self.change_page.emit(f'Ticket use failed: {msg}', True) return None + self._ticket_error_emitted = True self.change_page.emit(f'Ticket use failed: {last_msg or "no valid location"}', True) return None @@ -8467,7 +8477,7 @@ class IdPage(Page): self.single_title.setStyleSheet(column_title_style) self.single_title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) - self.single_button = QPushButton("New Billing ID", self) + self.single_button = QPushButton("One Profile Only", self) self.single_button.setGeometry(40, 220, 200, 100) self.single_button.setStyleSheet(column_button_style) self.single_button.clicked.connect(self.go_single_profile) @@ -8489,13 +8499,13 @@ class IdPage(Page): self.multiple_button.clicked.connect(self.go_multiple_profiles) self.multiple_desc = QLabel( - f"Buy a bundle of {HOW_MANY_PROFILES_DEFAULT} tickets upfront.", self) - self.multiple_desc.setGeometry(285, 335, 240, 40) + f"Buy a bundle of {HOW_MANY_PROFILES_DEFAULT} tickets at once, which are cryptographically seperated from each other.", self) + self.multiple_desc.setGeometry(285, 335, 240, 80) self.multiple_desc.setStyleSheet(column_desc_style) self.multiple_desc.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.multiple_desc.setWordWrap(True) - self.title = QLabel("Entry Id", self) + self.title = QLabel("Use Existing", self) self.title.setGeometry(QtCore.QRect(555, 50, 230, 40)) self.title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.title.setStyleSheet(column_title_style) @@ -10362,7 +10372,7 @@ class PlanPickerPage(Page): months = plan_data.get('months', '?') days = plan_data.get('days', '?') profiles = plan_data.get('profiles', '?') - label = f" Plan {plan_key} | €{cost} | {months}m {days}d left | {profiles} profiles" + label = f" Plan {plan_key} | €{cost} | {months}months {days}d left | {profiles} profiles" item = QListWidgetItem(label) item.setData(QtCore.Qt.ItemDataRole.UserRole, plan_key) self.plan_list.addItem(item) @@ -10569,7 +10579,7 @@ class TicketPrepPage(Page): def on_error(self, msg): self.terminal.append(f"EXCEPTION: {msg}") - self.status_label.setText(f"Error: {msg}") + self.status_label.setText(f"An unkown error occured") def on_continue(self): menu_page = self.page_stack.findChild(MenuPage)