@@ -100,6 +100,7 @@ public class JMessageModule extends ReactContextBaseJavaModule {
100100 private static final int ERR_CODE_CONVERSATION = 2 ;
101101 private static final int ERR_CODE_MESSAGE = 3 ;
102102 private static final int ERR_CODE_FILE = 4 ;
103+ private static final int ERR_CODE_EXCEPTION = -1 ;
103104
104105 private static final String ERR_MSG_PARAMETER = "Parameters error" ;
105106 private static final String ERR_MSG_CONVERSATION = "Can't get the conversation" ;
@@ -2085,49 +2086,87 @@ public void gotResult(int status, String desc) {
20852086 }
20862087
20872088 @ ReactMethod
2088- public void setMsgHaveRead (ReadableMap map , final Callback callback ) {
2089- String userName = map .getString (Constant .USERNAME );
2090- String appKey = map .getString (Constant .APP_KEY );
2091- String msgId = map .getString (Constant .ID );
2092- String serverMsgId = map .getString (Constant .SERVER_ID );
2093- WritableMap callbackMap = Arguments .createMap ();
2094- if (TextUtils .isEmpty (userName )||
2095- TextUtils .isEmpty (appKey )||
2096- TextUtils .isEmpty (msgId )||
2097- TextUtils .isEmpty (serverMsgId )){
2098- callbackMap .putInt (Constant .CODE , ERR_CODE_CONVERSATION );
2099- callbackMap .putString (Constant .DESCRIPTION , ERR_MSG_CONVERSATION );
2100- callback .invoke (callbackMap );
2101- return ;
2102- }
2103- Conversation conversation = JMessageClient .getSingleConversation (userName , appKey );
2104- if (conversation ==null ){
2105- callbackMap .putInt (Constant .CODE , ERR_CODE_CONVERSATION );
2106- callbackMap .putString (Constant .DESCRIPTION , ERR_MSG_CONVERSATION );
2107- callback .invoke (callbackMap );
2108- return ;
2109- }
2110- //优先使用msgId获取conversation,获取不到再使用serverMsgId获取
2111- Message message = conversation .getMessage (Integer .parseInt (msgId ));
2112- if (message ==null ){
2113- message = conversation .getMessage (Long .parseLong (serverMsgId ));
2114- }
2115- if (message == null ){
2116- callbackMap .putInt (Constant .CODE , ERR_CODE_MESSAGE );
2117- callbackMap .putString (Constant .DESCRIPTION , ERR_MSG_MESSAGE );
2118- callback .invoke (callbackMap );
2119- return ;
2120- }
2121- if (!message .haveRead ()) {
2089+ public void setMsgHaveRead (ReadableMap map , final Callback successCallback , final Callback failCallback ) {
2090+ final WritableMap failMap = Arguments .createMap ();
2091+ try {
2092+ String type = map .getString (Constant .TYPE );
2093+ if (TextUtils .isEmpty (type )) {
2094+ failMap .putInt (Constant .CODE , ERR_CODE_PARAMETER );
2095+ failMap .putString (Constant .DESCRIPTION , ERR_MSG_PARAMETER );
2096+ failCallback .invoke (failMap );
2097+ return ;
2098+ }
2099+ Conversation conversation ;
2100+ switch (type ) {
2101+ case Constant .TYPE_SINGLE :
2102+ String userName = map .getString (Constant .USERNAME );
2103+ String appKey = map .getString (Constant .APP_KEY );
2104+ //如果appKey为空则默认取本应用appKey下对应userName用户的会话。
2105+ if (TextUtils .isEmpty (userName )) {
2106+ failMap .putInt (Constant .CODE , ERR_CODE_PARAMETER );
2107+ failMap .putString (Constant .DESCRIPTION , ERR_MSG_PARAMETER );
2108+ failCallback .invoke (failMap );
2109+ return ;
2110+ }
2111+ conversation = JMessageClient .getSingleConversation (userName , appKey );
2112+ break ;
2113+ case Constant .TYPE_GROUP :
2114+ String groupId = map .getString (Constant .GROUP_ID );
2115+ if (TextUtils .isEmpty (groupId )) {
2116+ failMap .putInt (Constant .CODE , ERR_CODE_PARAMETER );
2117+ failMap .putString (Constant .DESCRIPTION , ERR_MSG_PARAMETER );
2118+ failCallback .invoke (failMap );
2119+ return ;
2120+ }
2121+ conversation = JMessageClient .getGroupConversation (Long .parseLong (groupId ));
2122+ break ;
2123+ case Constant .TYPE_CHAT_ROOM :
2124+ String roomId = map .getString (Constant .ROOM_ID );
2125+ if (TextUtils .isEmpty (roomId )) {
2126+ failMap .putInt (Constant .CODE , ERR_CODE_PARAMETER );
2127+ failMap .putString (Constant .DESCRIPTION , ERR_MSG_PARAMETER );
2128+ failCallback .invoke (failMap );
2129+ return ;
2130+ }
2131+ conversation = JMessageClient .getChatRoomConversation (Long .parseLong (roomId ));
2132+ break ;
2133+ default :
2134+ conversation = null ;
2135+ break ;
2136+ }
2137+ if (conversation == null ) {
2138+ failMap .putInt (Constant .CODE , ERR_CODE_CONVERSATION );
2139+ failMap .putString (Constant .DESCRIPTION , ERR_MSG_CONVERSATION );
2140+ failCallback .invoke (failMap );
2141+ return ;
2142+ }
2143+ String messageId = map .getString (Constant .ID );
2144+ Message message = conversation .getMessage (Integer .parseInt (messageId ));
2145+ if (message == null ) {
2146+ failMap .putInt (Constant .CODE , ERR_CODE_MESSAGE );
2147+ failMap .putString (Constant .DESCRIPTION , ERR_MSG_MESSAGE );
2148+ failCallback .invoke (failMap );
2149+ return ;
2150+ }
2151+ if (message .haveRead ()) {
2152+ return ;
2153+ }
21222154 message .setHaveRead (new BasicCallback () {
21232155 @ Override
2124- public void gotResult (int i , String s ) {
2125- WritableMap map = Arguments .createMap ();
2126- map .putInt (Constant .CODE , i );
2127- map .putString (Constant .DESCRIPTION , s );
2128- callback .invoke (map );
2156+ public void gotResult (int code , String message ) {
2157+ if (code == 0 ) {
2158+ successCallback .invoke ();
2159+ } else {
2160+ failMap .putInt (Constant .CODE , code );
2161+ failMap .putString (Constant .DESCRIPTION , message );
2162+ failCallback .invoke (failMap );
2163+ }
21292164 }
21302165 });
2166+ }catch (Throwable throwable ){
2167+ failMap .putInt (Constant .CODE , ERR_CODE_EXCEPTION );
2168+ failMap .putString (Constant .DESCRIPTION , throwable .getMessage ());
2169+ failCallback .invoke (failMap );
21312170 }
21322171 }
21332172
0 commit comments