From 0ecfdaecce66b2bd9be3fab6efe386eeaab26287 Mon Sep 17 00:00:00 2001 From: "K. Shankari" Date: Tue, 25 Sep 2018 12:52:10 -0700 Subject: [PATCH] Move native code from file load to inside ionicPlatform.ready I guess this has been working on production due to timing issues but it is not a long-term fix. All native code should really be inside an ionicPlatform.ready block and not in random places during file load. This includes all callbacks --- www/js/common/services.js | 2 +- www/js/diary/current.js | 33 +++++++++++++++++++++------------ 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/www/js/common/services.js b/www/js/common/services.js index 0f7fbb244..dd406fd21 100644 --- a/www/js/common/services.js +++ b/www/js/common/services.js @@ -7,7 +7,6 @@ angular.module('emission.main.common.services', []) commonGraph.data = {}; commonGraph.UPDATE_DONE = "COMMON_GRAPH_UPDATE_DONE"; - var db = window.cordova.plugins.BEMUserCache; var selKey = "common-trips"; commonGraph.createEmpty = function() { @@ -18,6 +17,7 @@ angular.module('emission.main.common.services', []) }; commonGraph.updateCurrent = function() { + var db = window.cordova.plugins.BEMUserCache; db.getDocument(selKey, false).then(function(entryList) { try{ var cmGraph = entryList; diff --git a/www/js/diary/current.js b/www/js/diary/current.js index f32b5a547..7d90eeae4 100644 --- a/www/js/diary/current.js +++ b/www/js/diary/current.js @@ -10,11 +10,13 @@ .controller('CurrMapCtrl', function($scope, Config, $state, $timeout, $ionicActionSheet,leafletData, Logger, $window, PostTripManualMarker, CommHelper, $http, storage, $ionicPlatform) { - Logger.log("controller CurrMapCtrl called from current.js"); + console.log("controller CurrMapCtrl called from current.js"); var _map; var _localIncidentMarkers = []; var _serverIncidentMarkers = []; - var db = window.cordova.plugins.BEMUserCache; + var db = function() { + return window.cordova.plugins.BEMUserCache; + } MANUAL_INCIDENT = "manual/incident"; BACKGROUND_LOCATION = "background/location"; INCIDENT_CONFIG = 'incident_config'; @@ -32,7 +34,7 @@ }); angular.extend($scope.mapCtrl.defaults, Config.getMapTiles()); - Logger.log("mapCtrl", $scope.mapCtrl); + console.log("mapCtrl", $scope.mapCtrl); $scope.verticalSlider = { options: { @@ -106,7 +108,7 @@ }); var refreshTrip = function() { - db.getAllSensorData(BACKGROUND_LOCATION, true).then(function(result) { + db().getAllSensorData(BACKGROUND_LOCATION, true).then(function(result) { $scope.$apply(function() { Logger.log("current location data" + JSON.stringify(result[0].data)); var coordinates = result.map(function(locWrapper, index, locList) { @@ -175,8 +177,10 @@ }; $scope.$on('leafletDirectiveMap.current.resize', function(event, data) { - Logger.log("current/map received resize event, invalidating map size"); - data.leafletObject.invalidateSize(); + $ionicPlatform.ready().then(function() { + Logger.log("current/map received resize event, invalidating map size"); + data.leafletObject.invalidateSize(); + }); }); var addIncidentLayer = function(stress, marker, map) { @@ -217,7 +221,7 @@ var getLocalIncidents = function() { // No metadata, to make it consistent with the server incidents - db.getAllMessages(MANUAL_INCIDENT, false).then(function(incidents) { + db().getAllMessages(MANUAL_INCIDENT, false).then(function(incidents) { Logger.log("Incidents stored locally" + JSON.stringify(incidents)); if(incidents.length > 0) { addIncidents(incidents, _map, _localIncidentMarkers); @@ -244,7 +248,7 @@ var marker; $scope.showIncidentSheet = function() { - db.getAllSensorData(BACKGROUND_LOCATION, true).then(function(result) { + db().getAllSensorData(BACKGROUND_LOCATION, true).then(function(result) { both = [result[0].data.latitude, result[0].data.longitude]; var ts = result[0].data.ts; var latlng = L.latLng(both); @@ -281,9 +285,11 @@ }; $scope.$on('$ionicView.enter', function() { - Logger.log("entered current screen, starting incident refresh"); - refreshTripLoop(); - getIncidentsLoop(); + $ionicPlatform.ready().then(function() { + Logger.log("entered current screen, starting incident refresh"); + refreshTripLoop(); + getIncidentsLoop(); + }); }); $scope.$on('$ionicView.leave', function() { @@ -303,6 +309,9 @@ clearTimeout(mapRunning); clearTimeout(gettingIncidents); }); - getLocalIncidents(); + $ionicPlatform.ready().then(function() { + Logger.log("ionicPlatform.ready in current screen, getting local incidents"); + getLocalIncidents(); + }); });