todos: Ensure asking for bt permissions happens before initilization.

Change-Id: I0b1eba343ba5091a9e97ac28c0a503405b9198d8
diff --git a/app/src/main/java/io/v/todos/MainActivity.java b/app/src/main/java/io/v/todos/MainActivity.java
index 7dd040b..30ac61b 100644
--- a/app/src/main/java/io/v/todos/MainActivity.java
+++ b/app/src/main/java/io/v/todos/MainActivity.java
@@ -46,6 +46,8 @@
 
     private static final int BLE_LOCATION_PERMISSIONS_REQUEST_CODE = 1;
 
+    private PersistenceInitializer<MainPersistence> mPersistenceInitializer;
+
     @Override
     protected void onCreate(final Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -74,7 +76,7 @@
             }
         }).attachToRecyclerView(mRecyclerView);
 
-        new PersistenceInitializer<MainPersistence>(this) {
+        mPersistenceInitializer = new PersistenceInitializer<MainPersistence>(this) {
             @Override
             protected MainPersistence initPersistence() throws Exception {
                 return PersistenceFactory.getMainPersistence(mActivity, savedInstanceState,
@@ -83,11 +85,14 @@
 
             @Override
             protected void onSuccess(MainPersistence persistence) {
-                requestLocationPermissions();
                 mPersistence = persistence;
                 setEmptyVisiblity();
             }
-        }.execute(PersistenceFactory.mightGetMainPersistenceBlock());
+        };
+
+        // mPersistenceInitializer.execute is invoked once we request location permissions from the
+        // app user.
+        requestLocationPermissions();
     }
 
     // Creates a listener for this activity. Visible to tests to allow them to invoke the listener
@@ -194,6 +199,8 @@
             ActivityCompat.requestPermissions(this,
                     new String[]{Manifest.permission.ACCESS_COARSE_LOCATION},
                     BLE_LOCATION_PERMISSIONS_REQUEST_CODE);
+        } else {
+            mPersistenceInitializer.execute(PersistenceFactory.mightGetMainPersistenceBlock());
         }
     }
 
@@ -202,13 +209,7 @@
                                            String permissions[], int[] grantResults) {
         switch (requestCode) {
             case BLE_LOCATION_PERMISSIONS_REQUEST_CODE: {
-                if (grantResults.length > 0
-                        && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
-                    // Permission was granted;
-                } else {
-                    // Permission was denied;
-                    // TODO(suharshs): We should avoid doing BLE scanning in this case?
-                }
+                mPersistenceInitializer.execute(PersistenceFactory.mightGetMainPersistenceBlock());
                 return;
             }
         }