Skip to content

Commit 94c4101

Browse files
committed
fix[closes #4355]: Daily donation nag screen
1 parent 8042ef1 commit 94c4101

File tree

4 files changed

+36
-4
lines changed

4 files changed

+36
-4
lines changed

bottles/frontend/ui/preferences.blp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,16 @@ template $PreferencesWindow: Adw.PreferencesWindow {
4949
}
5050
}
5151

52+
Adw.ActionRow {
53+
title: _("Show Funding Dialog");
54+
subtitle: _("Whether to show the funding dialog to support Bottles development.");
55+
activatable-widget: switch_show_funding;
56+
57+
Switch switch_show_funding {
58+
valign: center;
59+
}
60+
}
61+
5262
Adw.ActionRow {
5363
title: _("Temp Files");
5464
subtitle: _("Clean temp files when Bottles launches?");

bottles/frontend/views/preferences.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class PreferencesWindow(Adw.PreferencesWindow):
4545
row_theme = Gtk.Template.Child()
4646
switch_theme = Gtk.Template.Child()
4747
switch_notifications = Gtk.Template.Child()
48+
switch_show_funding = Gtk.Template.Child()
4849
switch_force_offline = Gtk.Template.Child()
4950
switch_temp = Gtk.Template.Child()
5051
switch_release_candidate = Gtk.Template.Child()
@@ -132,6 +133,12 @@ def __init__(self, window, **kwargs):
132133
"active",
133134
Gio.SettingsBindFlags.DEFAULT,
134135
)
136+
self.settings.bind(
137+
"show-funding",
138+
self.switch_show_funding,
139+
"active",
140+
Gio.SettingsBindFlags.DEFAULT,
141+
)
135142
self.settings.bind(
136143
"playtime-enabled",
137144
self.switch_playtime_tracking,

bottles/frontend/windows/window.py

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,15 +84,24 @@ def __init__(self, arg_bottle, **kwargs):
8484

8585
super().__init__(**kwargs, default_width=width, default_height=height)
8686

87-
self.data_mgr = DataManager()
8887
self.data_mgr = DataManager()
8988
self._show_funding = False
90-
if not self.data_mgr.get(UserDataKeys.FundingDismissed, False):
89+
90+
show_funding_setting = self.settings.get_boolean("show-funding")
91+
dismissed = self.data_mgr.get(UserDataKeys.FundingDismissed, False)
92+
93+
if show_funding_setting and not dismissed:
9194
last_prompt = self.data_mgr.get(UserDataKeys.LastFundingPrompt, "")
92-
today = datetime.now().strftime("%Y-%m-%d")
9395

94-
if last_prompt != today:
96+
if not last_prompt:
9597
self._show_funding = True
98+
else:
99+
try:
100+
last_date = datetime.strptime(last_prompt, "%Y-%m-%d")
101+
if datetime.now() - last_date >= timedelta(days=7):
102+
self._show_funding = True
103+
except ValueError:
104+
self._show_funding = True
96105

97106
self.utils_conn = ConnectionUtils(
98107
force_offline=self.settings.get_boolean("force-offline")
@@ -468,6 +477,7 @@ def __maybe_show_funding_dialog(self):
468477
def __funding_response(self, dialog, response):
469478
if response == "dismiss":
470479
self.data_mgr.set(UserDataKeys.FundingDismissed, True)
480+
self.settings.set_boolean("show-funding", False)
471481

472482
dialog.destroy()
473483

data/com.usebottles.bottles.gschema.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,11 @@
105105
<default>50</default>
106106
<summary>Eagle deep scan limit</summary>
107107
<description>Maximum number of binaries to scan when analysing installers. Higher values provide more thorough analysis but take longer.</description>
108+
</key>
109+
<key type="b" name="show-funding">
110+
<default>true</default>
111+
<summary>Show funding dialog</summary>
112+
<description>Toggle the funding dialog.</description>
108113
</key>
109114
</schema>
110115
</schemalist>

0 commit comments

Comments
 (0)