diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index e47bc95..dc52000 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -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'); }); } diff --git a/lib/utils/logger.dart b/lib/utils/logger.dart index 353906f..4a6e715 100644 --- a/lib/utils/logger.dart +++ b/lib/utils/logger.dart @@ -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");