From 7d33d4c95932d1c1789f6fafecbcc761f85d0b5f Mon Sep 17 00:00:00 2001
From: Lennart Goedhart <lennart@omnibase.com.au>
Date: Sun, 7 Jan 2018 11:04:15 +1100
Subject: [PATCH] Don't crash if there is no active pump history (new pump, or
 no CGM for last 7 days)

---
 .../android/medtronic/PumpHistoryHandler.java | 90 ++++++++++---------
 1 file changed, 46 insertions(+), 44 deletions(-)

diff --git a/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java b/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java
index 7f4cbd3..0da05bb 100644
--- a/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java
+++ b/app/src/main/java/info/nightscout/android/medtronic/PumpHistoryHandler.java
@@ -459,57 +459,59 @@ public class PumpHistoryHandler {
                 });
             }
 */
-            if (pulledFrom.getTime() > segment.get(1).getToDate().getTime()) {
-                // update the segment fromDate, we still need more history for this segment
-                historyRealm.executeTransaction(new Realm.Transaction() {
-                    @Override
-                    public void execute(Realm realm) {
-                        segment.get(0).setFromDate(pulledFrom);
-                    }
-                });
-            } else {
-                // segments now overlap, combine to single segment
-                historyRealm.executeTransaction(new Realm.Transaction() {
-                    @Override
-                    public void execute(Realm realm) {
-                        segment.get(1).setToDate(segment.get(0).getToDate());
-                        segment.deleteFromRealm(0);
-                    }
-                });
-                // check if any remaining segments need combining or deleting
-                boolean checkNext = true;
-                while (checkNext && segment.size() > 1) {
-                    // delete next segment if not needed as we have the events from recent pull
-                    if (segment.get(1).getFromDate().getTime() > pulledFrom.getTime()) {
-                        historyRealm.executeTransaction(new Realm.Transaction() {
-                            @Override
-                            public void execute(Realm realm) {
-                                segment.deleteFromRealm(1);
-                            }
-                        });
-                    }
-                    // combine segments if needed
-                    else {
-                        checkNext = false;
-                        if (segment.get(1).getToDate().getTime() > pulledFrom.getTime()) {
+            if(pulledFrom != null) {
+                if (pulledFrom.getTime() > segment.get(1).getToDate().getTime()) {
+                    // update the segment fromDate, we still need more history for this segment
+                    historyRealm.executeTransaction(new Realm.Transaction() {
+                        @Override
+                        public void execute(Realm realm) {
+                            segment.get(0).setFromDate(pulledFrom);
+                        }
+                    });
+                } else {
+                    // segments now overlap, combine to single segment
+                    historyRealm.executeTransaction(new Realm.Transaction() {
+                        @Override
+                        public void execute(Realm realm) {
+                            segment.get(1).setToDate(segment.get(0).getToDate());
+                            segment.deleteFromRealm(0);
+                        }
+                    });
+                    // check if any remaining segments need combining or deleting
+                    boolean checkNext = true;
+                    while (checkNext && segment.size() > 1) {
+                        // delete next segment if not needed as we have the events from recent pull
+                        if (segment.get(1).getFromDate().getTime() > pulledFrom.getTime()) {
                             historyRealm.executeTransaction(new Realm.Transaction() {
                                 @Override
                                 public void execute(Realm realm) {
-                                    segment.get(1).setToDate(segment.get(0).getToDate());
-                                    segment.deleteFromRealm(0);
+                                    segment.deleteFromRealm(1);
                                 }
                             });
                         }
-                    }
-                }
-                // finally update segment fromDate if needed
-                if (segment.get(0).getFromDate().getTime() > pulledFrom.getTime()) {
-                    historyRealm.executeTransaction(new Realm.Transaction() {
-                        @Override
-                        public void execute(Realm realm) {
-                            segment.get(0).setFromDate(pulledFrom);
+                        // combine segments if needed
+                        else {
+                            checkNext = false;
+                            if (segment.get(1).getToDate().getTime() > pulledFrom.getTime()) {
+                                historyRealm.executeTransaction(new Realm.Transaction() {
+                                    @Override
+                                    public void execute(Realm realm) {
+                                        segment.get(1).setToDate(segment.get(0).getToDate());
+                                        segment.deleteFromRealm(0);
+                                    }
+                                });
+                            }
                         }
-                    });
+                    }
+                    // finally update segment fromDate if needed
+                    if (segment.get(0).getFromDate().getTime() > pulledFrom.getTime()) {
+                        historyRealm.executeTransaction(new Realm.Transaction() {
+                            @Override
+                            public void execute(Realm realm) {
+                                segment.get(0).setFromDate(pulledFrom);
+                            }
+                        });
+                    }
                 }
             }
         }
-- 
GitLab