66import android .media .MediaPlayer ;
77import android .net .Uri ;
88import android .text .TextUtils ;
9- import android .util .Log ;
109import android .widget .Toast ;
1110
1211import com .facebook .react .bridge .Arguments ;
2524import java .io .FileNotFoundException ;
2625import java .util .ArrayList ;
2726import java .util .Collections ;
28- import java .util .HashMap ;
2927import java .util .HashSet ;
3028import java .util .List ;
3129import java .util .Set ;
4139import cn .jpush .im .android .api .callback .GetGroupIDListCallback ;
4240import cn .jpush .im .android .api .callback .GetGroupInfoCallback ;
4341import cn .jpush .im .android .api .callback .GetGroupInfoListCallback ;
44- import cn .jpush .im .android .api .callback .GetGroupMembersCallback ;
4542import cn .jpush .im .android .api .callback .GetNoDisurbListCallback ;
4643import cn .jpush .im .android .api .callback .GetUserInfoCallback ;
4744import cn .jpush .im .android .api .callback .GetUserInfoListCallback ;
7168import cn .jpush .im .android .api .model .Conversation ;
7269import cn .jpush .im .android .api .model .GroupBasicInfo ;
7370import cn .jpush .im .android .api .model .GroupInfo ;
71+ import cn .jpush .im .android .api .model .GroupMemberInfo ;
7472import cn .jpush .im .android .api .model .Message ;
7573import cn .jpush .im .android .api .model .UserInfo ;
7674import cn .jpush .im .android .api .options .MessageSendingOptions ;
7775import cn .jpush .im .api .BasicCallback ;
76+ import io .jchat .android .utils .EventUtils ;
7877import io .jchat .android .utils .JMessageUtils ;
78+ import io .jchat .android .utils .Logger ;
7979import io .jchat .android .utils .ResultUtils ;
8080
8181public class JMessageModule extends ReactContextBaseJavaModule {
@@ -105,7 +105,6 @@ public class JMessageModule extends ReactContextBaseJavaModule {
105105
106106 private Context mContext ;
107107 private JMessageUtils mJMessageUtils ;
108- public static HashMap <String , GroupApprovalEvent > groupApprovalEventHashMap ;
109108
110109 public JMessageModule (ReactApplicationContext reactContext , boolean shutdownToast ) {
111110 super (reactContext );
@@ -127,8 +126,6 @@ public boolean canOverrideExistingModule() {
127126 @ Override
128127 public void initialize () {
129128 super .initialize ();
130- if (groupApprovalEventHashMap == null )
131- groupApprovalEventHashMap = new HashMap <>();
132129 }
133130
134131 @ ReactMethod
@@ -139,7 +136,7 @@ public void setup(ReadableMap map) {
139136 JMessageClient .registerEventReceiver (this );
140137 } catch (Exception e ) {
141138 e .printStackTrace ();
142- Log .d (TAG , "Parameter invalid, please check again" );
139+ Logger .d (TAG , "Parameter invalid, please check again" );
143140 }
144141 }
145142
@@ -148,6 +145,7 @@ public void setDebugMode(ReadableMap map) {
148145 try {
149146 boolean enable = map .getBoolean (Constant .ENABLE );
150147 JMessageClient .setDebugMode (enable );
148+ Logger .SHUTDOWNLOG =!enable ;
151149 } catch (Exception e ) {
152150 e .printStackTrace ();
153151 }
@@ -187,7 +185,7 @@ public void login(ReadableMap map, final Callback success, final Callback fail)
187185 mContext = getCurrentActivity ();
188186 String username = map .getString (Constant .USERNAME );
189187 String password = map .getString (Constant .PASSWORD );
190- Log .i (TAG , "username: " + username + " is logging in" );
188+ Logger .i (TAG , "username: " + username + " is logging in" );
191189 JMessageClient .login (username , password , new BasicCallback () {
192190 @ Override
193191 public void gotResult (int status , String desc ) {
@@ -202,7 +200,7 @@ public void userRegister(ReadableMap map, final Callback success, final Callback
202200 mContext = getCurrentActivity ();
203201 String username = map .getString (Constant .USERNAME );
204202 String password = map .getString (Constant .PASSWORD );
205- Log .i (TAG , "username: " + username + " password: " + password );
203+ Logger .i (TAG , "username: " + username + " password: " + password );
206204 if (TextUtils .isEmpty (username ) || TextUtils .isEmpty (password )) {
207205 Toast .makeText (mContext , "Username or Password null" , Toast .LENGTH_SHORT ).show ();
208206 } else {
@@ -713,6 +711,23 @@ public void gotResult(int status, String desc, long groupId) {
713711 }
714712 }
715713
714+ @ ReactMethod
715+ public void dissolveGroup (final ReadableMap map , final Callback success , final Callback fail ) {
716+ try {
717+ long groupId = Long .parseLong (map .getString (Constant .GROUP_ID ));
718+ JMessageClient .adminDissolveGroup (groupId , new BasicCallback () {
719+ @ Override
720+ public void gotResult (int status , String desc ) {
721+ mJMessageUtils .handleCallback (status , desc , success , fail );
722+ }
723+ });
724+
725+ } catch (Exception e ) {
726+ e .printStackTrace ();
727+ mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER , ERR_MSG_PARAMETER );
728+ }
729+ }
730+
716731 @ ReactMethod
717732 public void getGroupIds (final Callback success , final Callback fail ) {
718733 JMessageClient .getGroupIDList (new GetGroupIDListCallback () {
@@ -851,9 +866,9 @@ public void gotResult(int status, String desc) {
851866 public void getGroupMembers (ReadableMap map , final Callback success , final Callback fail ) {
852867 try {
853868 long groupId = Long .parseLong (map .getString (Constant .ID ));
854- JMessageClient .getGroupMembers (groupId , new GetGroupMembersCallback () {
869+ JMessageClient .getGroupMembers (groupId , new RequestCallback < List < GroupMemberInfo >> () {
855870 @ Override
856- public void gotResult (int status , String desc , List <UserInfo > list ) {
871+ public void gotResult (int status , String desc , List <GroupMemberInfo > list ) {
857872 mJMessageUtils .handleCallbackWithArray (status , desc , success , fail , ResultUtils .toJSArray (list ));
858873 }
859874 });
@@ -1483,7 +1498,7 @@ public void setConversationExtras(ReadableMap map, Callback success, Callback fa
14831498 jsonObject .addProperty (key , extraMap .getString (key ));
14841499 }
14851500 conversation .updateConversationExtra (jsonObject .toString ());
1486- Log . e ("JMessageModule" , "extra : " + jsonObject .toString ());
1501+ Logger . i ("JMessageModule" , "extra : " + jsonObject .toString ());
14871502 WritableMap result = ResultUtils .toJSObject (conversation );
14881503 mJMessageUtils .handleCallbackWithObject (0 , "Set extra succeed" , success , fail , result );
14891504 } catch (Exception e ) {
@@ -1877,7 +1892,7 @@ public void processApplyJoinGroup(final ReadableMap map, final Callback success,
18771892 final List <GroupApprovalEvent > groupApprovalEventList = new ArrayList <>();
18781893
18791894 for (int i = 0 ; i < array .size (); i ++) {
1880- GroupApprovalEvent groupApprovalEvent = groupApprovalEventHashMap . get ( array .getString (i ));
1895+ GroupApprovalEvent groupApprovalEvent = EventUtils . getGroupApprovalEvent ( getCurrentActivity (), array .getString (i ));
18811896 if (groupApprovalEvent == null ) {
18821897 mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER ,
18831898 ERR_MSG_PARAMETER + ": can't get event through " + array .getString (i ));
@@ -1896,13 +1911,14 @@ public void processApplyJoinGroup(final ReadableMap map, final Callback success,
18961911 @ Override
18971912 public void gotResult (int status , String desc ) {
18981913 mJMessageUtils .handleCallback (status , desc , success , fail );
1914+ EventUtils .removeGroupApprovalEvents (getCurrentActivity (),groupApprovalEventList );
18991915 }
19001916 });
19011917
19021918 } else {
19031919 // 批量处理只有接受,插件做循环单拒绝
19041920 for (int i = 0 ; i < groupApprovalEventList .size (); i ++) {
1905- GroupApprovalEvent groupApprovalEvent = groupApprovalEventList .get (i );
1921+ final GroupApprovalEvent groupApprovalEvent = groupApprovalEventList .get (i );
19061922 final int finalI = i ;
19071923 groupApprovalEvent .refuseGroupApproval (groupApprovalEvent .getFromUsername (),
19081924 groupApprovalEvent .getfromUserAppKey (),
@@ -1914,6 +1930,9 @@ public void gotResult(int status, String desc) {
19141930 if (finalI == groupApprovalEventList .size ()-1 ){
19151931 mJMessageUtils .handleCallback (status , desc , success , fail );
19161932 }
1933+ if (status == 0 ){
1934+ EventUtils .removeGroupApprovalEvent (getCurrentActivity (),groupApprovalEvent .getEventId ()+"" );
1935+ }
19171936 }
19181937 });
19191938 }
@@ -1924,25 +1943,141 @@ public void gotResult(int status, String desc) {
19241943 }
19251944 }
19261945
1946+
1947+
19271948 @ ReactMethod
1928- public void dissolveGroup (final ReadableMap map , final Callback success , final Callback fail ) {
1949+ public void transferGroupOwner (final ReadableMap map , final Callback success , final Callback fail ) {
19291950 try {
19301951 long groupId = Long .parseLong (map .getString (Constant .GROUP_ID ));
1931- JMessageClient .adminDissolveGroup (groupId , new BasicCallback () {
1952+ final String username = map .getString (Constant .USERNAME );
1953+ final String appKey = map .hasKey (Constant .APP_KEY ) ? map .getString (Constant .APP_KEY ) : "" ;
1954+ JMessageClient .getGroupInfo (groupId , new GetGroupInfoCallback () {
19321955 @ Override
1933- public void gotResult (int status , String desc ) {
1934- mJMessageUtils .handleCallback (status , desc , success , fail );
1956+ public void gotResult (int status , String desc , GroupInfo groupInfo ) {
1957+ if (status == 0 ) {
1958+ groupInfo .changeGroupAdmin (username , appKey , new BasicCallback () {
1959+ @ Override
1960+ public void gotResult (int status , String desc ) {
1961+ mJMessageUtils .handleCallback (status , desc , success , fail );
1962+ }
1963+ });
1964+ } else {
1965+ mJMessageUtils .handleError (fail , status , desc );
1966+ }
1967+ }
1968+ });
1969+ } catch (Exception e ) {
1970+ e .printStackTrace ();
1971+ mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER , ERR_MSG_PARAMETER );
1972+ }
1973+ }
1974+
1975+ @ ReactMethod
1976+ public void setGroupMemberSilence (final ReadableMap map , final Callback success , final Callback fail ) {
1977+ try {
1978+ long groupId = Long .parseLong (map .getString (Constant .GROUP_ID ));
1979+ final String username = map .getString (Constant .USERNAME );
1980+ final String appKey = map .hasKey (Constant .APP_KEY ) ? map .getString (Constant .APP_KEY ) : "" ;
1981+ final Boolean isSilence =map .getBoolean (Constant .IS_SILENCE );
1982+ JMessageClient .getGroupInfo (groupId , new GetGroupInfoCallback () {
1983+ @ Override
1984+ public void gotResult (int status , String desc , GroupInfo groupInfo ) {
1985+ if (status == 0 ) {
1986+ groupInfo .setGroupMemSilence (username , appKey , isSilence , new BasicCallback () {
1987+ @ Override
1988+ public void gotResult (int status , String desc ) {
1989+ mJMessageUtils .handleCallback (status , desc , success , fail );
1990+ }
1991+ });
1992+ } else {
1993+ mJMessageUtils .handleError (fail , status , desc );
1994+ }
1995+ }
1996+ });
1997+ } catch (Exception e ) {
1998+ e .printStackTrace ();
1999+ mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER , ERR_MSG_PARAMETER );
2000+ }
2001+ }
2002+
2003+ @ ReactMethod
2004+ public void isSilenceMember (final ReadableMap map , final Callback success , final Callback fail ) {
2005+ try {
2006+ long groupId = Long .parseLong (map .getString (Constant .GROUP_ID ));
2007+ final String username = map .getString (Constant .USERNAME );
2008+ final String appKey = map .hasKey (Constant .APP_KEY ) ? map .getString (Constant .APP_KEY ) : "" ;
2009+ JMessageClient .getGroupInfo (groupId , new GetGroupInfoCallback () {
2010+ @ Override
2011+ public void gotResult (int status , String desc , GroupInfo groupInfo ) {
2012+ if (status == 0 ) {
2013+ boolean isSilence = groupInfo .isKeepSilence (username , appKey );
2014+ WritableMap result = Arguments .createMap ();
2015+ result .putBoolean (Constant .IS_SILENCE , isSilence );
2016+ mJMessageUtils .handleCallbackWithObject (status , desc , success , fail , result );
2017+
2018+ } else {
2019+ mJMessageUtils .handleError (fail , status , desc );
2020+ }
2021+ }
2022+ });
2023+ } catch (Exception e ) {
2024+ e .printStackTrace ();
2025+ mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER , ERR_MSG_PARAMETER );
2026+ }
2027+ }
2028+
2029+ @ ReactMethod
2030+ public void groupSilenceMembers (final ReadableMap map , final Callback success , final Callback fail ) {
2031+ try {
2032+ long groupId = Long .parseLong (map .getString (Constant .GROUP_ID ));
2033+ JMessageClient .getGroupInfo (groupId , new GetGroupInfoCallback () {
2034+ @ Override
2035+ public void gotResult (int status , String desc , GroupInfo groupInfo ) {
2036+ if (status == 0 ) {
2037+ List <GroupMemberInfo > groupSilenceMemberInfos = groupInfo .getGroupSilenceMemberInfos ();
2038+ mJMessageUtils .handleCallbackWithArray (status , desc , success , fail ,
2039+ ResultUtils .toJSArray (groupSilenceMemberInfos ));
2040+ } else {
2041+ mJMessageUtils .handleError (fail , status , desc );
2042+ }
19352043 }
19362044 });
2045+ } catch (Exception e ) {
2046+ e .printStackTrace ();
2047+ mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER , ERR_MSG_PARAMETER );
2048+ }
2049+ }
19372050
2051+ @ ReactMethod
2052+ public void setGroupNickname (final ReadableMap map , final Callback success , final Callback fail ) {
2053+ try {
2054+ long groupId = Long .parseLong (map .getString (Constant .GROUP_ID ));
2055+ final String username = map .getString (Constant .USERNAME );
2056+ final String appKey = map .hasKey (Constant .APP_KEY ) ? map .getString (Constant .APP_KEY ) : "" ;
2057+ final String nickname =map .getString ("nickName" );
2058+ JMessageClient .getGroupInfo (groupId , new GetGroupInfoCallback () {
2059+ @ Override
2060+ public void gotResult (int status , String desc , GroupInfo groupInfo ) {
2061+ if (status == 0 ) {
2062+ groupInfo .setMemNickname (username , appKey , nickname , new BasicCallback () {
2063+ @ Override
2064+ public void gotResult (int status , String desc ) {
2065+ mJMessageUtils .handleCallback (status , desc , success , fail );
2066+ }
2067+ });
2068+ } else {
2069+ mJMessageUtils .handleError (fail , status , desc );
2070+ }
2071+ }
2072+ });
19382073 } catch (Exception e ) {
19392074 e .printStackTrace ();
19402075 mJMessageUtils .handleError (fail , ERR_CODE_PARAMETER , ERR_MSG_PARAMETER );
19412076 }
19422077 }
19432078
19442079 public void onEvent (LoginStateChangeEvent event ) {
1945- Log .d (TAG , "登录状态改变事件:event = " + event .toString ());
2080+ Logger .d (TAG , "登录状态改变事件:event = " + event .toString ());
19462081 WritableMap map = Arguments .createMap ();
19472082 map .putString (Constant .TYPE , event .getReason ().toString ());
19482083 getReactApplicationContext ().getJSModule (DeviceEventManagerModule .RCTDeviceEventEmitter .class )
@@ -1951,7 +2086,7 @@ public void onEvent(LoginStateChangeEvent event) {
19512086
19522087 public void onEvent (MessageEvent event ) {
19532088 Message msg = event .getMessage ();
1954- Log .d (TAG , "收到消息:msg = " + msg .toString ());
2089+ Logger .d (TAG , "收到消息:msg = " + msg .toString ());
19552090 getReactApplicationContext ().getJSModule (DeviceEventManagerModule .RCTDeviceEventEmitter .class )
19562091 .emit (RECEIVE_MSG_EVENT , ResultUtils .toJSObject (msg ));
19572092 }
@@ -1971,7 +2106,7 @@ public void onEvent(ConversationRefreshEvent event) {
19712106 }
19722107
19732108 public void onEvent (ContactNotifyEvent event ) {
1974- Log .d (TAG , "ContactNotifyEvent, event: " + event );
2109+ Logger .d (TAG , "ContactNotifyEvent, event: " + event );
19752110 WritableMap map = Arguments .createMap ();
19762111 map .putString (Constant .TYPE , event .getType ().toString ());
19772112 map .putString (Constant .REASON , event .getReason ());
@@ -2080,14 +2215,14 @@ public void onComplete(int status, String desc, File file) {
20802215 */
20812216 public void onEventMainThread (ChatRoomMessageEvent event ) {
20822217 List <Message > list = event .getMessages ();
2083- Log .d (TAG , "收到聊天室消息" );
2218+ Logger .d (TAG , "收到聊天室消息" );
20842219 getReactApplicationContext ().getJSModule (DeviceEventManagerModule .RCTDeviceEventEmitter .class )
20852220 .emit (RECEIVE_CHAT_ROOM_MSG_EVENT , ResultUtils .toJSArray (list ));
20862221 }
20872222
20882223 public void onEvent (GroupApprovalEvent event ) {
2089- Log .d (TAG , "GroupApprovalEvent, event: " + event );
2090- groupApprovalEventHashMap . put ( event . getEventId () + "" , event );
2224+ Logger .d (TAG , "GroupApprovalEvent, event: " + event );
2225+ EventUtils . saveGroupApprovalEvent ( getCurrentActivity (), event );
20912226 GroupApprovalEvent .Type type = event .getType ();
20922227 final WritableMap map = Arguments .createMap ();
20932228 map .putString (Constant .EVENT_ID , event .getEventId () + "" );
@@ -2115,7 +2250,7 @@ public void gotResult(int status, String s, List<UserInfo> list) {
21152250 }
21162251
21172252 public void onEvent (GroupApprovedNotificationEvent event ) {
2118- Log .d (TAG , "GroupApprovedNotificationEvent, event: " + event );
2253+ Logger .d (TAG , "GroupApprovedNotificationEvent, event: " + event );
21192254 final WritableMap map = Arguments .createMap ();
21202255 map .putBoolean (Constant .IS_AGREE , event .getApprovalResult ());
21212256 map .putString (Constant .APPLY_EVENT_ID , event .getApprovalEventID () + "" );
@@ -2141,7 +2276,7 @@ public void gotResult(int status, String s, List<UserInfo> list) {
21412276 }
21422277
21432278 public void onEvent (GroupApprovalRefuseEvent event ) {
2144- Log .d (TAG , "GroupApprovalRefuseEvent, event: " + event );
2279+ Logger .d (TAG , "GroupApprovalRefuseEvent, event: " + event );
21452280 final WritableMap map = Arguments .createMap ();
21462281 map .putString (Constant .REASON , event .getReason ());
21472282 map .putString (Constant .GROUP_ID , event .getGid () + "" );
0 commit comments