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 d46347a..ef767e3 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 @@ -102,6 +102,9 @@ public class ModulesList extends HTTPService { } catch (ClassNotFoundException e) { e.printStackTrace(); } + if (this.mModules == null) { + recv(success -> {}, log::e); + } } public void delete() { diff --git a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java index 7882532..e236c32 100644 --- a/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java +++ b/app/src/main/java/de/sebse/fuplanner/services/kvv/ModulesListLecturer.java @@ -79,12 +79,12 @@ class ModulesListLecturer extends HTTPService { } final int[] latch = {sites.length()}; + ArrayList lecturerString2 = new ArrayList<>(); for (int i = 0; i < sites.length(); i++) { try { JSONObject lecturerJson = sites.getJSONObject(i); String userId = lecturerJson.getString("userId"); String role = lecturerJson.getString("courseRoleId"); - ArrayList lecturerString2 = new ArrayList<>(); if (!"Student".equals(role)) { lecturerString2.add(userId); getBBLecturer(userId, success -> { @@ -97,23 +97,30 @@ class ModulesListLecturer extends HTTPService { } else { if (--latch[0] == 0) callback.onResponse(lecturers); } - mStorage.setLecturersPerCourse(moduleID, lecturerString2); - mStorage.save(getContext()); } catch (JSONException e) { log.e(new NetworkError(102103, 403, "Cannot parse lecturers!")); log.e("ID:", i, "JSON:", sites); e.printStackTrace(); if (--latch[0] == 0) callback.onResponse(lecturers); - } catch (IOException e) { - log.e("Saving LecturerStorage failed!"); - e.printStackTrace(); } } + mStorage.setLecturersPerCourse(moduleID, lecturerString2); + try { + mStorage.save(getContext()); + } catch (IOException e) { + e.printStackTrace(); + } callback.onResponse(lecturers); }, error -> errorCallback.onError(new NetworkError(102104, error.networkResponse.statusCode, "Error retrieving lecturers!"))); } public void getBBLecturer(String lecturerID, NetworkCallback callback, NetworkErrorCallback errorCallback) { + Lecturer lecturerStore = mStorage.getLecturer(lecturerID); + if (lecturerStore != null) { + callback.onResponse(lecturerStore); + return; + } + if (!mLogin.isInOnlineMode() || mLogin.getLoginTokenBB() == null || !mLogin.getLoginTokenBB().isAvailable()) { errorCallback.onError(new NetworkError(102110, 500, "Currently running in offline mode!")); return; @@ -130,6 +137,12 @@ class ModulesListLecturer extends HTTPService { String givenName = json.getJSONObject("name").getString("given"); String familyName = json.getJSONObject("name").getString("family"); Lecturer lecturer = new Lecturer(givenName, familyName, userName + "@zedat.fu-berlin.de", true); + mStorage.setLecturer(lecturerID, lecturer); + try { + mStorage.save(getContext()); + } catch (IOException e) { + e.printStackTrace(); + } callback.onResponse(lecturer); } catch (JSONException e) { e.printStackTrace();