diff --git a/app/src/main/java/com/futurice/android/reservator/view/trafficlights/TrafficLightsPresenter.java b/app/src/main/java/com/futurice/android/reservator/view/trafficlights/TrafficLightsPresenter.java index f6974d33..554755e3 100644 --- a/app/src/main/java/com/futurice/android/reservator/view/trafficlights/TrafficLightsPresenter.java +++ b/app/src/main/java/com/futurice/android/reservator/view/trafficlights/TrafficLightsPresenter.java @@ -45,6 +45,7 @@ public class TrafficLightsPresenter implements private int state = -1; + private String previousReservationId = null; private boolean connected = true; private boolean reservationChangeInProgess= false; private boolean tentativeChangeInProgess= false; @@ -107,11 +108,13 @@ private void setState(int newState) { if (this.state == newState) return; - else if (this.state == STATE_RESERVED && newState != STATE_RESERVED) { + else if (this.state == STATE_RESERVED && (newState != STATE_RESERVED + || (newState == STATE_RESERVED && this.currentReservation != null && this.currentReservation.getId() != previousReservationId) )) { this.onReservationEnding(); } - else if (this.state != STATE_RESERVED && newState == STATE_RESERVED) { + else if ((this.state != STATE_RESERVED && newState == STATE_RESERVED) + || (newState == STATE_RESERVED && this.currentReservation != null && this.currentReservation.getId() != previousReservationId) ) { this.onReservationStarting(); } @@ -119,6 +122,9 @@ else if (this.state != STATE_RESERVED && newState == STATE_RESERVED) { this.reportReservationStatus(); + if (newState == STATE_RESERVED && this.currentReservation != null) + this.previousReservationId = this.currentReservation.getId(); + this.state = newState; }