-
Notifications
You must be signed in to change notification settings - Fork 3
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
a68fffd
commit d3fe7f4
Showing
10 changed files
with
263 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
import 'package:dantex/src/data/logging/event.dart'; | ||
import 'package:dantex/src/data/logging/logger.dart'; | ||
|
||
class DebugLogger extends DanteLogger { | ||
@override | ||
void trackEvent(DanteTrackingEvent event) { | ||
String message = 'Event: ${event.name}'; | ||
if (event.props.isNotEmpty) { | ||
message += ' - ${event.props}'; | ||
} | ||
d(message); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
abstract class DanteTrackingEvent { | ||
final String name; | ||
final Map<String, Object?> props; | ||
|
||
DanteTrackingEvent(this.name, {this.props = const {}}); | ||
} | ||
|
||
class AuthenticationSource { | ||
final String name; | ||
|
||
AuthenticationSource(this.name); | ||
} | ||
|
||
class LoginSource { | ||
final String name; | ||
|
||
LoginSource(this.name); | ||
} | ||
|
||
class OpenTermsOfServices extends DanteTrackingEvent { | ||
OpenTermsOfServices() : super('open_terms_of_services'); | ||
} | ||
|
||
class ResetPasswordSuccess extends DanteTrackingEvent { | ||
ResetPasswordSuccess() : super('reset_password_success'); | ||
} | ||
|
||
class ResetPasswordFailed extends DanteTrackingEvent { | ||
ResetPasswordFailed() : super('reset_password_failed'); | ||
} | ||
|
||
class ReportLoginProblem extends DanteTrackingEvent { | ||
ReportLoginProblem() : super('report_login_problem'); | ||
} | ||
|
||
class OpenLogin extends DanteTrackingEvent { | ||
OpenLogin(LoginSource source) | ||
: super('open_login', props: {'source': source.name}); | ||
} | ||
|
||
class Login extends DanteTrackingEvent { | ||
Login(AuthenticationSource source) | ||
: super('app_login', props: {'source': source.name}); | ||
} | ||
|
||
class SignUp extends DanteTrackingEvent { | ||
SignUp(AuthenticationSource source) | ||
: super('app_signup', props: {'source': source.name}); | ||
} | ||
|
||
class Logout extends DanteTrackingEvent { | ||
Logout(AuthenticationSource source) | ||
: super('app_logout', props: {'source': source.name}); | ||
} | ||
|
||
class AnonymousUpgrade extends DanteTrackingEvent { | ||
AnonymousUpgrade() : super('anonymous_upgrade'); | ||
} | ||
|
||
class UpdateMailPasswordSuccess extends DanteTrackingEvent { | ||
UpdateMailPasswordSuccess() : super('update_mail_password_success'); | ||
} | ||
|
||
class UpdateMailPasswordFailure extends DanteTrackingEvent { | ||
UpdateMailPasswordFailure() : super('update_mail_password_failure'); | ||
} | ||
|
||
class UserNameChanged extends DanteTrackingEvent { | ||
UserNameChanged() : super('user_name_changed'); | ||
} | ||
|
||
class UserImageChanged extends DanteTrackingEvent { | ||
UserImageChanged() : super('user_image_changed'); | ||
} | ||
|
||
class BackupMadeEvent extends DanteTrackingEvent { | ||
BackupMadeEvent(String backupProvider) | ||
: super( | ||
'backup_made', | ||
props: {'backup_provider': backupProvider}, | ||
); | ||
} | ||
|
||
class InterestedInOnlineStorageEvent extends DanteTrackingEvent { | ||
InterestedInOnlineStorageEvent() : super('interested_in_online_storage'); | ||
} | ||
|
||
class StartImport extends DanteTrackingEvent { | ||
StartImport(String importer) | ||
: super( | ||
'start_import', | ||
props: {'importer_name': importer}, | ||
); | ||
} | ||
|
||
class OpenBackupFile extends DanteTrackingEvent { | ||
OpenBackupFile(String providerAcronym) | ||
: super( | ||
'open_backup_file', | ||
props: {'backup_provider': providerAcronym}, | ||
); | ||
} | ||
|
||
class TrackingStateChanged extends DanteTrackingEvent { | ||
TrackingStateChanged(bool state) | ||
: super('tracking_state_changed', props: {'state': state}); | ||
} | ||
|
||
class PickRandomBook extends DanteTrackingEvent { | ||
PickRandomBook(int booksInBacklog) | ||
: super( | ||
'pick_random_book', | ||
props: {'backlog_count': booksInBacklog}, | ||
); | ||
} | ||
|
||
class AddSuggestionToWishlist extends DanteTrackingEvent { | ||
AddSuggestionToWishlist( | ||
String suggestionId, | ||
String bookTitle, | ||
String suggester, | ||
) : super( | ||
'add_suggestion_to_wishlist', | ||
props: { | ||
'suggestion_id': suggestionId, | ||
'suggestion_book': bookTitle, | ||
'suggestion_suggester': suggester, | ||
}, | ||
); | ||
} | ||
|
||
class SuggestBook extends DanteTrackingEvent { | ||
SuggestBook(String title) | ||
: super('suggest_book', props: {'book_title': title}); | ||
} | ||
|
||
class OpenAdFreeMediumArticle extends DanteTrackingEvent { | ||
OpenAdFreeMediumArticle() : super('open_ad_free_medium_article'); | ||
} | ||
|
||
class DisableRandomBookInteraction extends DanteTrackingEvent { | ||
DisableRandomBookInteraction() : super('disable_random_book_interaction'); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
import 'dart:async'; | ||
|
||
import 'package:dantex/src/data/logging/event.dart'; | ||
import 'package:dantex/src/data/logging/logger.dart'; | ||
import 'package:firebase_analytics/firebase_analytics.dart'; | ||
|
||
class FirebaseLogger extends DanteLogger { | ||
@override | ||
void trackEvent(DanteTrackingEvent event) { | ||
// Log the event in the background. | ||
unawaited( | ||
FirebaseAnalytics.instance.logEvent( | ||
name: event.name, | ||
parameters: event.props, | ||
), | ||
); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
import 'package:dantex/src/data/logging/error_only_filter.dart'; | ||
import 'package:dantex/src/data/logging/event.dart'; | ||
import 'package:dantex/src/data/logging/firebase_log_output.dart'; | ||
import 'package:flutter/foundation.dart'; | ||
import 'package:logger/logger.dart'; | ||
|
||
abstract class DanteLogger extends Logger { | ||
DanteLogger() | ||
: super( | ||
filter: kDebugMode ? DevelopmentFilter() : ErrorOnlyFilter(), | ||
printer: PrettyPrinter( | ||
methodCount: 0, | ||
printTime: true, | ||
), | ||
// Use Firebase logging only for production | ||
output: kDebugMode ? ConsoleOutput() : FirebaseLogOutput(), | ||
); | ||
|
||
void trackEvent(DanteTrackingEvent event); | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters