update: updated erorr handling and display

This commit is contained in:
JOhn 2026-05-12 09:41:29 -04:00
parent e8a1658d43
commit 84071e9554

View file

@ -1379,6 +1379,7 @@ class Worker(QObject):
profile_observer.subscribe( profile_observer.subscribe(
'enabled', lambda event: self.handle_profile_status(event.subject, True)) 'enabled', lambda event: self.handle_profile_status(event.subject, True))
self.profile_type = None self.profile_type = None
self._ticket_error_emitted = False
def run(self): def run(self):
self.profile = ProfileController.get(int(self.profile_data['id'])) self.profile = ProfileController.get(int(self.profile_data['id']))
@ -1391,6 +1392,8 @@ class Worker(QObject):
self.profile_data['billing_code'] = ticket_billing_code self.profile_data['billing_code'] = ticket_billing_code
elif 'billing_code' not in self.profile_data and self.profile is not None: elif 'billing_code' not in self.profile_data and self.profile is not None:
ticket_billing_code = self._maybe_auto_use_ticket() ticket_billing_code = self._maybe_auto_use_ticket()
if ticket_billing_code is None and self._ticket_error_emitted:
return
if ticket_billing_code: if ticket_billing_code:
self.profile_data['billing_code'] = 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) which_ticket, error_msg = do_we_use_a_random_ticket(ticket_observer)
except Exception: except Exception:
return None 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 None
return self._consume_ticket(which_ticket, None) return self._consume_ticket(which_ticket, None)
def _consume_ticket(self, which_ticket, which_location): def _consume_ticket(self, which_ticket, which_location):
candidates = self._location_candidates(preferred=which_location) candidates = self._location_candidates(preferred=which_location)
if not candidates: if not candidates:
self._ticket_error_emitted = True
self.change_page.emit('Could not determine profile location for ticket use.', True) self.change_page.emit('Could not determine profile location for ticket use.', True)
return None return None
@ -1514,9 +1522,11 @@ class Worker(QObject):
msg = outcome.get('message', 'failed') msg = outcome.get('message', 'failed')
last_msg = msg last_msg = msg
if msg != 'invalid_location': if msg != 'invalid_location':
self._ticket_error_emitted = True
self.change_page.emit(f'Ticket use failed: {msg}', True) self.change_page.emit(f'Ticket use failed: {msg}', True)
return None return None
self._ticket_error_emitted = True
self.change_page.emit(f'Ticket use failed: {last_msg or "no valid location"}', True) self.change_page.emit(f'Ticket use failed: {last_msg or "no valid location"}', True)
return None return None
@ -8467,7 +8477,7 @@ class IdPage(Page):
self.single_title.setStyleSheet(column_title_style) self.single_title.setStyleSheet(column_title_style)
self.single_title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) 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.setGeometry(40, 220, 200, 100)
self.single_button.setStyleSheet(column_button_style) self.single_button.setStyleSheet(column_button_style)
self.single_button.clicked.connect(self.go_single_profile) 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_button.clicked.connect(self.go_multiple_profiles)
self.multiple_desc = QLabel( self.multiple_desc = QLabel(
f"Buy a bundle of {HOW_MANY_PROFILES_DEFAULT} tickets upfront.", self) 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, 40) self.multiple_desc.setGeometry(285, 335, 240, 80)
self.multiple_desc.setStyleSheet(column_desc_style) self.multiple_desc.setStyleSheet(column_desc_style)
self.multiple_desc.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.multiple_desc.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.multiple_desc.setWordWrap(True) 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.setGeometry(QtCore.QRect(555, 50, 230, 40))
self.title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter) self.title.setAlignment(QtCore.Qt.AlignmentFlag.AlignCenter)
self.title.setStyleSheet(column_title_style) self.title.setStyleSheet(column_title_style)
@ -10362,7 +10372,7 @@ class PlanPickerPage(Page):
months = plan_data.get('months', '?') months = plan_data.get('months', '?')
days = plan_data.get('days', '?') days = plan_data.get('days', '?')
profiles = plan_data.get('profiles', '?') 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 = QListWidgetItem(label)
item.setData(QtCore.Qt.ItemDataRole.UserRole, plan_key) item.setData(QtCore.Qt.ItemDataRole.UserRole, plan_key)
self.plan_list.addItem(item) self.plan_list.addItem(item)
@ -10569,7 +10579,7 @@ class TicketPrepPage(Page):
def on_error(self, msg): def on_error(self, msg):
self.terminal.append(f"EXCEPTION: {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): def on_continue(self):
menu_page = self.page_stack.findChild(MenuPage) menu_page = self.page_stack.findChild(MenuPage)