mirror of
https://github.com/GitJournal/GitJournal.git
synced 2025-07-17 18:49:55 +08:00

This will show all the files and not just the "notes". This way the user can easily figure out why a file isn't included in the list of notes. It's currently disabled by default as it clearly needs a lot more work.
131 lines
3.3 KiB
Dart
131 lines
3.3 KiB
Dart
import 'package:flutter/foundation.dart';
|
|
import 'package:flutter/material.dart';
|
|
|
|
import 'package:gitjournal/app.dart';
|
|
import 'package:gitjournal/error_reporting.dart';
|
|
import 'package:firebase_analytics/firebase_analytics.dart';
|
|
import 'package:gitjournal/utils/logger.dart';
|
|
|
|
Analytics getAnalytics() {
|
|
return JournalApp.analytics;
|
|
}
|
|
|
|
enum Event {
|
|
NoteAdded,
|
|
NoteUpdated,
|
|
NoteDeleted,
|
|
NoteUndoDeleted,
|
|
NoteRenamed,
|
|
NoteMoved,
|
|
FileRenamed,
|
|
FolderAdded,
|
|
FolderDeleted,
|
|
FolderRenamed,
|
|
FolderConfigUpdated,
|
|
RepoSynced,
|
|
}
|
|
|
|
String _eventToString(Event e) {
|
|
switch (e) {
|
|
case Event.NoteAdded:
|
|
return "note_added";
|
|
case Event.NoteUpdated:
|
|
return "note_updated";
|
|
case Event.NoteDeleted:
|
|
return "note_deleted";
|
|
case Event.NoteUndoDeleted:
|
|
return "note_undo_deleted";
|
|
case Event.NoteRenamed:
|
|
return "note_renamed";
|
|
case Event.NoteMoved:
|
|
return "note_moved";
|
|
|
|
case Event.FileRenamed:
|
|
return "file_renamed";
|
|
|
|
case Event.FolderAdded:
|
|
return "folder_added";
|
|
case Event.FolderDeleted:
|
|
return "folder_deleted";
|
|
case Event.FolderRenamed:
|
|
return "folder_renamed";
|
|
case Event.FolderConfigUpdated:
|
|
return "folder_config_updated";
|
|
|
|
case Event.RepoSynced:
|
|
return "repo_synced";
|
|
}
|
|
|
|
return "unknown_event";
|
|
}
|
|
|
|
class Analytics {
|
|
var firebase = FirebaseAnalytics();
|
|
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({
|
|
@required Event e,
|
|
Map<String, String> parameters,
|
|
}) async {
|
|
String name = _eventToString(e);
|
|
await firebase.logEvent(name: name, parameters: parameters);
|
|
captureErrorBreadcrumb(name: name, parameters: parameters);
|
|
}
|
|
|
|
Future<void> setAnalyticsCollectionEnabled(bool enabled) async {
|
|
this.enabled = enabled;
|
|
return firebase.setAnalyticsCollectionEnabled(enabled);
|
|
}
|
|
}
|
|
|
|
void logEvent(Event event, {Map<String, String> parameters}) {
|
|
getAnalytics().log(e: event, parameters: parameters);
|
|
Log.d("Event $event");
|
|
}
|
|
|
|
class CustomRouteObserver extends RouteObserver<PageRoute<dynamic>> {
|
|
void _sendScreenView(PageRoute<dynamic> route) {
|
|
final String screenName = route.settings.name;
|
|
assert(screenName != null, "Screen name is null $route");
|
|
}
|
|
|
|
@override
|
|
void didPush(Route<dynamic> route, Route<dynamic> previousRoute) {
|
|
super.didPush(route, previousRoute);
|
|
if (route is PageRoute) {
|
|
_sendScreenView(route);
|
|
} else {
|
|
print("route in not a PageRoute! $route");
|
|
}
|
|
}
|
|
|
|
@override
|
|
void didReplace({Route<dynamic> newRoute, Route<dynamic> oldRoute}) {
|
|
super.didReplace(newRoute: newRoute, oldRoute: oldRoute);
|
|
if (newRoute is PageRoute) {
|
|
_sendScreenView(newRoute);
|
|
} else {
|
|
print("newRoute in not a PageRoute! $newRoute");
|
|
}
|
|
}
|
|
|
|
@override
|
|
void didPop(Route<dynamic> route, Route<dynamic> previousRoute) {
|
|
super.didPop(route, previousRoute);
|
|
if (previousRoute is PageRoute && route is PageRoute) {
|
|
_sendScreenView(previousRoute);
|
|
} else {
|
|
print("previousRoute in not a PageRoute! $previousRoute");
|
|
print("route in not a PageRoute! $route");
|
|
}
|
|
}
|
|
}
|