forked from BasedHardware/omi
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcrashlytics_manager.dart
More file actions
81 lines (65 loc) · 2.18 KB
/
Copy pathcrashlytics_manager.dart
File metadata and controls
81 lines (65 loc) · 2.18 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
class CrashlyticsManager {
static final CrashlyticsManager _instance = CrashlyticsManager._internal();
static CrashlyticsManager get instance => _instance;
CrashlyticsManager._internal();
factory CrashlyticsManager() {
return _instance;
}
static Future<void> init() async {
// Disable Crashlytics collection in debug mode
if (kDebugMode) {
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(false);
} else {
await FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(true);
}
}
void identifyUser(String email, String name, String userId) {
FirebaseCrashlytics.instance.setUserIdentifier(userId);
if (email.isNotEmpty) {
FirebaseCrashlytics.instance.setCustomKey('user_email', email);
}
if (name.isNotEmpty) {
FirebaseCrashlytics.instance.setCustomKey('user_name', name);
}
}
void logInfo(String message) {
FirebaseCrashlytics.instance.log(message);
}
void logError(String message) {
FirebaseCrashlytics.instance.log('ERROR: $message');
}
void logWarn(String message) {
FirebaseCrashlytics.instance.log('WARN: $message');
}
void logDebug(String message) {
FirebaseCrashlytics.instance.log('DEBUG: $message');
}
void logVerbose(String message) {
FirebaseCrashlytics.instance.log('VERBOSE: $message');
}
void setUserAttribute(String key, String value) {
FirebaseCrashlytics.instance.setCustomKey(key, value);
}
void setEnabled(bool isEnabled) {
FirebaseCrashlytics.instance.setCrashlyticsCollectionEnabled(isEnabled);
}
Future<void> reportCrash(
Object exception,
StackTrace stackTrace, {
Map<String, String>? userAttributes,
}) async {
if (userAttributes != null) {
for (final entry in userAttributes.entries) {
await FirebaseCrashlytics.instance.setCustomKey(entry.key, entry.value);
}
}
await FirebaseCrashlytics.instance.recordError(exception, stackTrace);
}
NavigatorObserver? getNavigatorObserver() {
return null;
}
bool get isSupported => true;
}