From a6b546905864cd1d04aae132b2d7ef11c0cfc114 Mon Sep 17 00:00:00 2001 From: Caesar2011 Date: Thu, 7 Feb 2019 21:53:40 +0100 Subject: [PATCH] Blackboard "Refresh failed" Fix --- .../sebse/fuplanner/services/kvv/Modules.java | 18 ++++++++++++++++-- .../services/kvv/ModulesAnnouncements.java | 7 ++++++- .../services/kvv/ModulesGradebook.java | 9 ++++++--- .../services/kvv/ModulesResources.java | 2 +- 4 files changed, 29 insertions(+), 7 deletions(-) diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java index f2e8868..f96f062 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/Modules.java @@ -2,6 +2,8 @@ package de.sebse.fuplanner.services.kvv; import android.content.Context; +import com.android.volley.NetworkResponse; + import org.jetbrains.annotations.NotNull; import java.util.HashMap; @@ -56,7 +58,13 @@ public class Modules { public ModulesList list() { if (mList == null) { mList = new ModulesList(mLogin, mListener, context); - mList.addErrorListener("Modules", error -> mListener.onKVVNetworkResponse(error.networkResponse)); + mList.addErrorListener("Modules", error -> { + NetworkResponse networkResponse = error.networkResponse; + if ((networkResponse.statusCode == 400 || networkResponse.statusCode == 403) && networkResponse.headers.containsKey("X-Blackboard-product")) + mListener.onKVVNetworkResponse(null); + else + mListener.onKVVNetworkResponse(networkResponse); + }); mList.addSuccessListener("Modules", success -> mListener.onKVVNetworkResponse(null)); } return mList; @@ -68,7 +76,13 @@ public class Modules { Part o = mAddons.get(addon); if (o == null) { o = creatorInterface.create(); - o.addErrorListener("Modules", error -> mListener.onKVVNetworkResponse(error.networkResponse)); + o.addErrorListener("Modules", error -> { + NetworkResponse networkResponse = error.networkResponse; + if ((networkResponse.statusCode == 400 || networkResponse.statusCode == 403) && networkResponse.headers.containsKey("X-Blackboard-product")) + mListener.onKVVNetworkResponse(null); + else + mListener.onKVVNetworkResponse(networkResponse); + }); o.addSuccessListener("Modules", success -> mListener.onKVVNetworkResponse(null)); mAddons.put(addon, o); } diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java index 5304195..fbeb125 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesAnnouncements.java @@ -134,6 +134,11 @@ public class ModulesAnnouncements extends PartModules> { } callback.onResponse(announcements); - }, error -> errorCallback.onError(new NetworkError(101213, error.networkResponse.statusCode, "Cannot get announcements!"))); + }, error -> { + if (error.networkResponse.statusCode == 400) + callback.onResponse(new ArrayList<>()); + else + errorCallback.onError(new NetworkError(101213, error.networkResponse.statusCode, "Cannot get announcements!")); + }); } } diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java index 163a10e..0eac706 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesGradebook.java @@ -8,10 +8,8 @@ import org.json.JSONObject; import java.util.ArrayList; -import de.sebse.fuplanner.services.kvv.types.Announcement; import de.sebse.fuplanner.services.kvv.types.Grade; import de.sebse.fuplanner.services.kvv.types.Modules; -import de.sebse.fuplanner.tools.UtilsDate; import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkError; import de.sebse.fuplanner.tools.network.NetworkErrorCallback; @@ -147,6 +145,11 @@ public class ModulesGradebook extends PartModules> { } callback.onResponse(result); }, error -> errorCallback.onError(new NetworkError(101516, error.networkResponse.statusCode, "Cannot get gradebook columns!"))); - }, error -> errorCallback.onError(new NetworkError(101517, error.networkResponse.statusCode, "Cannot get gradebook entries!"))); + }, error -> { + if (error.networkResponse.statusCode == 403) + callback.onResponse(new ArrayList<>()); + else + errorCallback.onError(new NetworkError(101517, error.networkResponse.statusCode, "Cannot get gradebook entries!")); + }); } } diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java index 63a69d4..c09413a 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesResources.java @@ -225,7 +225,7 @@ public class ModulesResources extends PartModules> { } } }, error -> { - if (!subRequest || error.networkResponse.statusCode != 403) { + if (error.networkResponse.statusCode != 403) { errorCallback.onError(new NetworkError(101613, error.networkResponse.statusCode, "Cannot get resources!")); } else { callback.onResponse(new ArrayList<>());