Refesh on error fixed

This commit is contained in:
Caesar2011
2018-07-05 12:19:50 +02:00
parent 21aab66d9a
commit 264240b35d
7 changed files with 33 additions and 13 deletions

2
.idea/misc.xml generated
View File

@@ -25,5 +25,5 @@
</value> </value>
</option> </option>
</component> </component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8 (2)" project-jdk-type="JavaSDK" /> <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" default="true" project-jdk-name="1.8" project-jdk-type="JavaSDK" />
</project> </project>

2
.idea/modules.xml generated
View File

@@ -2,7 +2,7 @@
<project version="4"> <project version="4">
<component name="ProjectModuleManager"> <component name="ProjectModuleManager">
<modules> <modules>
<module fileurl="file://$PROJECT_DIR$/.idea/FUPlanner.iml" filepath="$PROJECT_DIR$/.idea/FUPlanner.iml" /> <module fileurl="file://$PROJECT_DIR$/FUPlanner.iml" filepath="$PROJECT_DIR$/FUPlanner.iml" />
<module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" /> <module fileurl="file://$PROJECT_DIR$/app/app.iml" filepath="$PROJECT_DIR$/app/app.iml" />
</modules> </modules>
</component> </component>

1
.idea/vcs.xml generated
View File

@@ -2,6 +2,5 @@
<project version="4"> <project version="4">
<component name="VcsDirectoryMappings"> <component name="VcsDirectoryMappings">
<mapping directory="" vcs="Git" /> <mapping directory="" vcs="Git" />
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component> </component>
</project> </project>

View File

@@ -94,8 +94,14 @@ public class ModDetailOverviewFragment extends Fragment {
adapter.setModule(); adapter.setModule();
if (pair.second) if (pair.second)
swipeLayout.setRefreshing(false); swipeLayout.setRefreshing(false);
}, error -> log.e(error)); }, error -> {
}, error -> log.e(error), forceRefresh); swipeLayout.setRefreshing(false);
log.e(error);
});
}, error -> {
swipeLayout.setRefreshing(false);
log.e(error);
}, forceRefresh);
} }
} }

View File

@@ -44,7 +44,9 @@ public class KVVModuleList extends HTTPService {
super(context); super(context);
this.token = token; this.token = token;
try { try {
this.moduleList = Modules.load(context); Modules modules = Modules.load(context);
if (modules.getUsername().equals(token.getUsername()))
this.moduleList = modules;
} catch (IOException e) { } catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
} catch (ClassNotFoundException e) { } catch (ClassNotFoundException e) {
@@ -56,7 +58,9 @@ public class KVVModuleList extends HTTPService {
public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) { public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) {
log.d("getModuleList");
queueModuleDetails.add("list", () -> { queueModuleDetails.add("list", () -> {
log.d("getModuleList start", forceRefresh);
if (this.moduleList != null && !forceRefresh) { if (this.moduleList != null && !forceRefresh) {
callback.onResponse(this.moduleList); callback.onResponse(this.moduleList);
queueModuleDetails.next("list"); queueModuleDetails.next("list");
@@ -66,7 +70,7 @@ public class KVVModuleList extends HTTPService {
this.moduleList = success; this.moduleList = success;
callback.onResponse(this.moduleList); callback.onResponse(this.moduleList);
queueModuleDetails.next("list"); queueModuleDetails.next("list");
}, errorCallback); }, queueModuleDetails.check("list", errorCallback));
}); });
} }
@@ -77,7 +81,7 @@ public class KVVModuleList extends HTTPService {
errorCallback.onError(new NetworkError(101101, 403, "No module list retrieved!")); errorCallback.onError(new NetworkError(101101, 403, "No module list retrieved!"));
return; return;
} }
Modules modules = new Modules(); Modules modules = new Modules(token.getUsername());
try { try {
JSONObject json = new JSONObject(body); JSONObject json = new JSONObject(body);
JSONArray sites = json.getJSONArray("site_collection"); JSONArray sites = json.getJSONArray("site_collection");
@@ -136,6 +140,7 @@ public class KVVModuleList extends HTTPService {
AtomicReference<NetworkError> lastError = new AtomicReference<>(null); AtomicReference<NetworkError> lastError = new AtomicReference<>(null);
final int items = 4; final int items = 4;
NetworkCallback<Modules.Module> successCb = success -> { NetworkCallback<Modules.Module> successCb = success -> {
log.d("items-d", returns.get());
returns.getAndIncrement(); returns.getAndIncrement();
callback.onResponse(Pair.create(module, false)); callback.onResponse(Pair.create(module, false));
if (returns.get() == items) { if (returns.get() == items) {
@@ -145,6 +150,7 @@ public class KVVModuleList extends HTTPService {
} }
}; };
NetworkErrorCallback errorCb = error -> { NetworkErrorCallback errorCb = error -> {
log.d("items-e", returns.get());
lastError.set(error); lastError.set(error);
returns.getAndIncrement(); returns.getAndIncrement();
if (returns.get() == items) { if (returns.get() == items) {
@@ -182,7 +188,7 @@ public class KVVModuleList extends HTTPService {
module.announcements = success; module.announcements = success;
callback.onResponse(module); callback.onResponse(module);
queueModuleDetails.next(module.getID()); queueModuleDetails.next(module.getID());
}, errorCallback); }, queueModuleDetails.check(module.getID(), errorCallback));
}); });
} }
@@ -233,7 +239,7 @@ public class KVVModuleList extends HTTPService {
module.assignments = success; module.assignments = success;
callback.onResponse(module); callback.onResponse(module);
queueModuleDetails.next(module.getID()); queueModuleDetails.next(module.getID());
}, errorCallback); }, queueModuleDetails.check(module.getID(), errorCallback));
}); });
} }
@@ -297,7 +303,7 @@ public class KVVModuleList extends HTTPService {
module.events = success; module.events = success;
callback.onResponse(module); callback.onResponse(module);
queueModuleDetails.next(module.getID()); queueModuleDetails.next(module.getID());
}, errorCallback); }, queueModuleDetails.check(module.getID(), errorCallback));
}); });
} }
@@ -348,7 +354,7 @@ public class KVVModuleList extends HTTPService {
module.gradebook = success; module.gradebook = success;
callback.onResponse(module); callback.onResponse(module);
queueModuleDetails.next(module.getID()); queueModuleDetails.next(module.getID());
}, errorCallback); }, queueModuleDetails.check(module.getID(), errorCallback));
}); });
} }

View File

@@ -26,10 +26,12 @@ import de.sebse.fuplanner.tools.logging.Logger;
public class Modules implements Iterable<Modules.Module>, Serializable { public class Modules implements Iterable<Modules.Module>, Serializable {
private final SortedModuleList list; private final SortedModuleList list;
private String latestSemester = null; private String latestSemester = null;
private String username = null;
private transient Logger log = new Logger(this); private transient Logger log = new Logger(this);
private static final String FILE_NAME = "ModuleListSaving"; private static final String FILE_NAME = "ModuleListSaving";
public Modules() { public Modules(String username) {
this.username = username;
this.list = new SortedModuleList(); this.list = new SortedModuleList();
} }
@@ -174,6 +176,10 @@ public class Modules implements Iterable<Modules.Module>, Serializable {
context.deleteFile(FILE_NAME); context.deleteFile(FILE_NAME);
} }
public String getUsername() {
return username;
}
public class Module implements Serializable { public class Module implements Serializable {
public final String semester; public final String semester;
public final HashSet<String> lvNumber; public final HashSet<String> lvNumber;

View File

@@ -3,12 +3,14 @@ package de.sebse.fuplanner.tools;
import java.util.HashMap; import java.util.HashMap;
import java.util.LinkedList; import java.util.LinkedList;
import de.sebse.fuplanner.tools.logging.Logger;
import de.sebse.fuplanner.tools.network.NetworkCallback; import de.sebse.fuplanner.tools.network.NetworkCallback;
import de.sebse.fuplanner.tools.network.NetworkErrorCallback; import de.sebse.fuplanner.tools.network.NetworkErrorCallback;
public class AsyncQueue { public class AsyncQueue {
private HashMap<String, LinkedList<AsyncQueueCallback>> mQueues = new HashMap<>(); private HashMap<String, LinkedList<AsyncQueueCallback>> mQueues = new HashMap<>();
private HashMap<String, Boolean> mRunnings = new HashMap<>(); private HashMap<String, Boolean> mRunnings = new HashMap<>();
private Logger log = new Logger(this);
public void add(String hash, AsyncQueueCallback callback) { public void add(String hash, AsyncQueueCallback callback) {
if (isRunning(hash)) if (isRunning(hash))
@@ -20,6 +22,7 @@ public class AsyncQueue {
} }
public void next(String hash) { public void next(String hash) {
log.d("next", hash);
AsyncQueueCallback callback = getQueue(hash).pollFirst(); AsyncQueueCallback callback = getQueue(hash).pollFirst();
if (callback == null) if (callback == null)
setRunning(hash, false); setRunning(hash, false);