diff --git a/CHANGELOG.md b/CHANGELOG.md index 81fa28cd..cf597a5c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## NEXT +## 3.9.0+1 +- 修复message.attribute不准; + ## 3.9.0 - 增加单人推送免打扰接口; diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java index 809f1d45..07136eff 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMChatManagerWrapper.java @@ -593,7 +593,7 @@ public void onConversationRead(String from, String to) { } private EMConversation.EMSearchDirection searchDirectionFromString(String direction) { - return direction == "up" ? EMConversation.EMSearchDirection.UP : EMConversation.EMSearchDirection.DOWN; + return direction.equals("up") ? EMConversation.EMSearchDirection.UP : EMConversation.EMSearchDirection.DOWN; } private EMConversation.EMConversationType typeFromInt(int intType) { diff --git a/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java b/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java index 2a7e78a8..87ab81a7 100644 --- a/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java +++ b/android/src/main/java/com/easemob/im_flutter_sdk/EMHelper.java @@ -323,89 +323,95 @@ static EMMessage fromJson(JSONObject json) throws JSONException { String type = bodyJson.getString("type"); if (json.getString("direction").equals("send")) { switch (type) { - case "txt": { - message = EMMessage.createSendMessage(Type.TXT); - message.addBody(EMMessageBodyHelper.textBodyFromJson(bodyJson)); - } - break; - case "img": { - message = EMMessage.createSendMessage(Type.IMAGE); - message.addBody(EMMessageBodyHelper.imageBodyFromJson(bodyJson)); - } - break; - case "loc": { - message = EMMessage.createSendMessage(Type.LOCATION); - message.addBody(EMMessageBodyHelper.localBodyFromJson(bodyJson)); - } - break; - case "video": { - message = EMMessage.createSendMessage(Type.VIDEO); - message.addBody(EMMessageBodyHelper.videoBodyFromJson(bodyJson)); - } - break; - case "voice": { - message = EMMessage.createSendMessage(Type.VOICE); - message.addBody(EMMessageBodyHelper.voiceBodyFromJson(bodyJson)); - } - break; - case "file": { - message = EMMessage.createSendMessage(Type.FILE); - message.addBody(EMMessageBodyHelper.fileBodyFromJson(bodyJson)); - } - break; - case "cmd": { - message = EMMessage.createSendMessage(Type.CMD); - message.addBody(EMMessageBodyHelper.cmdBodyFromJson(bodyJson)); - } - break; - case "custom": { - message = EMMessage.createSendMessage(Type.CUSTOM); - message.addBody(EMMessageBodyHelper.customBodyFromJson(bodyJson)); + case "txt": { + message = EMMessage.createSendMessage(Type.TXT); + message.addBody(EMMessageBodyHelper.textBodyFromJson(bodyJson)); + } + break; + case "img": { + message = EMMessage.createSendMessage(Type.IMAGE); + message.addBody(EMMessageBodyHelper.imageBodyFromJson(bodyJson)); + } + break; + case "loc": { + message = EMMessage.createSendMessage(Type.LOCATION); + message.addBody(EMMessageBodyHelper.localBodyFromJson(bodyJson)); + } + break; + case "video": { + message = EMMessage.createSendMessage(Type.VIDEO); + message.addBody(EMMessageBodyHelper.videoBodyFromJson(bodyJson)); + } + break; + case "voice": { + message = EMMessage.createSendMessage(Type.VOICE); + message.addBody(EMMessageBodyHelper.voiceBodyFromJson(bodyJson)); + } + break; + case "file": { + message = EMMessage.createSendMessage(Type.FILE); + message.addBody(EMMessageBodyHelper.fileBodyFromJson(bodyJson)); + } + break; + case "cmd": { + message = EMMessage.createSendMessage(Type.CMD); + message.addBody(EMMessageBodyHelper.cmdBodyFromJson(bodyJson)); + } + break; + case "custom": { + message = EMMessage.createSendMessage(Type.CUSTOM); + message.addBody(EMMessageBodyHelper.customBodyFromJson(bodyJson)); + } + break; } - break; + if (message != null) { + message.setDirection(EMMessage.Direct.SEND); } } else { switch (type) { - case "txt": { - message = EMMessage.createReceiveMessage(Type.TXT); - message.addBody(EMMessageBodyHelper.textBodyFromJson(bodyJson)); - } - break; - case "img": { - message = EMMessage.createReceiveMessage(Type.IMAGE); - message.addBody(EMMessageBodyHelper.imageBodyFromJson(bodyJson)); - } - break; - case "loc": { - message = EMMessage.createReceiveMessage(Type.LOCATION); - message.addBody(EMMessageBodyHelper.localBodyFromJson(bodyJson)); - } - break; - case "video": { - message = EMMessage.createReceiveMessage(Type.VIDEO); - message.addBody(EMMessageBodyHelper.videoBodyFromJson(bodyJson)); - } - break; - case "voice": { - message = EMMessage.createReceiveMessage(Type.VOICE); - message.addBody(EMMessageBodyHelper.voiceBodyFromJson(bodyJson)); - } - break; - case "file": { - message = EMMessage.createReceiveMessage(Type.FILE); - message.addBody(EMMessageBodyHelper.fileBodyFromJson(bodyJson)); - } - break; - case "cmd": { - message = EMMessage.createReceiveMessage(Type.CMD); - message.addBody(EMMessageBodyHelper.cmdBodyFromJson(bodyJson)); - } + case "txt": { + message = EMMessage.createReceiveMessage(Type.TXT); + message.addBody(EMMessageBodyHelper.textBodyFromJson(bodyJson)); + } + break; + case "img": { + message = EMMessage.createReceiveMessage(Type.IMAGE); + message.addBody(EMMessageBodyHelper.imageBodyFromJson(bodyJson)); + } + break; + case "loc": { + message = EMMessage.createReceiveMessage(Type.LOCATION); + message.addBody(EMMessageBodyHelper.localBodyFromJson(bodyJson)); + } + break; + case "video": { + message = EMMessage.createReceiveMessage(Type.VIDEO); + message.addBody(EMMessageBodyHelper.videoBodyFromJson(bodyJson)); + } + break; + case "voice": { + message = EMMessage.createReceiveMessage(Type.VOICE); + message.addBody(EMMessageBodyHelper.voiceBodyFromJson(bodyJson)); + } + break; + case "file": { + message = EMMessage.createReceiveMessage(Type.FILE); + message.addBody(EMMessageBodyHelper.fileBodyFromJson(bodyJson)); + } + break; + case "cmd": { + message = EMMessage.createReceiveMessage(Type.CMD); + message.addBody(EMMessageBodyHelper.cmdBodyFromJson(bodyJson)); + } + break; + case "custom": { + message = EMMessage.createReceiveMessage(Type.CUSTOM); + message.addBody(EMMessageBodyHelper.customBodyFromJson(bodyJson)); + } break; - case "custom": { - message = EMMessage.createReceiveMessage(Type.CUSTOM); - message.addBody(EMMessageBodyHelper.customBodyFromJson(bodyJson)); } - break; + if (message != null) { + message.setDirection(EMMessage.Direct.RECEIVE); } } diff --git a/lib/src/tools/em_extension.dart b/lib/src/tools/em_extension.dart index ce462c7e..deb47696 100644 --- a/lib/src/tools/em_extension.dart +++ b/lib/src/tools/em_extension.dart @@ -1,4 +1,5 @@ import '../models/em_group_shared_file.dart'; +import 'dart:convert' as convert; Type typeOf() => T; @@ -119,13 +120,28 @@ extension MapExtension on Map { } Map? getMapValue(String key, {Map? defaultValue}) { - Map? ret = defaultValue; + Map? ret = {}; if (this.containsKey(key)) { - Map? value = this[key]; - if (value is double) { - ret = value; + Map tmpMap = this[key]; + for (var tmpKey in tmpMap.keys) { + dynamic value = tmpMap[tmpKey]; + if (value is String) { + do { + try { + dynamic data = convert.jsonDecode(value); + value = data; + break; + } on FormatException {} + } while (false); + ret[tmpKey] = value; + } else { + ret[tmpKey] = value; + } } } + if (ret.length == 0) { + ret = defaultValue; + } return ret; } } diff --git a/pubspec.yaml b/pubspec.yaml index 2ccc9157..81301d93 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -1,6 +1,6 @@ name: im_flutter_sdk description: Easemob IM flutter SDK. -version: 3.9.0 +version: 3.9.0+1 homepage: http://www.easemob.com/product/im environment: