From 2fe3154f1798dab355e5c595fefa6c4a114373ae Mon Sep 17 00:00:00 2001 From: Tommaso Barbugli Date: Wed, 24 Jul 2019 16:33:32 +0200 Subject: [PATCH] make sure we handle extra data correctly with image and name fields --- .../com/getstream/sdk/chat/model/User.java | 19 ++++++++++++++----- .../sdk/chat/rest/core/StreamChat.java | 18 ++++++------------ 2 files changed, 20 insertions(+), 17 deletions(-) diff --git a/library/src/main/java/com/getstream/sdk/chat/model/User.java b/library/src/main/java/com/getstream/sdk/chat/model/User.java index 354cb8f194f..a7f09e96330 100644 --- a/library/src/main/java/com/getstream/sdk/chat/model/User.java +++ b/library/src/main/java/com/getstream/sdk/chat/model/User.java @@ -5,7 +5,8 @@ import com.google.gson.annotations.Expose; import com.google.gson.annotations.SerializedName; -import java.util.Map; +import java.util.HashMap; + /** * A user */ @@ -43,7 +44,7 @@ public class User { @Expose private Boolean online; - private Map extraData; + private HashMap extraData; public String getCreated_at() { return created_at; @@ -115,15 +116,23 @@ public void setName(String name) { * @param id User id * @param name User name * @param extraData Custom user fields + * if present keys called id or name will be not be stored + * if an image field is present, its string representation will be treated as an image URL * */ - public User(String id, String name, Map extraData) { + public User(String id, String name, HashMap extraData) { this.id = id; this.name = name; this.online = false; - this.extraData = extraData; + this.extraData = new HashMap<>(extraData); + Object image = this.extraData.remove("image"); + if (image != null) { + this.image = image.toString(); + } + this.extraData.remove("id"); + this.extraData.remove("name"); } - public Map getExtraData() { + public HashMap getExtraData() { return extraData; } diff --git a/library/src/main/java/com/getstream/sdk/chat/rest/core/StreamChat.java b/library/src/main/java/com/getstream/sdk/chat/rest/core/StreamChat.java index cc0831690fa..c1d3e835cb4 100644 --- a/library/src/main/java/com/getstream/sdk/chat/rest/core/StreamChat.java +++ b/library/src/main/java/com/getstream/sdk/chat/rest/core/StreamChat.java @@ -115,18 +115,12 @@ public Channel getChannel() { // end region private void setUpWebSocket() { Map jsonParameter = new HashMap<>(); - Map map = new HashMap<>(); - if (this.getUser().getExtraData() == null) { - map.put("id", this.user.getId()); - map.put("name", this.user.getName()); - map.put("image", this.user.getImage()); - jsonParameter.put("user_details", map); - } else { - this.user.getExtraData().put("id", this.user.getId()); - this.user.getExtraData().put("name", this.user.getName()); - this.user.getExtraData().put("image", this.user.getImage()); - jsonParameter.put("user_details", this.user.getExtraData()); - } + + this.getUser().getExtraData().put("id", this.getUser().getId()); + this.getUser().getExtraData().put("name", this.getUser().getName()); + this.getUser().getExtraData().put("image", this.getUser().getImage()); + jsonParameter.put("user_details", this.user.getExtraData()); + jsonParameter.put("user_id", this.user.getId()); jsonParameter.put("user_token", this.userToken); jsonParameter.put("server_determines_connection_id", true);