From bc642f81ad14701a7f4d477bcd55a9b33e1f05c7 Mon Sep 17 00:00:00 2001 From: Yegor Vialov Date: Sun, 15 Mar 2020 15:26:03 +0000 Subject: [PATCH] Fix caching --- lib/home_assistant.class.dart | 20 +++++++------------- lib/pages/main/main.page.dart | 16 ++++++++-------- 2 files changed, 15 insertions(+), 21 deletions(-) diff --git a/lib/home_assistant.class.dart b/lib/home_assistant.class.dart index 19b0d9b..0fcb06d 100644 --- a/lib/home_assistant.class.dart +++ b/lib/home_assistant.class.dart @@ -12,7 +12,6 @@ class HomeAssistant { HomeAssistantUI ui; Map _instanceConfig = {}; String _userName; - bool childMode; HSVColor savedColor; int savedPlayerPosition; String sendToPlayerId; @@ -68,7 +67,7 @@ class HomeAssistant { futures.add(_getServices(null)); Future.wait(futures).then((_) { if (isMobileAppEnabled) { - if (!childMode) _createUI(); + _createUI(); _fetchCompleter.complete(); MobileAppIntegrationManager.checkAppRegistration(); } else { @@ -80,14 +79,11 @@ class HomeAssistant { return _fetchCompleter.future; } - Future fetchDataFromCache() async { - if (_fetchCompleter != null && !_fetchCompleter.isCompleted) { - Logger.w("Previous cached data fetch is not completed yet"); - return _fetchCompleter.future; - } - _fetchCompleter = Completer(); + Future fetchDataFromCache() async { + Logger.d('Loading cached data'); SharedPreferences prefs = await SharedPreferences.getInstance(); - if (prefs.getBool('cached') != null && prefs.getBool('cached')) { + bool cached = prefs.getBool('cached'); + if (cached != null && cached) { if (entities == null) entities = EntityCollection(ConnectionManager().httpWebHost); try { _getStates(prefs); @@ -99,13 +95,12 @@ class HomeAssistant { _getPanels(prefs); _getServices(prefs); if (isMobileAppEnabled) { - if (!childMode) _createUI(); - } + _createUI(); + } } catch (e) { Logger.d('Didnt get cached data: $e'); } } - _fetchCompleter.complete(); } void saveCache() async { @@ -230,7 +225,6 @@ class HomeAssistant { void _parseUserInfo(data) { _rawUserInfo = data; _userName = data["name"]; - childMode = _userName.startsWith("[child]"); } Future _getPanels(SharedPreferences sharedPrefs) async { diff --git a/lib/pages/main/main.page.dart b/lib/pages/main/main.page.dart index f86abfc..8df7486 100644 --- a/lib/pages/main/main.page.dart +++ b/lib/pages/main/main.page.dart @@ -94,7 +94,7 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker _showInfoBottomBar(progress: true,); _subscribe().then((_) { ConnectionManager().init(loadSettings: true, forceReconnect: true).then((__){ - _fetchData(); + _fetchData(true); LocationManager(); StartupUserMessagesManager().checkMessagesToShow(); }, onError: (e) { @@ -107,18 +107,18 @@ class _MainPageState extends State with WidgetsBindingObserver, Ticker _hideBottomBar(); _showInfoBottomBar(progress: true,); ConnectionManager().init(loadSettings: false, forceReconnect: false).then((_){ - _fetchData(); + _fetchData(false); }, onError: (e) { _setErrorState(e); }); } - _fetchData() async { - await HomeAssistant().fetchDataFromCache().then((_) { - if (_entityToShow != null) { - _entityToShow = HomeAssistant().entities.get(_entityToShow.entityId); - } - }); + _fetchData(bool useCache) async { + if (useCache) { + HomeAssistant().fetchDataFromCache().then((_) { + setState((){}); + }); + } await HomeAssistant().fetchData().then((_) { _hideBottomBar(); if (_entityToShow != null) {