Skip to content

Commit d976f23

Browse files
authored
Merge pull request #211 from tuttle-dev/dev-reset-button-confirm
feat: added a confirmation step during app reset
2 parents 96346c5 + 809ddca commit d976f23

File tree

2 files changed

+26
-4
lines changed

2 files changed

+26
-4
lines changed

app/core/views.py

+5-2
Original file line numberDiff line numberDiff line change
@@ -602,8 +602,8 @@ def __init__(
602602
dialog_controller: Callable[[any, utils.AlertDialogControls], None],
603603
title: str,
604604
description: str,
605-
data_on_confirmed: any,
606605
on_proceed: Callable,
606+
data_on_confirmed: Optional[any] = None,
607607
on_cancel: Optional[Callable] = None,
608608
proceed_button_label: str = "Proceed",
609609
cancel_button_label: str = "Cancel",
@@ -648,7 +648,10 @@ def on_cancel_btn_clicked(self, e):
648648

649649
def on_proceed_btn_clicked(self, e):
650650
self.close_dialog()
651-
self.on_proceed_callback(self.data_on_confirmed)
651+
if self.data_on_confirmed is not None:
652+
self.on_proceed_callback(self.data_on_confirmed)
653+
else:
654+
self.on_proceed_callback()
652655

653656

654657
class TPopUpMenuItem(PopupMenuItem):

app/preferences/view.py

+21-2
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ def __init__(
5454
self.on_reset_app_callback = on_reset_app_callback
5555
self.preferences: Optional[Preferences] = None
5656
self.currencies = []
57+
self.pop_up_handler = None
5758

5859
def set_available_currencies(self):
5960
self.currencies = [
@@ -107,7 +108,25 @@ def on_language_selected(self, e):
107108
return
108109
self.preferences.language = e.control.value
109110

110-
def on_reset_app(self, e):
111+
def on_reset_app_clicked(self, e):
112+
"""Ask user to confirm this action"""
113+
if self.pop_up_handler:
114+
# Close any existing dialog
115+
self.pop_up_handler.close_dialog()
116+
# Add a confirmation dialog
117+
self.pop_up_handler = views.ConfirmDisplayPopUp(
118+
dialog_controller=self.dialog_controller,
119+
title="Are You Sure?",
120+
description=f"Are you sure you wish to reset the app?\nThis will clear all your data.",
121+
on_proceed=self.on_reset_app_confirmed,
122+
proceed_button_label="Yes! Reset",
123+
)
124+
self.pop_up_handler.open_dialog()
125+
126+
def on_reset_app_confirmed(
127+
self,
128+
):
129+
"""Reset the app to default state"""
111130
logger.warning("Resetting the app to default state")
112131
logger.warning("Clearning preferences")
113132
result: IntentResult[None] = self.intent.clear_preferences()
@@ -189,7 +208,7 @@ def build(self):
189208
self.reset_button = views.TDangerButton(
190209
label="Reset App and Quit",
191210
icon=icons.RESTART_ALT_OUTLINED,
192-
on_click=self.on_reset_app,
211+
on_click=self.on_reset_app_clicked,
193212
tooltip="Warning: This will reset the app to default state and delete all data. You will have to restart the app.",
194213
)
195214

0 commit comments

Comments
 (0)