From 73becd432dc5bcadfff8a4a3e4c79fe27a6f4805 Mon Sep 17 00:00:00 2001 From: Marcel Hibbe Date: Wed, 26 May 2021 14:47:54 +0200 Subject: [PATCH] add logic for geolocation message Signed-off-by: Marcel Hibbe --- .../MagicPreviewMessageViewHolder.java | 3 ++- .../talk/models/json/chat/ChatMessage.java | 19 +++++++++++++++++++ .../talk/models/json/chat/ChatUtils.kt | 2 ++ 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java index 6f899c11a..7043a5cc2 100644 --- a/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java +++ b/app/src/main/java/com/nextcloud/talk/adapters/messages/MagicPreviewMessageViewHolder.java @@ -177,7 +177,8 @@ public class MagicPreviewMessageViewHolder extends MessageHolders.IncomingImageM } catch (ExecutionException | InterruptedException e) { Log.e(TAG, "Error when checking if worker already exists", e); } - + } else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_NC_GEOLOCATION_MESSAGE) { + Log.d(TAG, "handle geolocation here"); } else if (message.getMessageType() == ChatMessage.MessageType.SINGLE_LINK_GIPHY_MESSAGE) { messageText.setText("GIPHY"); DisplayUtils.setClickableString("GIPHY", "https://giphy.com", messageText); diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java index aa704cb35..676ace0ac 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java +++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatMessage.java @@ -103,6 +103,19 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent return false; } + private boolean hasGeoLocation() { + if (messageParameters != null && messageParameters.size() > 0) { + for (String key : messageParameters.keySet()) { + Map individualHashMap = messageParameters.get(key); + if (individualHashMap.get("type").equals("geo-location")) { + return true; + } + } + } + + return false; + } + @Nullable @Override public String getImageUrl() { @@ -133,6 +146,11 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent return MessageType.SINGLE_NC_ATTACHMENT_MESSAGE; } + if (hasGeoLocation()) { + return MessageType.SINGLE_NC_GEOLOCATION_MESSAGE; + } + + return TextMatchers.getMessageTypeFromString(getText()); } @@ -548,6 +566,7 @@ public class ChatMessage implements IMessage, MessageContentType, MessageContent SINGLE_LINK_IMAGE_MESSAGE, SINGLE_LINK_AUDIO_MESSAGE, SINGLE_NC_ATTACHMENT_MESSAGE, + SINGLE_NC_GEOLOCATION_MESSAGE, } public enum SystemMessageType { diff --git a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt index 9e060409f..0117b2842 100644 --- a/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt +++ b/app/src/main/java/com/nextcloud/talk/models/json/chat/ChatUtils.kt @@ -33,6 +33,8 @@ class ChatUtils { val type = individualHashMap?.get("type") if (type == "user" || type == "guest" || type == "call") { resultMessage = resultMessage?.replace("{$key}", "@" + individualHashMap["name"]) + } else if(type == "geo-location"){ + resultMessage = individualHashMap.get("name") } else if (individualHashMap?.containsKey("link") == true) { resultMessage = if (type == "file") { resultMessage?.replace("{$key}", individualHashMap["name"].toString())