From 75e585264645a83ad9cec0503086711185b788ab Mon Sep 17 00:00:00 2001 From: Mario Danic Date: Fri, 30 Aug 2019 23:21:45 +0200 Subject: [PATCH] Fix #607 Signed-off-by: Mario Danic --- app/build.gradle | 1 + .../talk/jobs/NotificationWorker.java | 2 +- .../json/conversations/Conversation.java | 6 +- .../LoganSquareJodaTimeConverter.java | 57 +++++++++++++++++++ .../json/notifications/Notification.java | 10 +++- 5 files changed, 69 insertions(+), 7 deletions(-) create mode 100644 app/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java diff --git a/app/build.gradle b/app/build.gradle index dba22b9c6..b481a4d53 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -221,6 +221,7 @@ dependencies { implementation 'com.github.mario.fresco:webpsupport:111' implementation 'com.github.mario.fresco:animated-gif:111' implementation 'com.github.mario.fresco:imagepipeline-okhttp3:111' + implementation group: 'joda-time', name: 'joda-time', version: '2.10.3' implementation 'com.github.natario1:Autocomplete:v1.1.0' diff --git a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java index 84f819129..242503bce 100644 --- a/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java +++ b/app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java @@ -206,7 +206,7 @@ public class NotificationWorker extends Worker { HashMap> subjectRichParameters = notification .getSubjectRichParameters(); - decryptedPushMessage.setTimestamp(notification.getDatetime().getTime()); + decryptedPushMessage.setTimestamp(notification.getDatetime().getMillis()); if (subjectRichParameters != null && subjectRichParameters.size() > 0) { HashMap callHashMap = subjectRichParameters.get("call"); diff --git a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java index d05bf2c7b..fa752ca84 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/conversations/Conversation.java @@ -22,8 +22,6 @@ package com.nextcloud.talk.models.json.conversations; import android.content.res.Resources; -import androidx.annotation.Nullable; - import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; import com.nextcloud.talk.R; @@ -36,11 +34,13 @@ import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter; import com.nextcloud.talk.models.json.converters.EnumReadOnlyConversationConverter; import com.nextcloud.talk.models.json.converters.EnumRoomTypeConverter; import com.nextcloud.talk.models.json.participants.Participant; -import lombok.Data; + import org.parceler.Parcel; import java.util.HashMap; +import lombok.Data; + @Parcel @Data @JsonObject diff --git a/app/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java b/app/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java new file mode 100644 index 000000000..65f5d792a --- /dev/null +++ b/app/src/main/java/com/nextcloud/talk/models/json/converters/LoganSquareJodaTimeConverter.java @@ -0,0 +1,57 @@ +/* + * Copyright (c) 2016 Touch Instinct + * + * This file was part of RoboSwag library. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ + +package com.nextcloud.talk.models.json.converters; + + +import android.util.Log; + +import com.bluelinelabs.logansquare.typeconverters.TypeConverter; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; + +import org.joda.time.DateTime; + +import java.io.IOException; + +public class LoganSquareJodaTimeConverter implements TypeConverter { + + @Override + public DateTime parse(JsonParser jsonParser) throws IOException { + final String dateString = jsonParser.getValueAsString(); + if (dateString == null) { + return null; + } + try { + return DateTime.parse(dateString); + } catch (final RuntimeException exception) { + Log.e("NC", exception.getLocalizedMessage()); + } + return null; + } + + @Override + public void serialize(DateTime object, String fieldName, boolean writeFieldNameForObject, JsonGenerator jsonGenerator) throws IOException { + if (fieldName != null) { + jsonGenerator.writeStringField(fieldName, object != null ? object.toString() : null); + } else { + jsonGenerator.writeString(object != null ? object.toString() : null); + } + } +} \ No newline at end of file diff --git a/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java b/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java index 5adcacdad..e14c5bfd5 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/notifications/Notification.java @@ -22,13 +22,17 @@ package com.nextcloud.talk.models.json.notifications; import com.bluelinelabs.logansquare.annotation.JsonField; import com.bluelinelabs.logansquare.annotation.JsonObject; -import lombok.Data; +import com.nextcloud.talk.models.json.converters.LoganSquareJodaTimeConverter; + +import org.joda.time.DateTime; import org.parceler.Parcel; import java.util.Date; import java.util.HashMap; import java.util.List; +import lombok.Data; + @Data @Parcel @JsonObject @@ -41,8 +45,8 @@ public class Notification { String app; @JsonField(name = "user") String user; - @JsonField(name = "datetime") - Date datetime; + @JsonField(name = "datetime", typeConverter = LoganSquareJodaTimeConverter.class) + DateTime datetime; @JsonField(name = "object_type") String objectType; @JsonField(name = "object_id")