Skip to content

Commit 21709c9

Browse files
authored
Merge pull request #27 from jpush/dev
Dev
2 parents ca387aa + 8d301a9 commit 21709c9

File tree

25 files changed

+1442
-503
lines changed

25 files changed

+1442
-503
lines changed

android/ReactJChat.iml

Lines changed: 0 additions & 6 deletions
This file was deleted.

android/gradle.properties

Lines changed: 0 additions & 17 deletions
This file was deleted.

android/proguard-rules.pro

Lines changed: 0 additions & 17 deletions
This file was deleted.

android/src/io/jchat/android/JMessageModule.java

Lines changed: 244 additions & 10 deletions
Large diffs are not rendered by default.

android/src/io/jchat/android/utils/ResultUtils.java

Lines changed: 81 additions & 61 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,16 @@
22

33

44

5+
import android.text.TextUtils;
6+
57
import com.facebook.react.bridge.Arguments;
68
import com.facebook.react.bridge.ReadableMap;
79
import com.facebook.react.bridge.ReadableMapKeySetIterator;
810
import com.facebook.react.bridge.WritableArray;
911
import com.facebook.react.bridge.WritableMap;
12+
import com.google.gson.jpush.JsonElement;
13+
import com.google.gson.jpush.JsonObject;
14+
import com.google.gson.jpush.JsonParser;
1015

1116
import org.json.JSONException;
1217
import org.json.JSONObject;
@@ -31,9 +36,11 @@
3136
import cn.jpush.im.android.api.model.GroupInfo;
3237
import cn.jpush.im.android.api.model.Message;
3338
import cn.jpush.im.android.api.model.UserInfo;
39+
import io.jchat.android.Constant;
3440

3541
public class ResultUtils {
3642

43+
3744
public static Map<String, String> fromMap(ReadableMap extras) {
3845
Map<String, String> map = new HashMap<String, String>();
3946

@@ -62,121 +69,123 @@ public static WritableMap toJSObject(final UserInfo userInfo) {
6269
return Arguments.createMap();
6370
}
6471
final WritableMap result = Arguments.createMap();
65-
result.putString("type", "user");
72+
result.putString(Constant.TYPE, Constant.TYPE_USER);
6673
if (null != userInfo.getGender()) {
67-
result.putString("gender", userInfo.getGender().toString());
74+
result.putString(Constant.GENDER, userInfo.getGender().toString());
6875
} else {
69-
result.putString("gender", "unknown");
76+
result.putString(Constant.GENDER, "unknown");
7077
}
71-
result.putString("username", userInfo.getUserName());
72-
result.putString("appKey", userInfo.getAppKey());
73-
result.putString("nickname", userInfo.getNickname());
78+
result.putString(Constant.USERNAME, userInfo.getUserName());
79+
result.putString(Constant.APP_KEY, userInfo.getAppKey());
80+
result.putString(Constant.NICKNAME, userInfo.getNickname());
7481

7582
if (userInfo.getAvatarFile() != null) {
76-
result.putString("avatarThumbPath", userInfo.getAvatarFile().getAbsolutePath());
83+
result.putString(Constant.AVATAR_THUMB_PATH, userInfo.getAvatarFile().getAbsolutePath());
7784
} else {
7885
result.putString("avatarThumbPath", "");
7986
}
80-
81-
result.putDouble("birthday", userInfo.getBirthday());
82-
result.putString("region", userInfo.getRegion());
83-
result.putString("signature", userInfo.getSignature());
84-
result.putString("address", userInfo.getAddress());
85-
result.putString("noteName", userInfo.getNotename());
86-
result.putString("noteText", userInfo.getNoteText());
87-
result.putBoolean("isNoDisturb", userInfo.getNoDisturb() == 1);
88-
result.putBoolean("isInBlackList", userInfo.getNoDisturb() == 1);
89-
result.putBoolean("isFriend", userInfo.isFriend());
87+
if (userInfo.getExtras() != null && userInfo.getExtras().size() > 0) {
88+
result.putMap(Constant.EXTRAS, toJSObject(userInfo.getExtras()));
89+
}
90+
result.putDouble(Constant.BIRTHDAY, userInfo.getBirthday());
91+
result.putString(Constant.REGION, userInfo.getRegion());
92+
result.putString(Constant.SIGNATURE, userInfo.getSignature());
93+
result.putString(Constant.ADDRESS, userInfo.getAddress());
94+
result.putString(Constant.NOTE_NAME, userInfo.getNotename());
95+
result.putString(Constant.NOTE_TEXT, userInfo.getNoteText());
96+
result.putBoolean(Constant.IS_NO_DISTURB, userInfo.getNoDisturb() == 1);
97+
result.putBoolean(Constant.IS_IN_BLACKLIST, userInfo.getBlacklist() == 1);
98+
result.putBoolean(Constant.IS_FRIEND, userInfo.isFriend());
9099
return result;
91100
}
92101

93102
public static WritableMap toJSObject(GroupInfo groupInfo) {
94103
WritableMap result = Arguments.createMap();
95104

96-
result.putString("type", "group");
97-
result.putDouble("id", groupInfo.getGroupID());
98-
result.putString("name", groupInfo.getGroupName());
99-
result.putString("desc", groupInfo.getGroupDescription());
100-
result.putInt("level", groupInfo.getGroupLevel());
101-
result.putString("owner", groupInfo.getGroupOwner());
102-
result.putString("ownerAppKey", groupInfo.getOwnerAppkey());
103-
result.putInt("maxMemberCount", groupInfo.getMaxMemberCount());
104-
result.putBoolean("isNoDisturb", groupInfo.getNoDisturb() == 1);
105-
result.putBoolean("isBlocked", groupInfo.isGroupBlocked() == 1);
105+
result.putString(Constant.TYPE, Constant.TYPE_GROUP);
106+
result.putDouble(Constant.ID, groupInfo.getGroupID());
107+
result.putString(Constant.NAME, groupInfo.getGroupName());
108+
result.putString(Constant.DESC, groupInfo.getGroupDescription());
109+
result.putInt(Constant.LEVEL, groupInfo.getGroupLevel());
110+
result.putString(Constant.OWNER, groupInfo.getGroupOwner());
111+
result.putString(Constant.OWNER_APP_KEY, groupInfo.getOwnerAppkey());
112+
result.putInt(Constant.MAX_MEMBER_COUNT, groupInfo.getMaxMemberCount());
113+
result.putBoolean(Constant.IS_NO_DISTURB, groupInfo.getNoDisturb() == 1);
114+
result.putBoolean(Constant.IS_BLOCKED, groupInfo.isGroupBlocked() == 1);
106115
return result;
107116
}
108117

109118
public static WritableMap toJSObject(Message msg) {
110119
WritableMap result = Arguments.createMap();
111120
try {
112-
result.putString("id", String.valueOf(msg.getId()));
113-
result.putMap("from", toJSObject(msg.getFromUser()));
121+
result.putString(Constant.ID, String.valueOf(msg.getId()));
122+
result.putMap(Constant.FROM, toJSObject(msg.getFromUser()));
114123

115124
if (msg.getDirect() == MessageDirect.send) {
116125
if (msg.getTargetType() == ConversationType.single) {
117-
result.putMap("target", toJSObject((UserInfo) msg.getTargetInfo()));
126+
result.putMap(Constant.TARGET, toJSObject((UserInfo) msg.getTargetInfo()));
118127
} else if (msg.getTargetType() == ConversationType.group) {
119-
result.putMap("target", toJSObject((GroupInfo) msg.getTargetInfo()));
128+
result.putMap(Constant.TARGET, toJSObject((GroupInfo) msg.getTargetInfo()));
120129
}
121130

122131
} else {
123132
UserInfo myInfo = JMessageClient.getMyInfo();
124-
result.putMap("target", toJSObject(myInfo));
133+
result.putMap(Constant.TARGET, toJSObject(myInfo));
125134
}
126135

127136
MessageContent content = msg.getContent();
128137
if (content.getStringExtras() != null) {
129-
result.putMap("extras", toJSObject(content.getStringExtras()));
138+
result.putMap(Constant.EXTRAS, toJSObject(content.getStringExtras()));
130139
}
131140

132-
result.putDouble("createTime", msg.getCreateTime());
141+
result.putDouble(Constant.CREATE_TIME, msg.getCreateTime());
133142

134143
switch (msg.getContentType()) {
135144
case text:
136-
result.putString("type", "text");
137-
result.putString("text", ((TextContent) content).getText());
145+
result.putString(Constant.TYPE, Constant.TEXT);
146+
result.putString(Constant.TEXT, ((TextContent) content).getText());
138147
break;
139148
case image:
140-
result.putString("type", "image");
141-
result.putString("thumbPath", ((ImageContent) content).getLocalThumbnailPath());
149+
result.putString(Constant.TYPE, Constant.IMAGE);
150+
result.putString(Constant.THUMB_PATH, ((ImageContent) content).getLocalThumbnailPath());
142151
break;
143152
case voice:
144-
result.putString("type", "voice");
145-
result.putString("path", ((VoiceContent) content).getLocalPath());
146-
result.putInt("duration", ((VoiceContent) content).getDuration());
153+
result.putString(Constant.TYPE, Constant.VOICE);
154+
result.putString(Constant.PATH, ((VoiceContent) content).getLocalPath());
155+
result.putInt(Constant.DURATION, ((VoiceContent) content).getDuration());
147156
break;
148157
case file:
149-
result.putString("type", "file");
150-
result.putString("fileName", ((FileContent) content).getFileName());
158+
result.putString(Constant.TYPE, Constant.FILE);
159+
result.putString(Constant.FILE_NAME, ((FileContent) content).getFileName());
151160
break;
152161
case custom:
153-
result.putString("type", "custom");
162+
result.putString(Constant.TYPE, Constant.CUSTOM);
154163
Map<String, String> customObject = ((CustomContent) content).getAllStringValues();
155-
result.putMap("customObject", toJSObject(customObject));
164+
result.putMap(Constant.CUSTOM_OBJECT, toJSObject(customObject));
156165
break;
157166
case location:
158-
result.putString("type", "location");
159-
result.putDouble("latitude", ((LocationContent) content).getLatitude().doubleValue());
160-
result.putDouble("longitude", ((LocationContent) content).getLongitude().doubleValue());
161-
result.putString("address", ((LocationContent) content).getAddress());
162-
result.putDouble("scale", ((LocationContent) content).getScale().doubleValue());
167+
result.putString(Constant.TYPE, Constant.LOCATION);
168+
result.putDouble(Constant.LATITUDE, ((LocationContent) content).getLatitude().doubleValue());
169+
result.putDouble(Constant.LONGITUDE, ((LocationContent) content).getLongitude().doubleValue());
170+
result.putString(Constant.ADDRESS, ((LocationContent) content).getAddress());
171+
result.putDouble(Constant.SCALE, ((LocationContent) content).getScale().doubleValue());
163172
break;
164173
case eventNotification:
165-
result.putString("type", "event");
174+
result.putString(Constant.TYPE, "event");
166175
List usernameList = ((EventNotificationContent) content).getUserNames();
167-
result.putArray("usernames", toJSArray(usernameList));
176+
result.putArray(Constant.USERNAMES, toJSArray(usernameList));
168177
switch (((EventNotificationContent) content).getEventNotificationType()) {
169178
case group_member_added:
170179
//群成员加群事件
171-
result.putString("eventType", "group_member_added");
180+
result.putString(Constant.EVENT_TYPE, "group_member_added");
172181
break;
173182
case group_member_removed:
174183
//群成员被踢事件
175-
result.putString("eventType", "group_member_removed");
184+
result.putString(Constant.EVENT_TYPE, "group_member_removed");
176185
break;
177186
case group_member_exit:
178187
//群成员退群事件
179-
result.putString("eventType", "group_member_exit");
188+
result.putString(Constant.EVENT_TYPE, "group_member_exit");
180189
break;
181190
}
182191
default:
@@ -192,21 +201,32 @@ public static WritableMap toJSObject(Conversation conversation) {
192201
WritableMap map = Arguments.createMap();
193202

194203
try {
195-
map.putString("title", conversation.getTitle());
196-
map.putString("conversationType", conversation.getType().name());
197-
map.putInt("unreadCount", conversation.getUnReadMsgCnt());
204+
map.putString(Constant.TITLE, conversation.getTitle());
205+
map.putString(Constant.CONVERSATION_TYPE, conversation.getType().name());
206+
map.putInt(Constant.UNREAD_COUNT, conversation.getUnReadMsgCnt());
198207

199208
if (conversation.getLatestMessage() != null) {
200-
map.putMap("latestMessage", toJSObject(conversation.getLatestMessage()));
209+
map.putMap(Constant.LATEST_MESSAGE, toJSObject(conversation.getLatestMessage()));
210+
}
211+
212+
if (!TextUtils.isEmpty(conversation.getExtra())) {
213+
WritableMap extrasMap = Arguments.createMap();
214+
String extras = conversation.getExtra();
215+
JsonParser parser = new JsonParser();
216+
JsonObject jsonObject = parser.parse(extras).getAsJsonObject();
217+
for (Map.Entry<String, JsonElement> entry : jsonObject.entrySet()) {
218+
extrasMap.putString(entry.getKey(), entry.getValue().toString());
219+
}
220+
map.putMap(Constant.EXTRAS, extrasMap);
201221
}
202222

203223
if (conversation.getType() == ConversationType.single) {
204224
UserInfo targetInfo = (UserInfo) conversation.getTargetInfo();
205-
map.putMap("target", toJSObject(targetInfo));
225+
map.putMap(Constant.TARGET, toJSObject(targetInfo));
206226

207227
} else if (conversation.getType() == ConversationType.group) {
208228
GroupInfo targetInfo = (GroupInfo) conversation.getTargetInfo();
209-
map.putMap("target", toJSObject(targetInfo));
229+
map.putMap(Constant.TARGET, toJSObject(targetInfo));
210230
}
211231

212232
} catch (Exception e) {

document/API.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ import JMessage from 'jmessage-react-plugin';
7070
## 初始化
7171

7272
### init
73-
73+
**注意 Android 仍需在 build.gradle 中配置 appKey,具体可以[参考这个文件](https://github.com/jpush/jmessage-react-plugin/blob/dev/example/android/app/build.gradle)**
7474
初始化插件。建议在应用起始页的构造函数中调用。
7575

7676
#### 示例
@@ -84,7 +84,7 @@ JMessage.init({
8484
```
8585
#### 参数说明
8686

87-
- appkey:极光官网注册的应用 AppKey。
87+
- appkey:极光官网注册的应用 AppKey。**Android 仍需配置 app 下 build.gradle 中的 AppKey。**
8888
- isOpenMessageRoaming:是否开启消息漫游,不传默认关闭。
8989
- isProduction:是否为生产模式。
9090
- channel:(选填)应用的渠道名称。
@@ -1230,4 +1230,4 @@ JMessage.removeUploadProgressListener(listener) // 移除监听(一般在 compon
12301230
12311231
- result
12321232
- messageId:消息 id。
1233-
- progress:上传进度,从 0-1 float 类型。
1233+
- progress:上传进度,从 0-1 float 类型。

0 commit comments

Comments
 (0)