Explorar o código

Implement shared file system emssage

Signed-off-by: Mario Danic <mario@lovelyhq.com>
Mario Danic %!s(int64=6) %!d(string=hai) anos
pai
achega
bf123dfc15

+ 16 - 6
app/src/main/java/com/nextcloud/talk/adapters/messages/MagicSystemMessageViewHolder.java

@@ -20,8 +20,11 @@
 
 package com.nextcloud.talk.adapters.messages;
 
+import android.content.Context;
+import android.content.Intent;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import android.net.Uri;
 import android.support.v4.view.ViewCompat;
 import android.text.Spannable;
 import android.text.SpannableString;
@@ -54,25 +57,32 @@ public class MagicSystemMessageViewHolder extends MessageHolders.IncomingTextMes
 
         Spannable messageString = new SpannableString(message.getText());
 
+        Context context = NextcloudTalkApplication.getSharedApplication().getApplicationContext();
         if (message.getMessageParameters() != null && message.getMessageParameters().size() > 0) {
             for (String key : message.getMessageParameters().keySet()) {
                 Map<String, String> individualHashMap = message.getMessageParameters().get(key);
+                int color;
                 if (individualHashMap.get("type").equals("user") || individualHashMap.get("type").equals("guest")) {
-                    int color;
 
                     if (individualHashMap.get("id").equals(message.getActiveUserId())) {
-                        color = NextcloudTalkApplication.getSharedApplication().getResources().getColor(R.color
-                                .nc_incoming_text_mention_you);
+                        color = context.getResources().getColor(R.color.nc_incoming_text_mention_you);
                     } else {
-                        color = NextcloudTalkApplication.getSharedApplication().getResources().getColor(R.color
-                                .nc_incoming_text_mention_others);
+                        color = context.getResources().getColor(R.color.nc_incoming_text_mention_others);
                     }
 
                     messageString = DisplayUtils.searchAndColor(message.getText(),
                             messageString, "@" + individualHashMap.get("name"), color);
+                } else if (individualHashMap.get("type").equals("file")) {
+                    color = context.getResources().getColor(R.color
+                            .colorPrimary);
+                    messageString = DisplayUtils.searchAndColor(message.getText(), messageString, individualHashMap
+                            .get("name"), color);
+                    itemView.setOnClickListener(v -> {
+                        Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(individualHashMap.get("link")));
+                        context.startActivity(browserIntent);
+                    });
                 }
             }
-
         }
 
         text.setText(messageString);

+ 1 - 1
app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java

@@ -57,7 +57,7 @@ public class ChatMessage implements IMessage, MessageContentType {
         USER_REMOVED,
         MODERATOR_PROMOTED,
         MODERATOR_DEMOTED,
-
+        FILE_SHARED,
     }
 
     String baseUrl;

+ 2 - 0
app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.java

@@ -31,6 +31,8 @@ public class ChatUtils {
                 if (individualHashMap.get("type").equals("user") || individualHashMap.get("type").equals("guest")) {
                     message = message.replaceAll("\\{" + key + "\\}", "@" +
                             messageParameters.get(key).get("name"));
+                } else if (individualHashMap.get("type").equals("file")) {
+                    message = message.replaceAll("\\{" + key + "\\}", messageParameters.get(key).get("name"));
                 }
             }
         }

+ 4 - 0
app/src/main/java/com/nextcloud/talk/models/json/converters/EnumSystemMessageTypeConverter.java

@@ -74,6 +74,8 @@ public class EnumSystemMessageTypeConverter extends StringBasedTypeConverter<Cha
                 return MODERATOR_PROMOTED;
             case "moderator_demoted":
                 return MODERATOR_DEMOTED;
+            case "file_shared":
+                return FILE_SHARED;
             default:
                 return DUMMY;
         }
@@ -115,6 +117,8 @@ public class EnumSystemMessageTypeConverter extends StringBasedTypeConverter<Cha
                 return "moderator_promoted";
             case MODERATOR_DEMOTED:
                 return "moderator_demoted";
+            case FILE_SHARED:
+                return "file_shared";
             default:
                 return "";
         }