diff --git a/lib/analytics.dart b/lib/analytics.dart index f495488c..dacb0c5d 100644 --- a/lib/analytics.dart +++ b/lib/analytics.dart @@ -44,6 +44,11 @@ enum Event { Settings, FeatureTimelineGithubClicked, + AppFirstOpen, + AppUpdate, + + // FIXME: Add os_update + /* Firebase Automatic Events: app_update: @@ -122,6 +127,11 @@ String _eventToString(Event e) { case Event.FeatureTimelineGithubClicked: return "feature_timeline_github_clicked"; + + case Event.AppFirstOpen: + return "gj_first_open"; + case Event.AppUpdate: + return "gj_app_update"; } return "unknown_event"; diff --git a/lib/app.dart b/lib/app.dart index 8a20d8f7..370cc710 100644 --- a/lib/app.dart +++ b/lib/app.dart @@ -10,6 +10,7 @@ import 'package:dynamic_theme/dynamic_theme.dart'; import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization_loader/easy_localization_loader.dart'; import 'package:flutter_sentry/flutter_sentry.dart'; +import 'package:package_info/package_info.dart'; import 'package:path/path.dart' as p; import 'package:path_provider/path_provider.dart'; import 'package:provider/provider.dart'; @@ -53,6 +54,7 @@ class JournalApp extends StatefulWidget { if (appSettings.collectUsageStatistics) { _enableAnalyticsIfPossible(settings); } + _sendAppUpdateEvent(appSettings); var dir = await getApplicationDocumentsDirectory(); appState.gitBaseDirectory = dir.path; @@ -141,6 +143,26 @@ class JournalApp extends StatefulWidget { } } + static Future _sendAppUpdateEvent(AppSettings appSettings) async { + var info = await PackageInfo.fromPlatform(); + var version = info.version; + + if (appSettings.appVersion == version) { + return; + } + + logEvent(Event.AppUpdate, parameters: { + "version": version, + "previous_app_version": appSettings.appVersion, + "app_name": info.appName, + "package_name": info.packageName, + "build_number": info.buildNumber, + }); + + appSettings.appVersion = version; + appSettings.save(); + } + static final analytics = Analytics(); static bool isInDebugMode = false; diff --git a/lib/app_settings.dart b/lib/app_settings.dart index 4a7296cb..ad7e74a7 100644 --- a/lib/app_settings.dart +++ b/lib/app_settings.dart @@ -35,6 +35,8 @@ class AppSettings extends ChangeNotifier { var experimentalGraphView = false; var experimentalZeroConf = false; + var appVersion = ""; + void load(SharedPreferences pref) { onBoardingCompleted = pref.getBool("onBoardingCompleted") ?? false; @@ -64,6 +66,8 @@ class AppSettings extends ChangeNotifier { pref.getBool("experimentalGraphView") ?? experimentalGraphView; experimentalZeroConf = pref.getBool("experimentalZeroConf") ?? experimentalZeroConf; + + appVersion = pref.getString("appVersion") ?? ""; } Future save() async { @@ -92,6 +96,7 @@ class AppSettings extends ChangeNotifier { defaultSet.experimentalZeroConf); pref.setInt("appSettingsVersion", version); + pref.setString("appVersion", appVersion); notifyListeners(); }