Report all errors to Crashlytivs if in production
This commit is contained in:
parent
101569d6ee
commit
58842d1ebb
@ -122,9 +122,9 @@ class HomeAssistant {
|
|||||||
await prefs.setString('cached_panels', json.encode(_rawPanels));
|
await prefs.setString('cached_panels', json.encode(_rawPanels));
|
||||||
await prefs.setString('cached_services', json.encode(services));
|
await prefs.setString('cached_services', json.encode(services));
|
||||||
await prefs.setBool('cached', true);
|
await prefs.setBool('cached', true);
|
||||||
} catch (e) {
|
} catch (e, stacktrace) {
|
||||||
await prefs.setBool('cached', false);
|
await prefs.setBool('cached', false);
|
||||||
Logger.e('Error saving cache: $e');
|
Logger.e('Error saving cache: $e', stacktrace: stacktrace);
|
||||||
}
|
}
|
||||||
Logger.d('Done saving cache');
|
Logger.d('Done saving cache');
|
||||||
}
|
}
|
||||||
@ -145,12 +145,12 @@ class HomeAssistant {
|
|||||||
var data = json.decode(sharedPrefs.getString('cached_config') ?? '{}');
|
var data = json.decode(sharedPrefs.getString('cached_config') ?? '{}');
|
||||||
_parseConfig(data);
|
_parseConfig(data);
|
||||||
} catch (e, stacktrace) {
|
} 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");
|
throw HACException("Error getting config: $e");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await ConnectionManager().sendSocketMessage(type: "get_config").then((data) => _parseConfig(data)).catchError((e) {
|
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");
|
throw HACException("Error getting config: $e");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -166,14 +166,14 @@ class HomeAssistant {
|
|||||||
var data = json.decode(sharedPrefs.getString('cached_states') ?? '[]');
|
var data = json.decode(sharedPrefs.getString('cached_states') ?? '[]');
|
||||||
_parseStates(data);
|
_parseStates(data);
|
||||||
} catch (e, stacktrace) {
|
} 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");
|
throw HACException("Error getting states: $e");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await ConnectionManager().sendSocketMessage(type: "get_states").then(
|
await ConnectionManager().sendSocketMessage(type: "get_states").then(
|
||||||
(data) => _parseStates(data)
|
(data) => _parseStates(data)
|
||||||
).catchError((e) {
|
).catchError((e) {
|
||||||
Crashlytics.instance.recordError('get_states error: $e', null);
|
Logger.e('get_states error: $e');
|
||||||
throw HACException("Error getting states: $e");
|
throw HACException("Error getting states: $e");
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -213,7 +213,7 @@ class HomeAssistant {
|
|||||||
_rawLovelaceData = null;
|
_rawLovelaceData = null;
|
||||||
completer.complete();
|
completer.complete();
|
||||||
} else {
|
} else {
|
||||||
Crashlytics.instance.recordError('lovelace/config error: $e', null);
|
Logger.e('lovelace/config error: $e');
|
||||||
completer.completeError(HACException("Error getting lovelace config: $e"));
|
completer.completeError(HACException("Error getting lovelace config: $e"));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
@ -228,11 +228,11 @@ class HomeAssistant {
|
|||||||
var data = json.decode(prefs.getString('cached_services') ?? '{}');
|
var data = json.decode(prefs.getString('cached_services') ?? '{}');
|
||||||
_parseServices(data);
|
_parseServices(data);
|
||||||
} catch (e, stacktrace) {
|
} 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) {
|
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 {
|
Future _getUserInfo(SharedPreferences sharedPrefs) async {
|
||||||
_userName = null;
|
_userName = null;
|
||||||
await ConnectionManager().sendSocketMessage(type: "auth/current_user").then((data) => _parseUserInfo(data)).catchError((e) {
|
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') ?? '{}');
|
var data = json.decode(sharedPrefs.getString('cached_panels') ?? '{}');
|
||||||
_parsePanels(data);
|
_parsePanels(data);
|
||||||
} catch (e, stacktrace) {
|
} catch (e, stacktrace) {
|
||||||
Crashlytics.instance.recordError(e, stacktrace);
|
Logger.e(e, stacktrace: stacktrace);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await ConnectionManager().sendSocketMessage(type: "get_panels").then((data) => _parsePanels(data)).catchError((e, stacktrace) {
|
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');
|
throw HACException('Can\'t get panles: $e');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -1,7 +1,9 @@
|
|||||||
import 'package:date_format/date_format.dart';
|
import 'package:date_format/date_format.dart';
|
||||||
import 'package:flutter/rendering.dart';
|
import 'package:flutter/rendering.dart';
|
||||||
import 'package:flutter/material.dart';
|
import 'package:flutter/material.dart';
|
||||||
|
import 'package:firebase_crashlytics/firebase_crashlytics.dart';
|
||||||
|
|
||||||
|
enum ErrorLevel {ERROR, WARNING, DEBUG}
|
||||||
|
|
||||||
class Logger {
|
class Logger {
|
||||||
|
|
||||||
@ -27,21 +29,23 @@ class Logger {
|
|||||||
print(data);
|
print(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void e(String message) {
|
static void e(String message, {dynamic stacktrace}) {
|
||||||
_writeToLog("Error", message);
|
_writeToLog(ErrorLevel.ERROR, message, stacktrace);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void w(String message) {
|
static void w(String message) {
|
||||||
_writeToLog("Warning", message);
|
_writeToLog(ErrorLevel.WARNING, message, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void d(String message) {
|
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) {
|
if (isInDebugMode) {
|
||||||
debugPrint('$message');
|
debugPrint('$message');
|
||||||
|
} else if (level == ErrorLevel.ERROR) {
|
||||||
|
Crashlytics.instance.recordError('$message', stacktrace);
|
||||||
}
|
}
|
||||||
DateTime t = DateTime.now();
|
DateTime t = DateTime.now();
|
||||||
_log.add("${formatDate(t, ["mm","dd"," ","HH",":","nn",":","ss"])} [$level] : $message");
|
_log.add("${formatDate(t, ["mm","dd"," ","HH",":","nn",":","ss"])} [$level] : $message");
|
||||||
|
Reference in New Issue
Block a user