From e5d7d1faae29237033e5f73dcd435ec80662f8d3 Mon Sep 17 00:00:00 2001 From: Sebastian Seedorf Date: Sun, 27 Oct 2019 22:11:58 +0100 Subject: [PATCH] Better offline access with bad network connection --- .../services/canteen/CanteenBrowser.java | 36 +++++++++---------- .../fuplanner/services/kvv/ModulesList.java | 9 +++-- .../fuplanner/services/kvv/PartModules.java | 9 +++-- 3 files changed, 24 insertions(+), 30 deletions(-) diff --git a/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java b/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java index 2a5cb77..392e14d 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java +++ b/app/src/main/java/de/sebse/fuplanner/services/canteen/CanteenBrowser.java @@ -49,12 +49,11 @@ public class CanteenBrowser extends HTTPService { } public void getCanteens(final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { + if (this.canteens != null && !forceRefresh) { + callback.onResponse(this.canteens); + return; + } queue.add("list", () -> { - if (this.canteens != null && !forceRefresh) { - callback.onResponse(this.canteens); - queue.next("list"); - return; - } this.upgradeCanteens(success -> { if (this.canteens == null) this.canteens = success; @@ -111,12 +110,11 @@ public class CanteenBrowser extends HTTPService { } public void getAvailableCanteens(final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { + if (this.availableCanteens != null && !forceRefresh) { + callback.onResponse(this.availableCanteens); + return; + } queue.add("available", () -> { - if (this.availableCanteens != null && !forceRefresh) { - callback.onResponse(this.availableCanteens); - queue.next("available"); - return; - } this.upgradeAvailableCanteens(success -> { if (this.availableCanteens == null) this.availableCanteens = success; @@ -186,12 +184,11 @@ public class CanteenBrowser extends HTTPService { public void getCanteen(Canteen canteen, final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { String hash = "canteen" + canteen.getId(); + if (canteen.size() > 0 && !forceRefresh) { + callback.onResponse(canteen); + return; + } queue.add(hash, () -> { - if (canteen.size() > 0 && !forceRefresh) { - callback.onResponse(canteen); - queue.next(hash); - return; - } this.upgradeCanteen(canteen, success -> { canteen.update(success); this.save(); @@ -233,12 +230,11 @@ public class CanteenBrowser extends HTTPService { public void getDay(Day day, final NetworkCallback callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { String hash = "day" + day.getCanteenId() + "@@@" + Canteen.calendarToKey(day.getCalendar()); + if (day.size() > 0 && !forceRefresh) { + callback.onResponse(day); + return; + } queue.add(hash, () -> { - if (day.size() > 0 && !forceRefresh) { - callback.onResponse(day); - queue.next(hash); - return; - } this.upgradeDay(day, success -> { day.update(success); this.save(); diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java index 8156944..2d6cf9b 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesList.java @@ -131,6 +131,10 @@ public class ModulesList extends HTTPService { mLogin.getLoginTokenBB() != null && mLogin.getLoginTokenBB().isOtherUser(mModules.getUsername()) ) delete(); + if (this.mModules != null && !forceRefresh) { + callback.onResponse(this.mModules); + return; + } mQueue.add(() -> { if (mLogin.isLoginPending()) { mLogin.restoreOnlineLogin(resCode -> { @@ -141,11 +145,6 @@ public class ModulesList extends HTTPService { } }); mQueue.add(() -> { - if (this.mModules != null && !forceRefresh) { - callback.onResponse(this.mModules); - mQueue.next(); - return; - } Function errorFunc = ((Integer errorCode) -> (error -> { if (retries > 0 && (error.getHttpStatus() == 401 || error.getHttpStatus() == 403)) { mLogin.refreshLogin(success -> { diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java index 71b1f8c..485fe80 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/PartModules.java @@ -19,6 +19,10 @@ abstract class PartModules extends Part { @Override protected void recv(final Modules.Module module, final NetworkCallback callback, final NetworkErrorCallback errorCallback, final boolean forceRefresh, final int retries) { + if (getPart(module) != null && !forceRefresh) { + callback.onResponse(module); + return; + } mQueue.add(() -> { if (mLogin.isLoginPending()) { mLogin.restoreOnlineLogin(resCode -> { @@ -29,11 +33,6 @@ abstract class PartModules extends Part { } }); mQueue.add(() -> { - if (getPart(module) != null && !forceRefresh) { - callback.onResponse(module); - mQueue.next(); - return; - } upgrade(module.getModuleType(), module.getID(), success -> { if (setPart(module, success)) { this.mList.store();