Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2020-06-09 18:48:55 +0300
committerStefan Niedermann <info@niedermann.it>2020-06-09 18:48:55 +0300
commit9a7f10e960cdfb438fd26dfc4f855c29cd2e7482 (patch)
treebcad48b43b888fede40180ef86fe4e526195ab91 /app/src/main/java/it/niedermann/nextcloud/deck/api
parentd3c7917b27bb21c908d17a36892ea3784060c050 (diff)
parent3ea839d6d1e91c94b82d3ea87b45e94b72da4686 (diff)
Merge branch 'master' into 454-replay-to-comments
# Conflicts: # app/src/main/java/it/niedermann/nextcloud/deck/ui/card/comments/CardCommentsFragment.java # app/src/main/res/values/strings.xml
Diffstat (limited to 'app/src/main/java/it/niedermann/nextcloud/deck/api')
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java66
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java8
2 files changed, 41 insertions, 33 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
index 1b6d517a6..2556deb02 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/JsonToEntityParser.java
@@ -4,14 +4,16 @@ import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
+import org.threeten.bp.DateTimeUtils;
+import org.threeten.bp.ZonedDateTime;
+import org.threeten.bp.format.DateTimeFormatter;
+
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-import java.util.TimeZone;
import it.niedermann.nextcloud.deck.DeckLog;
+import it.niedermann.nextcloud.deck.exceptions.DeckException;
import it.niedermann.nextcloud.deck.model.AccessControl;
import it.niedermann.nextcloud.deck.model.Attachment;
import it.niedermann.nextcloud.deck.model.Board;
@@ -30,12 +32,9 @@ import it.niedermann.nextcloud.deck.model.ocs.comment.DeckComment;
import it.niedermann.nextcloud.deck.model.ocs.comment.Mention;
import it.niedermann.nextcloud.deck.model.ocs.comment.OcsComment;
-public class JsonToEntityParser {
- private static SimpleDateFormat formatter = new SimpleDateFormat(GsonConfig.DATE_PATTERN);
+import static it.niedermann.nextcloud.deck.exceptions.DeckException.Hint.CAPABILITIES_VERSION_NOT_PARSABLE;
- static {
- formatter.setTimeZone(TimeZone.getTimeZone("UTC"));
- }
+public class JsonToEntityParser {
protected static <T> T parseJsonObject(JsonObject obj, Class<T> mType) {
if (mType == FullBoard.class) {
@@ -46,9 +45,9 @@ public class JsonToEntityParser {
return (T) parseStack(obj);
} else if (mType == Label.class) {
return (T) parseLabel(obj);
- } else if (mType == Activity.class) {
+ } else if (mType == Activity.class) {
return (T) parseActivity(obj);
- } else if (mType == Capabilities.class) {
+ } else if (mType == Capabilities.class) {
return (T) parseCapabilities(obj);
} else if (mType == Attachment.class) {
return (T) parseAttachment(obj);
@@ -147,7 +146,7 @@ public class JsonToEntityParser {
if (e.has("acl") && !e.get("acl").isJsonNull()) {
JsonElement assignedUsers = e.get("acl");
- if (assignedUsers.isJsonArray() && assignedUsers.getAsJsonArray().size() > 0){
+ if (assignedUsers.isJsonArray() && assignedUsers.getAsJsonArray().size() > 0) {
JsonArray assignedUsersArray = assignedUsers.getAsJsonArray();
List<AccessControl> acl = new ArrayList<>();
@@ -162,19 +161,19 @@ public class JsonToEntityParser {
if (e.has("permissions")) {
JsonElement permissions = e.get("permissions");
JsonObject permissionsObject = permissions.getAsJsonObject();
- if (permissionsObject.has("PERMISSION_READ")){
+ if (permissionsObject.has("PERMISSION_READ")) {
JsonElement read = permissionsObject.get("PERMISSION_READ");
fullBoard.getBoard().setPermissionRead(read.getAsBoolean());
}
- if (permissionsObject.has("PERMISSION_EDIT")){
+ if (permissionsObject.has("PERMISSION_EDIT")) {
JsonElement read = permissionsObject.get("PERMISSION_EDIT");
fullBoard.getBoard().setPermissionEdit(read.getAsBoolean());
}
- if (permissionsObject.has("PERMISSION_MANAGE")){
+ if (permissionsObject.has("PERMISSION_MANAGE")) {
JsonElement read = permissionsObject.get("PERMISSION_MANAGE");
fullBoard.getBoard().setPermissionManage(read.getAsBoolean());
}
- if (permissionsObject.has("PERMISSION_SHARE")){
+ if (permissionsObject.has("PERMISSION_SHARE")) {
JsonElement read = permissionsObject.get("PERMISSION_SHARE");
fullBoard.getBoard().setPermissionShare(read.getAsBoolean());
}
@@ -190,7 +189,7 @@ public class JsonToEntityParser {
return fullBoard;
}
- protected static AccessControl parseAcl(JsonObject aclJson){
+ protected static AccessControl parseAcl(JsonObject aclJson) {
DeckLog.verbose(aclJson.toString());
AccessControl acl = new AccessControl();
@@ -319,12 +318,12 @@ public class JsonToEntityParser {
DeckLog.verbose(e.toString());
Capabilities capabilities = new Capabilities();
- if (e.has("ocs")){
+ if (e.has("ocs")) {
JsonObject ocs = e.getAsJsonObject("ocs");
if (ocs.has("meta")) {
int statuscode = ocs.getAsJsonObject("meta").get("statuscode").getAsInt();
- capabilities.setMaintenanceEnabled(statuscode==503);
- if (capabilities.isMaintenanceEnabled()){
+ capabilities.setMaintenanceEnabled(statuscode == 503);
+ if (capabilities.isMaintenanceEnabled()) {
// Abort, since there is nothing more to read.
return capabilities;
}
@@ -337,7 +336,7 @@ public class JsonToEntityParser {
capabilities.setNextcloudVersion(v);
}
- String version = "";
+ String version = null;
if (data.has("capabilities")) {
JsonObject caps = data.getAsJsonObject("capabilities");
if (caps.has("deck")) {
@@ -345,9 +344,16 @@ public class JsonToEntityParser {
if (deck.has("version")) {
version = deck.get("version").getAsString();
if (version == null || version.trim().length() < 1) {
- throw new IllegalArgumentException("capabilities endpoint returned an invalid version string: \""+version+"\"");
+ throw new DeckException(CAPABILITIES_VERSION_NOT_PARSABLE,
+ "capabilities endpoint returned an invalid version string: \"" + version + "\"");
}
+ } else {
+ throw new DeckException(CAPABILITIES_VERSION_NOT_PARSABLE,
+ "deck version node is missing in capabilities endpoint! deck-node: " + deck.getAsString());
}
+ } else {
+ throw new DeckException(CAPABILITIES_VERSION_NOT_PARSABLE,
+ "deck node is missing in capabilities endpoint!");
}
if (caps.has("theming")) {
JsonObject theming = caps.getAsJsonObject("theming");
@@ -355,9 +361,6 @@ public class JsonToEntityParser {
capabilities.setTextColor(theming.get("color-text").getAsString());
}
}
- if (version == null || version.trim().length() < 1) {
- throw new IllegalArgumentException("capabilities endpoint returned no version string at all!");
- }
capabilities.setDeckVersion(Version.of(version));
}
}
@@ -368,7 +371,7 @@ public class JsonToEntityParser {
DeckLog.verbose(e.toString());
List<Activity> activityList = new ArrayList<>();
- if (e.has("ocs")){
+ if (e.has("ocs")) {
JsonObject ocs = e.getAsJsonObject("ocs");
if (ocs.has("data")) {
JsonArray data = ocs.getAsJsonArray("data");
@@ -377,7 +380,7 @@ public class JsonToEntityParser {
JsonObject activityObject = activityJson.getAsJsonObject();
activity.setId(activityObject.get("activity_id").getAsLong());
- activity.setType(ActivityType.findByPath(getNullAsEmptyString(activityObject.get( "icon"))).getId());
+ activity.setType(ActivityType.findByPath(getNullAsEmptyString(activityObject.get("icon"))).getId());
activity.setSubject(getNullAsEmptyString(activityObject.get("subject")));
activity.setCardId(activityObject.get("object_id").getAsLong());
activity.setLastModified(getTimestampFromString(activityObject.get("datetime")));
@@ -398,7 +401,7 @@ public class JsonToEntityParser {
stack.setId(e.get("id").getAsLong());
stack.setLastModified(getTimestampFromLong(e.get("lastModified")));
stack.setDeletedAt(getTimestampFromLong(e.get("deletedAt")));
- if (e.has("order") && !e.get("order").isJsonNull()){
+ if (e.has("order") && !e.get("order").isJsonNull()) {
stack.setOrder(e.get("order").getAsInt());
} else {
stack.setOrder(0);
@@ -435,11 +438,8 @@ public class JsonToEntityParser {
if (jsonElement.isJsonNull()) {
return null;
} else {
- try {
- return formatter.parse(jsonElement.getAsString());
- } catch (ParseException e) {
- return null;
- }
+ String dateAsString = jsonElement.getAsString();
+ return DateTimeUtils.toDate(ZonedDateTime.from(DateTimeFormatter.ISO_DATE_TIME.parse(dateAsString)).toInstant());
}
}
@@ -447,7 +447,7 @@ public class JsonToEntityParser {
if (jsonElement.isJsonNull()) {
return null;
} else {
- return new Date (jsonElement.getAsLong() * 1000);
+ return new Date(jsonElement.getAsLong() * 1000);
}
}
}
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java b/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java
index 86844781b..44ba28802 100644
--- a/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java
+++ b/app/src/main/java/it/niedermann/nextcloud/deck/api/RequestHelper.java
@@ -4,10 +4,18 @@ import com.nextcloud.android.sso.api.NextcloudAPI;
import io.reactivex.Observable;
import io.reactivex.functions.Consumer;
+import io.reactivex.plugins.RxJavaPlugins;
import io.reactivex.schedulers.Schedulers;
+import it.niedermann.nextcloud.deck.DeckLog;
public class RequestHelper {
+ static {
+ RxJavaPlugins.setErrorHandler(e -> {
+ DeckLog.logError(e);
+ });
+ }
+
public static <T> void request(final ApiProvider provider, final ObservableProvider<T> call, final IResponseCallback<T> callback) {
if (provider.getDeckAPI() == null) {