From 125f3ac16cf048d98d03976c35851b5b6b676f2b Mon Sep 17 00:00:00 2001 From: estevez-dev Date: Thu, 14 Mar 2019 16:39:37 +0200 Subject: [PATCH] Resolves #327 Timer duration parsing error --- lib/entity_class/timer_entity.dart | 39 ++++++++++++++++++------------ lib/main.dart | 2 +- pubspec.yaml | 2 +- 3 files changed, 26 insertions(+), 17 deletions(-) diff --git a/lib/entity_class/timer_entity.dart b/lib/entity_class/timer_entity.dart index 6a2a3ec..3251d56 100644 --- a/lib/entity_class/timer_entity.dart +++ b/lib/entity_class/timer_entity.dart @@ -9,22 +9,31 @@ class TimerEntity extends Entity { void update(Map rawData) { super.update(rawData); String durationSource = "${attributes["duration"]}"; - List durationList = durationSource.split(":"); - if (durationList.length == 1) { - duration = Duration(seconds: int.tryParse(durationList[0] ?? 0)); - } else if (durationList.length == 2) { - duration = Duration( - hours: int.tryParse(durationList[0]) ?? 0, - minutes: int.tryParse(durationList[1]) ?? 0 - ); - } else if (durationList.length == 3) { - duration = Duration( - hours: int.tryParse(durationList[0]) ?? 0, - minutes: int.tryParse(durationList[1]) ?? 0, - seconds: int.tryParse(durationList[2]) ?? 0 - ); + if (durationSource != null && durationSource.isNotEmpty) { + try { + List durationList = durationSource.split(":"); + if (durationList.length == 1) { + duration = Duration(seconds: int.tryParse(durationList[0] ?? 0)); + } else if (durationList.length == 2) { + duration = Duration( + hours: int.tryParse(durationList[0]) ?? 0, + minutes: int.tryParse(durationList[1]) ?? 0 + ); + } else if (durationList.length == 3) { + duration = Duration( + hours: int.tryParse(durationList[0]) ?? 0, + minutes: int.tryParse(durationList[1]) ?? 0, + seconds: int.tryParse(durationList[2]) ?? 0 + ); + } else { + Logger.e("Strange $entityId duration format: $durationSource"); + duration = Duration(seconds: 0); + } + } catch (e) { + Logger.e("Error parsing duration for $entityId: ${e.toString()}"); + duration = Duration(seconds: 0); + } } else { - Logger.e("Cann't parse $entityId duration: $durationSource"); duration = Duration(seconds: 0); } } diff --git a/lib/main.dart b/lib/main.dart index 45b98d8..460ffe3 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -100,7 +100,7 @@ part 'ui_widgets/config_panel_widget.dart'; EventBus eventBus = new EventBus(); const String appName = "HA Client"; -const appVersion = "0.5.1"; +const appVersion = "0.5.2"; String homeAssistantWebHost; diff --git a/pubspec.yaml b/pubspec.yaml index 2a35c21..5390d6c 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,7 +1,7 @@ name: hass_client description: Home Assistant Android Client -version: 0.5.1+99 +version: 0.5.2+100 environment: sdk: ">=2.0.0-dev.68.0 <3.0.0"