Fix duplicating panels

This commit is contained in:
Yegor Vialov 2020-05-01 16:05:07 +00:00
parent b4ad3061e4
commit 3c0bd68b0a

View File

@ -251,23 +251,25 @@ class HomeAssistant {
} }
Future _getPanels(SharedPreferences sharedPrefs) async { Future _getPanels(SharedPreferences sharedPrefs) async {
panels.clear();
if (sharedPrefs != null) { if (sharedPrefs != null) {
try { try {
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) {
Logger.e(e, stacktrace: stacktrace); Logger.e(e, stacktrace: stacktrace);
panels.clear();
} }
} 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) {
Logger.e('get_panels error: $e', stacktrace: stacktrace); Logger.e('get_panels error: $e', stacktrace: stacktrace);
throw HACException('Can\'t get panles: $e'); panels.clear();
throw HACException('Can\'t get panels: $e');
}); });
} }
} }
void _parsePanels(data) { void _parsePanels(data) {
panels.clear();
_rawPanels = data; _rawPanels = data;
List<Panel> dashboards = []; List<Panel> dashboards = [];
data.forEach((k,v) { data.forEach((k,v) {