Procházet zdrojové kódy

Fix #607

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic před 5 roky
rodič
revize
75e5852646

+ 1 - 0
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'
 

+ 1 - 1
app/src/main/java/com/nextcloud/talk/jobs/NotificationWorker.java

@@ -206,7 +206,7 @@ public class NotificationWorker extends Worker {
                         HashMap<String, HashMap<String, String>> subjectRichParameters = notification
                                 .getSubjectRichParameters();
 
-                        decryptedPushMessage.setTimestamp(notification.getDatetime().getTime());
+                        decryptedPushMessage.setTimestamp(notification.getDatetime().getMillis());
 
                         if (subjectRichParameters != null && subjectRichParameters.size() > 0) {
                             HashMap<String, String> callHashMap = subjectRichParameters.get("call");

+ 3 - 3
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

+ 57 - 0
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<DateTime> {
+
+    @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);
+        }
+    }
+}

+ 7 - 3
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")