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 e236c32..131d731 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 @@ -67,7 +67,6 @@ class ModulesListLecturer extends HTTPService { errorCallback.onError(new NetworkError(102101, 403, "No lecturers retrieved!")); return; } - LinkedHashSet lecturers = new LinkedHashSet<>(); JSONArray sites; try { JSONObject json = new JSONObject(body); @@ -78,8 +77,18 @@ class ModulesListLecturer extends HTTPService { return; } + LinkedHashSet lecturers = new LinkedHashSet<>(); final int[] latch = {sites.length()}; ArrayList lecturerString2 = new ArrayList<>(); + NetworkCallback> successCallback = l -> { + mStorage.setLecturersPerCourse(moduleID, lecturerString2); + try { + mStorage.save(getContext()); + } catch (IOException e) { + e.printStackTrace(); + } + callback.onResponse(lecturers); + }; for (int i = 0; i < sites.length(); i++) { try { JSONObject lecturerJson = sites.getJSONObject(i); @@ -89,28 +98,21 @@ class ModulesListLecturer extends HTTPService { lecturerString2.add(userId); getBBLecturer(userId, success -> { lecturers.add(success); - if (--latch[0] == 0) callback.onResponse(lecturers); + if (--latch[0] == 0) successCallback.onResponse(lecturers); }, error -> { log.e(error); - if (--latch[0] == 0) callback.onResponse(lecturers); + if (--latch[0] == 0) successCallback.onResponse(lecturers); }); } else { - if (--latch[0] == 0) callback.onResponse(lecturers); + if (--latch[0] == 0) successCallback.onResponse(lecturers); } } 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); + if (--latch[0] == 0) successCallback.onResponse(lecturers); } } - 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!"))); }