Skip to content

Commit 8ebb08d

Browse files
committed
Send device code for started and finished flashing attempts to plausible
1 parent 410955b commit 8ebb08d

File tree

3 files changed

+38
-1
lines changed

3 files changed

+38
-1
lines changed

openandroidinstaller/utils.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -188,3 +188,27 @@ def recovery_works_with_device(
188188
CompatibilityStatus.INCOMPATIBLE,
189189
f"Recovery file {recovery_file_name} is not supported by device code in file name.",
190190
)
191+
192+
193+
def send_tracking_info(device_code: str, event: str):
194+
# Plausible API endpoint for tracking events
195+
url = "https://plausible.io/api/event"
196+
197+
# Prepare the JSON payload.
198+
# Even if you’re not on a website, you can supply a fabricated URL (like "app://login")
199+
data = {
200+
"name": event,
201+
"url": "app://openandroidinstaller",
202+
"domain": "openandroidinstaller.org",
203+
"props": {"device_code": device_code},
204+
}
205+
206+
# Set headers. A proper User-Agent is important for accurate unique visitor tracking.
207+
headers = {
208+
"Content-Type": "application/json",
209+
"User-Agent": "OpenAndroidInstaller",
210+
}
211+
212+
# Send the POST request
213+
_ = requests.post(url, json=data, headers=headers)
214+
logger.info(f"Sent tracking event '{event}' for device '{device_code}'.")

openandroidinstaller/views/select_view.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
image_sdk_level,
4040
image_works_with_device,
4141
recovery_works_with_device,
42+
send_tracking_info,
4243
)
4344
from views import BaseView
4445
from widgets import confirm_button, get_title
@@ -120,9 +121,16 @@ def init_visuals(
120121
fill_color=Colors.RED, value=None, disabled=True, tristate=True
121122
)
122123

124+
def confirm_with_tracking(e):
125+
# if self.state.test is False:
126+
send_tracking_info(
127+
device_code=self.state.config.device_code, event="started"
128+
)
129+
self.on_confirm(e)
130+
123131
# initialize and manage button state.
124132
self.confirm_button = confirm_button(
125-
self.on_confirm, confirm_text="Let's start flashing!"
133+
confirm_with_tracking, confirm_text="Let's start flashing!"
126134
)
127135
self.confirm_button.disabled = True
128136
self.continue_eitherway_button = confirm_button(

openandroidinstaller/views/success_view.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616
from styles import Markdown, Text
1717
from views import BaseView
1818
from widgets import get_title
19+
from utils import send_tracking_info
1920

2021

2122
class SuccessView(BaseView):
@@ -26,6 +27,10 @@ def build(
2627
self,
2728
):
2829
def close_window(e):
30+
if self.state.test is False:
31+
send_tracking_info(
32+
event="finished", device_code=self.state.config.device_code
33+
)
2934
logger.success("Success! Close the window.")
3035
# close the window
3136
self.page.window.close()

0 commit comments

Comments
 (0)