Skip to content

Commit

Permalink
feat: Added ImpaktfullAnalyticsUtil and ImpaktfullCrashReportingUtil
Browse files Browse the repository at this point in the history
  • Loading branch information
vanlooverenkoen committed Feb 20, 2025
1 parent 4d2a0f6 commit 90dcdf0
Show file tree
Hide file tree
Showing 6 changed files with 155 additions and 0 deletions.
7 changes: 7 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,10 @@
# 0.12.0

## Feat

- Added ImpaktfullAnalyticsUtil and ImpaktfullCrashReportingUtil
- Added MultiInstanceAnalyticsUtil and MultiInstanceCrashReportingUtil

# 0.11.0

## Feat
Expand Down
2 changes: 2 additions & 0 deletions lib/impaktfull_architecture.dart
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,10 @@ export 'src/repo/remote_config/remote_config_repository.dart';
export 'src/repo/version_check/version_check_repository.dart';
export 'src/service/version_check/version_check_service.dart';
export 'src/service/version_check/noop_version_check_service.dart';
export 'src/util/analytics/analytics_util.dart';
export 'src/util/app_settings/app_settings.dart';
export 'src/util/connectivity/connectivity.dart';
export 'src/util/crash_reporting/crash_reporting_util.dart';
export 'src/util/date_formatter/date_formatter_util.dart';
export 'src/util/dio/combining_smart_interceptor.dart';
export 'src/util/logger/logger.dart';
Expand Down
15 changes: 15 additions & 0 deletions lib/src/util/analytics/analytics_util.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
abstract class ImpaktfullAnalyticsUtil {
Future<void> init({
bool enabled = false,
});

Future<void> setEnabled(bool enabled);

void logEvent(String eventName, {Map<String, dynamic>? data});

void setUserProperty(String property, String value);

void setUserId(String userId);

void setScreenName(String screenName);
}
53 changes: 53 additions & 0 deletions lib/src/util/analytics/multi_instance_analytics_util.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
import 'package:impaktfull_architecture/src/util/analytics/analytics_util.dart';

class MultiInstanceAnalyticsUtil extends ImpaktfullAnalyticsUtil {
final List<ImpaktfullAnalyticsUtil> analyticsUtils;

MultiInstanceAnalyticsUtil(
this.analyticsUtils,
);

@override
Future<void> init({bool enabled = false}) async {
await Future.wait(analyticsUtils.map(
(util) => util.init(
enabled: enabled,
),
));
}

@override
Future<void> setEnabled(bool enabled) async {
await Future.wait(analyticsUtils.map(
(util) => util.setEnabled(enabled),
));
}

@override
void setUserId(String userId) {
for (var util in analyticsUtils) {
util.setUserId(userId);
}
}

@override
void setUserProperty(String property, String value) {
for (var util in analyticsUtils) {
util.setUserProperty(property, value);
}
}

@override
void logEvent(String eventName, {Map<String, dynamic>? data}) {
for (var util in analyticsUtils) {
util.logEvent(eventName, data: data);
}
}

@override
void setScreenName(String screenName) {
for (var util in analyticsUtils) {
util.setScreenName(screenName);
}
}
}
17 changes: 17 additions & 0 deletions lib/src/util/crash_reporting/crash_reporting_util.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
abstract class ImpaktfullCrashReportingUtil {
Future<void> init({bool enabled = false});

Future<void> setEnabled(bool enabled);

void setUserId(String userId);

void setUserProperty(String property, String value);

void logError({
required Object error,
required StackTrace stackTrace,
String? message,
});

void log(String message, {Map<String, dynamic>? data});
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
import 'package:impaktfull_architecture/src/util/crash_reporting/crash_reporting_util.dart';

class MultiInstanceCrashReportingUtil extends ImpaktfullCrashReportingUtil {
final List<ImpaktfullCrashReportingUtil> crashReportingUtils;

MultiInstanceCrashReportingUtil(
this.crashReportingUtils,
);

@override
Future<void> init({bool enabled = false}) async {
await Future.wait(
crashReportingUtils.map(
(util) => util.init(
enabled: enabled,
),
),
);
}

@override
Future<void> setEnabled(bool enabled) async {
await Future.wait(
crashReportingUtils.map(
(util) => util.setEnabled(enabled),
),
);
}

@override
void setUserId(String userId) {
for (final util in crashReportingUtils) {
util.setUserId(userId);
}
}

@override
void setUserProperty(String property, String value) {
for (final util in crashReportingUtils) {
util.setUserProperty(property, value);
}
}

@override
void log(String message, {Map<String, dynamic>? data}) {
for (final util in crashReportingUtils) {
util.log(message, data: data);
}
}

@override
void logError({
required Object error,
required StackTrace stackTrace,
String? message,
}) {
for (final util in crashReportingUtils) {
util.logError(error: error, stackTrace: stackTrace, message: message);
}
}
}

0 comments on commit 90dcdf0

Please sign in to comment.