Skip to content

Commit c8b670c

Browse files
committed
Optimising the opt-in / opt-out process, so we can capture the initial launch anonymously, and then opt-out the user and prompt them to opt back in. Essentially this is the same as before, except we get the initial launch analytic (to help us better report on our usage and market share). All subsequent tracking is disabled until the user opts in.
1 parent 5cc355e commit c8b670c

File tree

2 files changed

+22
-19
lines changed

2 files changed

+22
-19
lines changed

src/classes/metrics.py

-2
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,6 @@ def send_metric(params):
173173
# Send metric HTTP data
174174
try:
175175
r = requests.get(url, headers={"user-agent": user_agent})
176-
log.info("Track metric: [%s] %s | (%s bytes)" % (r.status_code, r.url, len(r.content)))
177-
178176
except Exception:
179177
log.warning("Failed to track metric", exc_info=1)
180178

src/windows/main_window.py

+22-17
Original file line numberDiff line numberDiff line change
@@ -166,6 +166,12 @@ def closeEvent(self, event):
166166
# Stop threads
167167
self.StopSignal.emit()
168168

169+
# Stop thumbnail server thread
170+
self.http_server_thread.kill()
171+
172+
# Stop ZMQ polling thread
173+
get_app().logger_libopenshot.kill()
174+
169175
# Process any queued events
170176
QCoreApplication.processEvents()
171177

@@ -2079,19 +2085,7 @@ def actionSimple_View_trigger(self):
20792085

20802086
# Set initial size of docks
20812087
simple_state = "".join([
2082-
"AAAA/wAAAAD9AAAAAwAAAAAAAAEnAAAC3/wCAAAAA/wAAAJeAAAApwAAAAAA////+gAAAAACAAAAAfsAAAA"
2083-
"YAGQAbwBjAGsASwBlAHkAZgByAGEAbQBlAAAAAAD/////AAAAAAAAAAD7AAAAHABkAG8AYwBrAFAAcgBvAH"
2084-
"AAZQByAHQAaQBlAHMAAAAAJwAAAt8AAAChAP////sAAAAYAGQAbwBjAGsAVAB1AHQAbwByAGkAYQBsAgAAA"
2085-
"AAAAAAAAAAAyAAAAGQAAAABAAABHAAAAUD8AgAAAAH7AAAAGABkAG8AYwBrAEsAZQB5AGYAcgBhAG0AZQEA"
2086-
"AAFYAAAAFQAAAAAAAAAAAAAAAgAABEYAAALY/AEAAAAC/AAAAAAAAANnAAAA+gD////8AgAAAAL8AAAAJwA"
2087-
"AAcAAAACvAP////wBAAAAAvwAAAAAAAABFQAAAHsA////+gAAAAACAAAAA/sAAAASAGQAbwBjAGsARgBpAG"
2088-
"wAZQBzAQAAAAD/////AAAAkgD////7AAAAHgBkAG8AYwBrAFQAcgBhAG4AcwBpAHQAaQBvAG4AcwEAAAAA/"
2089-
"////wAAAJIA////+wAAABYAZABvAGMAawBFAGYAZgBlAGMAdABzAQAAAAD/////AAAAkgD////7AAAAEgBk"
2090-
"AG8AYwBrAFYAaQBkAGUAbwEAAAEbAAACTAAAAEcA////+wAAABgAZABvAGMAawBUAGkAbQBlAGwAaQBuAGU"
2091-
"BAAAB7QAAARIAAACWAP////wAAANtAAAA2QAAAIIA////+gAAAAECAAAAAvsAAAAiAGQAbwBjAGsAQwBhAH"
2092-
"AAdABpAG8AbgBFAGQAaQB0AG8AcgAAAAAA/////wAAAJgA////+wAAABQAZABvAGMAawBFAG0AbwBqAGkAc"
2093-
"wEAAADFAAACOgAAAJIA////AAAERgAAAAEAAAABAAAAAgAAAAEAAAAC/AAAAAEAAAACAAAAAQAAAA4AdABv"
2094-
"AG8AbABCAGEAcgEAAAAA/////wAAAAAAAAAA"
2088+
"AAAA/wAAAAD9AAAAAwAAAAAAAAEnAAAC3/wCAAAAA/wAAAJeAAAApwAAAAAA////+gAAAAACAAAAAfsAAAAYAGQAbwBjAGsASwBlAHkAZgByAGEAbQBlAAAAAAD/////AAAAAAAAAAD7AAAAHABkAG8AYwBrAFAAcgBvAHAAZQByAHQAaQBlAHMAAAAAJwAAAt8AAAChAP////sAAAAYAGQAbwBjAGsAVAB1AHQAbwByAGkAYQBsAgAABUQAAAF6AAABYAAAANwAAAABAAABHAAAAUD8AgAAAAH7AAAAGABkAG8AYwBrAEsAZQB5AGYAcgBhAG0AZQEAAAFYAAAAFQAAAAAAAAAAAAAAAgAABEYAAALC/AEAAAAC/AAAAAAAAARGAAAA+gD////8AgAAAAL8AAAAPQAAAa4AAACvAP////wBAAAAAvwAAAAAAAABwQAAAJcA////+gAAAAACAAAABPsAAAASAGQAbwBjAGsARgBpAGwAZQBzAQAAAAD/////AAAAkgD////7AAAAHgBkAG8AYwBrAFQAcgBhAG4AcwBpAHQAaQBvAG4AcwEAAAAA/////wAAAJIA////+wAAABYAZABvAGMAawBFAGYAZgBlAGMAdABzAQAAAAD/////AAAAkgD////7AAAAFABkAG8AYwBrAEUAbQBvAGoAaQBzAQAAAAD/////AAAAkgD////7AAAAEgBkAG8AYwBrAFYAaQBkAGUAbwEAAAHHAAACfwAAAEcA////+wAAABgAZABvAGMAawBUAGkAbQBlAGwAaQBuAGUBAAAB8QAAAQ4AAACWAP////sAAAAiAGQAbwBjAGsAQwBhAHAAdABpAG8AbgBFAGQAaQB0AG8AcgAAAANtAAAA2QAAAFgA////AAAERgAAAAEAAAABAAAAAgAAAAEAAAAC/AAAAAEAAAACAAAAAQAAAA4AdABvAG8AbABCAGEAcgEAAAAA/////wAAAAAAAAAA"
20952089
])
20962090
self.restoreState(qt_types.str_to_bytes(simple_state))
20972091
QCoreApplication.processEvents()
@@ -2633,7 +2627,6 @@ def clearSelections(self):
26332627

26342628
def foundCurrentVersion(self, version):
26352629
"""Handle the callback for detecting the current version on openshot.org"""
2636-
log.info('foundCurrentVersion: Found the latest version: %s' % version)
26372630
_ = get_app()._tr
26382631

26392632
# Compare versions (alphabetical compare of version strings should work fine)
@@ -2654,6 +2647,10 @@ def foundCurrentVersion(self, version):
26542647
updateButton.setToolButtonStyle(Qt.ToolButtonTextBesideIcon)
26552648
self.toolBar.addWidget(updateButton)
26562649

2650+
# Initialize sentry exception tracing (now that we know the current version)
2651+
from classes import sentry
2652+
sentry.init_tracing()
2653+
26572654
def moveEvent(self, event):
26582655
""" Move tutorial dialogs also (if any)"""
26592656
QMainWindow.moveEvent(self, event)
@@ -2823,17 +2820,25 @@ def __init__(self, *args, mode=None):
28232820

28242821
# Set unique install id (if blank)
28252822
if not s.get("unique_install_id"):
2823+
# This is assumed to be the 1st launch
28262824
s.set("unique_install_id", str(uuid4()))
28272825

28282826
# Track 1st launch metric
28292827
track_metric_screen("initial-launch-screen")
28302828

2829+
# Track 1st main screen
2830+
track_metric_screen("main-screen")
2831+
2832+
# Opt-out of metrics tracking on 1st launch (and prompt user)
2833+
track_metric_screen("metrics-opt-out")
2834+
s.set("send_metrics", False)
2835+
else:
2836+
# Only track main screen
2837+
track_metric_screen("main-screen")
2838+
28312839
# Set unique id for Sentry
28322840
sentry.set_user({"id": s.get("unique_install_id")})
28332841

2834-
# Track main screen
2835-
track_metric_screen("main-screen")
2836-
28372842
# Create blank tutorial manager
28382843
self.tutorial_manager = None
28392844

0 commit comments

Comments
 (0)