Report all errors to Crashlytivs if in production

This commit is contained in:
Yegor Vialov 2020-05-01 14:34:31 +00:00
parent 101569d6ee
commit 58842d1ebb
2 changed files with 21 additions and 17 deletions

View File

@ -122,9 +122,9 @@ class HomeAssistant {
await prefs.setString('cached_panels', json.encode(_rawPanels));
await prefs.setString('cached_services', json.encode(services));
await prefs.setBool('cached', true);
} catch (e) {
} catch (e, stacktrace) {
await prefs.setBool('cached', false);
Logger.e('Error saving cache: $e');
Logger.e('Error saving cache: $e', stacktrace: stacktrace);
}
Logger.d('Done saving cache');
}
@ -145,12 +145,12 @@ class HomeAssistant {
var data = json.decode(sharedPrefs.getString('cached_config') ?? '{}');
_parseConfig(data);
} catch (e, stacktrace) {
Crashlytics.instance.recordError('Error gettong config from cache: $e', stacktrace);
Logger.e('Error gettong config from cache: $e', stacktrace: stacktrace);
throw HACException("Error getting config: $e");
}
} else {
await ConnectionManager().sendSocketMessage(type: "get_config").then((data) => _parseConfig(data)).catchError((e) {
Crashlytics.instance.recordError('get_config error: $e', null);
Logger.e('get_config error: $e');
throw HACException("Error getting config: $e");
});
}
@ -166,14 +166,14 @@ class HomeAssistant {
var data = json.decode(sharedPrefs.getString('cached_states') ?? '[]');
_parseStates(data);
} catch (e, stacktrace) {
Crashlytics.instance.recordError('Error getting cached states: $e', stacktrace);
Logger.e('Error getting cached states: $e', stacktrace: stacktrace);
throw HACException("Error getting states: $e");
}
} else {
await ConnectionManager().sendSocketMessage(type: "get_states").then(
(data) => _parseStates(data)
).catchError((e) {
Crashlytics.instance.recordError('get_states error: $e', null);
Logger.e('get_states error: $e');
throw HACException("Error getting states: $e");
});
}
@ -213,7 +213,7 @@ class HomeAssistant {
_rawLovelaceData = null;
completer.complete();
} else {
Crashlytics.instance.recordError('lovelace/config error: $e', null);
Logger.e('lovelace/config error: $e');
completer.completeError(HACException("Error getting lovelace config: $e"));
}
});
@ -228,11 +228,11 @@ class HomeAssistant {
var data = json.decode(prefs.getString('cached_services') ?? '{}');
_parseServices(data);
} catch (e, stacktrace) {
Crashlytics.instance.recordError(e, stacktrace);
Logger.e(e, stacktrace: stacktrace);
}
}
await ConnectionManager().sendSocketMessage(type: "get_services").then((data) => _parseServices(data)).catchError((e) {
Crashlytics.instance.recordError('get_services error: $e', null);
Logger.e('get_services error: $e');
});
}
@ -243,7 +243,7 @@ class HomeAssistant {
Future _getUserInfo(SharedPreferences sharedPrefs) async {
_userName = null;
await ConnectionManager().sendSocketMessage(type: "auth/current_user").then((data) => _parseUserInfo(data)).catchError((e) {
Crashlytics.instance.recordError('auth/current_user error: $e', null);
Logger.e('auth/current_user error: $e');
});
}
@ -259,11 +259,11 @@ class HomeAssistant {
var data = json.decode(sharedPrefs.getString('cached_panels') ?? '{}');
_parsePanels(data);
} catch (e, stacktrace) {
Crashlytics.instance.recordError(e, stacktrace);
Logger.e(e, stacktrace: stacktrace);
}
} else {
await ConnectionManager().sendSocketMessage(type: "get_panels").then((data) => _parsePanels(data)).catchError((e, stacktrace) {
Crashlytics.instance.recordError('get_panels error: $e', stacktrace);
Logger.e('get_panels error: $e', stacktrace: stacktrace);
throw HACException('Can\'t get panles: $e');
});
}

View File

@ -1,7 +1,9 @@
import 'package:date_format/date_format.dart';
import 'package:flutter/rendering.dart';
import 'package:flutter/material.dart';
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
enum ErrorLevel {ERROR, WARNING, DEBUG}
class Logger {
@ -27,21 +29,23 @@ class Logger {
print(data);
}
static void e(String message) {
_writeToLog("Error", message);
static void e(String message, {dynamic stacktrace}) {
_writeToLog(ErrorLevel.ERROR, message, stacktrace);
}
static void w(String message) {
_writeToLog("Warning", message);
_writeToLog(ErrorLevel.WARNING, message, null);
}
static void d(String message) {
_writeToLog("Debug", message);
_writeToLog(ErrorLevel.DEBUG, message, null);
}
static void _writeToLog(String level, String message) {
static void _writeToLog(ErrorLevel level, String message, dynamic stacktrace) {
if (isInDebugMode) {
debugPrint('$message');
} else if (level == ErrorLevel.ERROR) {
Crashlytics.instance.recordError('$message', stacktrace);
}
DateTime t = DateTime.now();
_log.add("${formatDate(t, ["mm","dd"," ","HH",":","nn",":","ss"])} [$level] : $message");