Refesh on error fixed

This commit is contained in:
Caesar2011
2018-07-05 12:19:50 +02:00
parent 6b66b33dc5
commit ddefb38402
7 changed files with 33 additions and 13 deletions

2
.idea/misc.xml generated
View File

@@ -25,5 +25,5 @@
</value>
</option>
</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>

2
.idea/modules.xml generated
View File

@@ -2,7 +2,7 @@
<project version="4">
<component name="ProjectModuleManager">
<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" />
</modules>
</component>

1
.idea/vcs.xml generated
View File

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

View File

@@ -94,8 +94,14 @@ public class ModDetailOverviewFragment extends Fragment {
adapter.setModule();
if (pair.second)
swipeLayout.setRefreshing(false);
}, error -> log.e(error));
}, error -> log.e(error), forceRefresh);
}, error -> {
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);
this.token = token;
try {
this.moduleList = Modules.load(context);
Modules modules = Modules.load(context);
if (modules.getUsername().equals(token.getUsername()))
this.moduleList = modules;
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
@@ -56,7 +58,9 @@ public class KVVModuleList extends HTTPService {
public void getModuleList(final NetworkCallback<Modules> callback, final NetworkErrorCallback errorCallback, boolean forceRefresh) {
log.d("getModuleList");
queueModuleDetails.add("list", () -> {
log.d("getModuleList start", forceRefresh);
if (this.moduleList != null && !forceRefresh) {
callback.onResponse(this.moduleList);
queueModuleDetails.next("list");
@@ -66,7 +70,7 @@ public class KVVModuleList extends HTTPService {
this.moduleList = success;
callback.onResponse(this.moduleList);
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!"));
return;
}
Modules modules = new Modules();
Modules modules = new Modules(token.getUsername());
try {
JSONObject json = new JSONObject(body);
JSONArray sites = json.getJSONArray("site_collection");
@@ -136,6 +140,7 @@ public class KVVModuleList extends HTTPService {
AtomicReference<NetworkError> lastError = new AtomicReference<>(null);
final int items = 4;
NetworkCallback<Modules.Module> successCb = success -> {
log.d("items-d", returns.get());
returns.getAndIncrement();
callback.onResponse(Pair.create(module, false));
if (returns.get() == items) {
@@ -145,6 +150,7 @@ public class KVVModuleList extends HTTPService {
}
};
NetworkErrorCallback errorCb = error -> {
log.d("items-e", returns.get());
lastError.set(error);
returns.getAndIncrement();
if (returns.get() == items) {
@@ -182,7 +188,7 @@ public class KVVModuleList extends HTTPService {
module.announcements = success;
callback.onResponse(module);
queueModuleDetails.next(module.getID());
}, errorCallback);
}, queueModuleDetails.check(module.getID(), errorCallback));
});
}
@@ -233,7 +239,7 @@ public class KVVModuleList extends HTTPService {
module.assignments = success;
callback.onResponse(module);
queueModuleDetails.next(module.getID());
}, errorCallback);
}, queueModuleDetails.check(module.getID(), errorCallback));
});
}
@@ -297,7 +303,7 @@ public class KVVModuleList extends HTTPService {
module.events = success;
callback.onResponse(module);
queueModuleDetails.next(module.getID());
}, errorCallback);
}, queueModuleDetails.check(module.getID(), errorCallback));
});
}
@@ -348,7 +354,7 @@ public class KVVModuleList extends HTTPService {
module.gradebook = success;
callback.onResponse(module);
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 {
private final SortedModuleList list;
private String latestSemester = null;
private String username = null;
private transient Logger log = new Logger(this);
private static final String FILE_NAME = "ModuleListSaving";
public Modules() {
public Modules(String username) {
this.username = username;
this.list = new SortedModuleList();
}
@@ -174,6 +176,10 @@ public class Modules implements Iterable<Modules.Module>, Serializable {
context.deleteFile(FILE_NAME);
}
public String getUsername() {
return username;
}
public class Module implements Serializable {
public final String semester;
public final HashSet<String> lvNumber;

View File

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