Analytics: Make all events into enums

No more random strings
This commit is contained in:
Vishesh Handa
2020-08-17 15:29:38 +02:00
parent d94a1e1630
commit 7936cc70b8
8 changed files with 45 additions and 45 deletions

View File

@ -33,6 +33,15 @@ enum Event {
DrawerSettings, DrawerSettings,
PurchaseScreenOpen, PurchaseScreenOpen,
PurchaseScreenClose,
PurchaseScreenThankYou,
GitHostSetupError,
GitHostSetupComplete,
GitHostSetupGitCloneError,
GitHostSetupButtonClick,
Settings,
} }
String _eventToString(Event e) { String _eventToString(Event e) {
@ -80,6 +89,22 @@ String _eventToString(Event e) {
case Event.PurchaseScreenOpen: case Event.PurchaseScreenOpen:
return "purchase_screen_open"; return "purchase_screen_open";
case Event.PurchaseScreenClose:
return "purchase_screen_close";
case Event.PurchaseScreenThankYou:
return "purchase_screen_thank_you";
case Event.GitHostSetupError:
return "githostsetup_error";
case Event.GitHostSetupComplete:
return "onboarding_complete";
case Event.GitHostSetupGitCloneError:
return "onboarding_gitClone_error";
case Event.GitHostSetupButtonClick:
return "githostsetup_button_click";
case Event.Settings:
return "settings";
} }
return "unknown_event"; return "unknown_event";
@ -89,14 +114,6 @@ class Analytics {
var firebase = FirebaseAnalytics(); var firebase = FirebaseAnalytics();
bool enabled = false; bool enabled = false;
Future<void> logEvent({
@required String name,
Map<String, String> parameters,
}) async {
await firebase.logEvent(name: name, parameters: parameters);
captureErrorBreadcrumb(name: name, parameters: parameters);
}
Future<void> log({ Future<void> log({
@required Event e, @required Event e,
Map<String, String> parameters, Map<String, String> parameters,

View File

@ -138,10 +138,7 @@ class JournalApp extends StatefulWidget {
JournalApp.analytics.setAnalyticsCollectionEnabled(enabled); JournalApp.analytics.setAnalyticsCollectionEnabled(enabled);
if (enabled) { if (enabled) {
JournalApp.analytics.logEvent( logEvent(Event.Settings, parameters: settings.toLoggableMap());
name: "settings",
parameters: settings.toLoggableMap(),
);
} }
} }

View File

@ -60,9 +60,7 @@ class PurchaseScreen extends StatelessWidget {
} }
Future<bool> _onWillPop() async { Future<bool> _onWillPop() async {
getAnalytics().logEvent( logEvent(Event.PurchaseScreenClose);
name: "purchase_screen_close",
);
return true; return true;
} }
} }

View File

@ -87,8 +87,8 @@ class GitHostSetupAutoConfigureState extends State<GitHostSetupAutoConfigure> {
Log.d("GitHostSetupAutoConfigure: " + e.toString()); Log.d("GitHostSetupAutoConfigure: " + e.toString());
setState(() { setState(() {
errorMessage = widget.gitHostType.toString() + ": " + e.toString(); errorMessage = widget.gitHostType.toString() + ": " + e.toString();
getAnalytics().logEvent( logEvent(
name: "githostsetup_error", Event.GitHostSetupError,
parameters: <String, String>{ parameters: <String, String>{
'errorMessage': errorMessage, 'errorMessage': errorMessage,
}, },

View File

@ -50,13 +50,10 @@ class GitHostSetupButton extends StatelessWidget {
void _onPressedWithAnalytics() { void _onPressedWithAnalytics() {
Log.d("githostsetup_button_click " + text); Log.d("githostsetup_button_click " + text);
getAnalytics().logEvent( logEvent(Event.GitHostSetupButtonClick, parameters: {
name: "githostsetup_button_click", 'text': text,
parameters: <String, String>{ 'icon_url': iconUrl == null ? "" : iconUrl,
'text': text, });
'icon_url': iconUrl == null ? "" : iconUrl,
},
);
onPressed(); onPressed();
} }
} }

View File

@ -97,12 +97,9 @@ class GitHostSetupRepoSelectorState extends State<GitHostSetupRepoSelector> {
Log.d("GitHostSetupAutoConfigure: " + e.toString()); Log.d("GitHostSetupAutoConfigure: " + e.toString());
setState(() { setState(() {
errorMessage = e.toString(); errorMessage = e.toString();
getAnalytics().logEvent( logEvent(Event.GitHostSetupError, parameters: {
name: "githostsetup_error", 'errorMessage': errorMessage,
parameters: <String, String>{ });
'errorMessage': errorMessage,
},
);
logException(e, stacktrace); logException(e, stacktrace);
}); });

View File

@ -486,12 +486,9 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
if (error != null && error.isNotEmpty) { if (error != null && error.isNotEmpty) {
setState(() { setState(() {
getAnalytics().logEvent( logEvent(Event.GitHostSetupGitCloneError, parameters: {
name: "onboarding_gitClone_error", 'error': error,
parameters: <String, String>{ });
'error': error,
},
);
gitCloneErrorMessage = error; gitCloneErrorMessage = error;
}); });
return; return;
@ -523,8 +520,8 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
); );
} }
getAnalytics().logEvent( logEvent(
name: "onboarding_complete", Event.GitHostSetupComplete,
parameters: _buildOnboardingAnalytics(), parameters: _buildOnboardingAnalytics(),
); );
Navigator.pop(context); Navigator.pop(context);
@ -563,9 +560,9 @@ class GitHostSetupScreenState extends State<GitHostSetupScreen> {
Log.d("GitHostSetupAutoConfigureComplete: " + e.toString()); Log.d("GitHostSetupAutoConfigureComplete: " + e.toString());
setState(() { setState(() {
_autoConfigureErrorMessage = e.toString(); _autoConfigureErrorMessage = e.toString();
getAnalytics().logEvent( logEvent(
name: "githostsetup_error", Event.GitHostSetupError,
parameters: <String, String>{ parameters: {
'errorMessage': _autoConfigureErrorMessage, 'errorMessage': _autoConfigureErrorMessage,
}, },
); );

View File

@ -178,10 +178,7 @@ class _PurchaseWidgetState extends State<PurchaseWidget> {
settings.proExpirationDate = status.expiryDate.toIso8601String(); settings.proExpirationDate = status.expiryDate.toIso8601String();
settings.save(); settings.save();
getAnalytics().logEvent( logEvent(Event.PurchaseScreenThankYou);
name: "purchase_screen_thank_you",
);
Navigator.of(context).popAndPushNamed('/purchase_thank_you'); Navigator.of(context).popAndPushNamed('/purchase_thank_you');
} }