juggleim-rnsdk 0.0.9 → 0.0.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/src/main/java/com/juggleim/JuggleIMManager.java +64 -43
- package/im-rn-sdk.podspec +1 -1
- package/ios/JuggleIMManager.m +22 -0
- package/package.json +1 -1
- package/src/index.d.ts +7 -0
- package/src/index.js +22 -9
|
@@ -60,13 +60,13 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
60
60
|
public String getName() {
|
|
61
61
|
return MODULE_NAME;
|
|
62
62
|
}
|
|
63
|
-
|
|
63
|
+
|
|
64
64
|
// 添加这两个方法以解决React Native的警告
|
|
65
65
|
@ReactMethod
|
|
66
66
|
public void addListener(String eventName) {
|
|
67
67
|
// Keep: Required for RN built in Event Emitter Calls.
|
|
68
68
|
}
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
@ReactMethod
|
|
71
71
|
public void removeListeners(Integer count) {
|
|
72
72
|
// Keep: Required for RN built in Event Emitter Calls.
|
|
@@ -96,7 +96,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
96
96
|
JIM.InitConfig.Builder builder = new JIM.InitConfig.Builder();
|
|
97
97
|
JLogConfig.Builder logBuilder = new JLogConfig.Builder(getReactApplicationContext());
|
|
98
98
|
logBuilder.setLogConsoleLevel(JLogLevel.JLogLevelVerbose);
|
|
99
|
-
builder.setJLogConfig(new JLogConfig(logBuilder));
|
|
99
|
+
builder.setJLogConfig(new JLogConfig(logBuilder));
|
|
100
100
|
JIM.getInstance().init(getCurrentActivity(), appKey, builder.build());
|
|
101
101
|
}
|
|
102
102
|
|
|
@@ -550,7 +550,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
550
550
|
JIMConst.PullDirection direction = pullDirection == 0 ?
|
|
551
551
|
JIMConst.PullDirection.NEWER : JIMConst.PullDirection.OLDER;
|
|
552
552
|
|
|
553
|
-
List<ConversationInfo> conversationInfos = com.juggle.im.JIM.getInstance().getConversationManager().getConversationInfoList(count, (long)ts, direction);
|
|
553
|
+
List<ConversationInfo> conversationInfos = com.juggle.im.JIM.getInstance().getConversationManager().getConversationInfoList(count, (long) ts, direction);
|
|
554
554
|
Log.d("getConversationInfoList", "conversationInfos: " + conversationInfos.size());
|
|
555
555
|
WritableArray result = new WritableNativeArray();
|
|
556
556
|
for (ConversationInfo info : conversationInfos) {
|
|
@@ -765,39 +765,60 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
765
765
|
*/
|
|
766
766
|
@ReactMethod
|
|
767
767
|
public void sendMessage(ReadableMap messageMap, String messageId, Promise promise) {
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
}
|
|
768
|
+
Message message = convertMapToMessage(messageMap);
|
|
769
|
+
Log.d("sendMessage", message.toString());
|
|
770
|
+
Message sendMsg = JIM.getInstance().getMessageManager().sendMessage(
|
|
771
|
+
message.getContent(),
|
|
772
|
+
message.getConversation(),
|
|
773
|
+
new IMessageManager.ISendMessageCallback() {
|
|
774
|
+
@Override
|
|
775
|
+
public void onSuccess(Message sentMessage) {
|
|
776
|
+
WritableMap result = convertMessageToMap(sentMessage);
|
|
777
|
+
WritableMap event = new WritableNativeMap();
|
|
778
|
+
event.putString("messageId", messageId);
|
|
779
|
+
event.putMap("message", result);
|
|
780
|
+
sendEvent("onMessageSent", event);
|
|
781
|
+
}
|
|
783
782
|
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
|
|
789
|
-
|
|
790
|
-
|
|
791
|
-
|
|
792
|
-
}
|
|
783
|
+
@Override
|
|
784
|
+
public void onError(Message message, int errorCode) {
|
|
785
|
+
WritableMap errorResult = convertMessageToMap(message);
|
|
786
|
+
WritableMap event = new WritableNativeMap();
|
|
787
|
+
event.putString("messageId", messageId);
|
|
788
|
+
event.putMap("message", errorResult);
|
|
789
|
+
event.putInt("errorCode", errorCode);
|
|
790
|
+
sendEvent("onMessageSentError", event);
|
|
793
791
|
}
|
|
794
|
-
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
792
|
+
}
|
|
793
|
+
);
|
|
794
|
+
WritableMap result = convertMessageToMap(sendMsg);
|
|
795
|
+
result.putString("messageId", messageId);
|
|
796
|
+
promise.resolve(result);
|
|
797
|
+
}
|
|
798
|
+
|
|
799
|
+
/**
|
|
800
|
+
* 根据clientMsgNo列表删除消息
|
|
801
|
+
*/
|
|
802
|
+
@ReactMethod
|
|
803
|
+
public void deleteMessagesByClientMsgNoList(ReadableMap conversationMap, ReadableArray clientMsgNos, Promise promise) {
|
|
804
|
+
Conversation conversation = convertMapToConversation(conversationMap);
|
|
805
|
+
List<Long> msgNoList = new ArrayList<>();
|
|
806
|
+
for (int i = 0; i < clientMsgNos.size(); i++) {
|
|
807
|
+
msgNoList.add((long) clientMsgNos.getDouble(i));
|
|
800
808
|
}
|
|
809
|
+
|
|
810
|
+
JIM.getInstance().getMessageManager()
|
|
811
|
+
.deleteMessagesByClientMsgNoList(conversation, msgNoList, new IMessageManager.ISimpleCallback() {
|
|
812
|
+
@Override
|
|
813
|
+
public void onSuccess() {
|
|
814
|
+
promise.resolve(true);
|
|
815
|
+
}
|
|
816
|
+
|
|
817
|
+
@Override
|
|
818
|
+
public void onError(int errorCode) {
|
|
819
|
+
promise.reject("error", "Error code: " + errorCode);
|
|
820
|
+
}
|
|
821
|
+
});
|
|
801
822
|
}
|
|
802
823
|
|
|
803
824
|
/**
|
|
@@ -947,7 +968,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
947
968
|
try {
|
|
948
969
|
Conversation conversation = convertMapToConversation(messageMap);
|
|
949
970
|
ImageMessage imageMessage = new ImageMessage();
|
|
950
|
-
|
|
971
|
+
|
|
951
972
|
ReadableMap contentMap = messageMap.getMap("content");
|
|
952
973
|
if (contentMap.hasKey("localPath")) {
|
|
953
974
|
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
@@ -969,7 +990,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
969
990
|
if (contentMap.hasKey("height")) {
|
|
970
991
|
imageMessage.setHeight(contentMap.getInt("height"));
|
|
971
992
|
}
|
|
972
|
-
|
|
993
|
+
|
|
973
994
|
Message message = JIM.getInstance().getMessageManager().sendMediaMessage(
|
|
974
995
|
imageMessage,
|
|
975
996
|
conversation,
|
|
@@ -1010,7 +1031,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1010
1031
|
}
|
|
1011
1032
|
}
|
|
1012
1033
|
);
|
|
1013
|
-
|
|
1034
|
+
|
|
1014
1035
|
WritableMap result = convertMessageToMap(message);
|
|
1015
1036
|
result.putString("messageId", messageId);
|
|
1016
1037
|
promise.resolve(result);
|
|
@@ -1027,7 +1048,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1027
1048
|
try {
|
|
1028
1049
|
Conversation conversation = convertMapToConversation(messageMap);
|
|
1029
1050
|
FileMessage fileMessage = new FileMessage();
|
|
1030
|
-
|
|
1051
|
+
|
|
1031
1052
|
ReadableMap contentMap = messageMap.getMap("content");
|
|
1032
1053
|
if (contentMap.hasKey("localPath")) {
|
|
1033
1054
|
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
@@ -1045,7 +1066,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1045
1066
|
if (contentMap.hasKey("type")) {
|
|
1046
1067
|
fileMessage.setType(contentMap.getString("type"));
|
|
1047
1068
|
}
|
|
1048
|
-
|
|
1069
|
+
|
|
1049
1070
|
Message message = JIM.getInstance().getMessageManager().sendMediaMessage(
|
|
1050
1071
|
fileMessage,
|
|
1051
1072
|
conversation,
|
|
@@ -1085,7 +1106,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1085
1106
|
}
|
|
1086
1107
|
}
|
|
1087
1108
|
);
|
|
1088
|
-
|
|
1109
|
+
|
|
1089
1110
|
WritableMap result = convertMessageToMap(message);
|
|
1090
1111
|
result.putString("messageId", messageId);
|
|
1091
1112
|
promise.resolve(result);
|
|
@@ -1102,7 +1123,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1102
1123
|
try {
|
|
1103
1124
|
Conversation conversation = convertMapToConversation(messageMap);
|
|
1104
1125
|
VoiceMessage voiceMessage = new VoiceMessage();
|
|
1105
|
-
|
|
1126
|
+
|
|
1106
1127
|
ReadableMap contentMap = messageMap.getMap("content");
|
|
1107
1128
|
if (contentMap.hasKey("localPath")) {
|
|
1108
1129
|
String path = FileUtils.convertContentUriToFile(getReactApplicationContext(), contentMap.getString("localPath"));
|
|
@@ -1114,7 +1135,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1114
1135
|
if (contentMap.hasKey("duration")) {
|
|
1115
1136
|
voiceMessage.setDuration(contentMap.getInt("duration"));
|
|
1116
1137
|
}
|
|
1117
|
-
|
|
1138
|
+
|
|
1118
1139
|
Message message = JIM.getInstance().getMessageManager().sendMediaMessage(
|
|
1119
1140
|
voiceMessage,
|
|
1120
1141
|
conversation,
|
|
@@ -1150,7 +1171,7 @@ public class JuggleIMManager extends ReactContextBaseJavaModule {
|
|
|
1150
1171
|
}
|
|
1151
1172
|
}
|
|
1152
1173
|
);
|
|
1153
|
-
|
|
1174
|
+
|
|
1154
1175
|
WritableMap result = convertMessageToMap(message);
|
|
1155
1176
|
promise.resolve(result);
|
|
1156
1177
|
} catch (Exception e) {
|
package/im-rn-sdk.podspec
CHANGED
package/ios/JuggleIMManager.m
CHANGED
|
@@ -1102,6 +1102,28 @@ RCT_EXPORT_METHOD(recallMessage:(NSDictionary *)messageDict
|
|
|
1102
1102
|
}
|
|
1103
1103
|
}
|
|
1104
1104
|
|
|
1105
|
+
/**
|
|
1106
|
+
* 根据clientMsgNo列表删除消息
|
|
1107
|
+
*/
|
|
1108
|
+
RCT_EXPORT_METHOD(deleteMessagesByClientMsgNoList:(NSArray<NSNumber *> *)clientMsgNos
|
|
1109
|
+
conversation:(NSDictionary *)conversationMap
|
|
1110
|
+
resolver:(RCTPromiseResolveBlock)resolve
|
|
1111
|
+
rejecter:(RCTPromiseRejectBlock)reject) {
|
|
1112
|
+
@try {
|
|
1113
|
+
JConversation *conversation = [self convertDictionaryToConversation:conversationMap];
|
|
1114
|
+
|
|
1115
|
+
[JIM.shared.messageManager deleteMessagesByClientMsgNoList:clientMsgNos
|
|
1116
|
+
conversation:conversation
|
|
1117
|
+
success:^{
|
|
1118
|
+
resolve(@YES);
|
|
1119
|
+
} error:^(JErrorCode errorCode) {
|
|
1120
|
+
reject(@"DELETE_MESSAGES_ERROR", @"删除消息失败", [NSError errorWithDomain:@"JuggleIM" code:errorCode userInfo:nil]);
|
|
1121
|
+
}];
|
|
1122
|
+
} @catch (NSException *exception) {
|
|
1123
|
+
reject(@"DELETE_MESSAGES_ERROR", exception.reason, nil);
|
|
1124
|
+
}
|
|
1125
|
+
}
|
|
1126
|
+
|
|
1105
1127
|
/**
|
|
1106
1128
|
* 添加消息反应
|
|
1107
1129
|
*/
|
package/package.json
CHANGED
package/src/index.d.ts
CHANGED
|
@@ -666,6 +666,13 @@ declare module "im-rn-sdk" {
|
|
|
666
666
|
extras?: { [key: string]: any }
|
|
667
667
|
): Promise<Boolean>;
|
|
668
668
|
|
|
669
|
+
/**
|
|
670
|
+
* 根据clientMsgNo列表删除消息
|
|
671
|
+
* @param conversation 会话
|
|
672
|
+
* @param clientMsgNos clientMsgNo列表
|
|
673
|
+
*/
|
|
674
|
+
static deleteMessagesByClientMsgNoList(conversation: Conversation, clientMsgNos: number[]): Promise<boolean>;
|
|
675
|
+
|
|
669
676
|
/**
|
|
670
677
|
* 添加消息反应
|
|
671
678
|
* @param messageId 消息ID
|
package/src/index.js
CHANGED
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
import { NativeModules, Platform, NativeEventEmitter } from "react-native";
|
|
2
2
|
|
|
3
3
|
const { JuggleIM: JMI } = NativeModules;
|
|
4
|
-
|
|
5
|
-
const juggleIMEmitter = Platform.OS === 'android' ? new NativeEventEmitter(JMI) : new NativeEventEmitter();
|
|
4
|
+
const juggleIMEmitter = new NativeEventEmitter(JMI);
|
|
6
5
|
|
|
7
6
|
/**
|
|
8
7
|
* Juggle IM React Native SDK
|
|
@@ -544,10 +543,10 @@ class JuggleIM {
|
|
|
544
543
|
callback = {}
|
|
545
544
|
) {
|
|
546
545
|
console.log("sendMessage message:", message);
|
|
547
|
-
|
|
546
|
+
|
|
548
547
|
// 生成唯一标识符以避免回调冲突
|
|
549
548
|
const messageId = Math.random().toString(36).substr(2, 9) + Date.now();
|
|
550
|
-
|
|
549
|
+
|
|
551
550
|
const successListener = juggleIMEmitter.addListener(
|
|
552
551
|
"onMessageSent",
|
|
553
552
|
(event) => {
|
|
@@ -592,10 +591,10 @@ class JuggleIM {
|
|
|
592
591
|
callback = {}
|
|
593
592
|
) {
|
|
594
593
|
console.log("sendImageMessage message...:", message);
|
|
595
|
-
|
|
594
|
+
|
|
596
595
|
// 生成唯一标识符以避免回调冲突
|
|
597
596
|
const messageId = Math.random().toString(36).substr(2, 9) + Date.now();
|
|
598
|
-
|
|
597
|
+
|
|
599
598
|
const progressListener = juggleIMEmitter.addListener(
|
|
600
599
|
"onMediaMessageProgress",
|
|
601
600
|
(event) => {
|
|
@@ -671,7 +670,7 @@ class JuggleIM {
|
|
|
671
670
|
) {
|
|
672
671
|
// 生成唯一标识符以避免回调冲突
|
|
673
672
|
const messageId = Math.random().toString(36).substr(2, 9) + Date.now();
|
|
674
|
-
|
|
673
|
+
|
|
675
674
|
// 添加监听器
|
|
676
675
|
const progressListener = juggleIMEmitter.addListener(
|
|
677
676
|
"onMediaMessageProgress",
|
|
@@ -748,7 +747,7 @@ class JuggleIM {
|
|
|
748
747
|
) {
|
|
749
748
|
// 生成唯一标识符以避免回调冲突
|
|
750
749
|
const messageId = Math.random().toString(36).substr(2, 9) + Date.now();
|
|
751
|
-
|
|
750
|
+
|
|
752
751
|
// 添加监听器
|
|
753
752
|
const progressListener = juggleIMEmitter.addListener(
|
|
754
753
|
"onMediaMessageProgress",
|
|
@@ -829,7 +828,21 @@ class JuggleIM {
|
|
|
829
828
|
* @param {Object} extras - kv 扩展信息
|
|
830
829
|
*/
|
|
831
830
|
static recallMessage(message, extras = {}) {
|
|
832
|
-
return JMI.recallMessage(message, extras
|
|
831
|
+
return JMI.recallMessage(message, extras);
|
|
832
|
+
}
|
|
833
|
+
|
|
834
|
+
/**
|
|
835
|
+
* 根据clientMsgNo列表删除消息
|
|
836
|
+
* @param {object} conversation - 会话对象
|
|
837
|
+
* @param {number[]} clientMsgNos - clientMsgNo列表
|
|
838
|
+
* @returns {Promise<boolean>} 删除结果
|
|
839
|
+
*/
|
|
840
|
+
static deleteMessagesByClientMsgNoList(conversation, clientMsgNos) {
|
|
841
|
+
if (Platform.OS === "android") {
|
|
842
|
+
return JMI.deleteMessagesByClientMsgNoList(conversation, clientMsgNos);
|
|
843
|
+
} else if (Platform.OS === "ios") {
|
|
844
|
+
return JMI.deleteMessagesByClientMsgNoList(conversation, clientMsgNos);
|
|
845
|
+
}
|
|
833
846
|
}
|
|
834
847
|
|
|
835
848
|
/**
|