11package com .easemob .im_flutter_sdk ;
22
33import com .hyphenate .EMChatRoomChangeListener ;
4+ import com .hyphenate .EMError ;
5+ import com .hyphenate .EMResultCallBack ;
46import com .hyphenate .chat .EMChatRoom ;
57import com .hyphenate .chat .EMClient ;
8+ import com .hyphenate .chat .EMConversation ;
69import com .hyphenate .chat .EMCursorResult ;
710import com .hyphenate .chat .EMGroupInfo ;
811import com .hyphenate .chat .EMPageResult ;
1417
1518import java .util .ArrayList ;
1619import java .util .HashMap ;
20+ import java .util .Iterator ;
1721import java .util .List ;
1822import java .util .Map ;
1923
@@ -95,6 +99,12 @@ public void onMethodCall(MethodCall call, MethodChannel.Result result) {
9599 muteAllChatRoomsMembers (param , call .method , result );
96100 } else if (EMSDKMethod .unMuteAllChatRoomMembers .equals (call .method )) {
97101 unMuteAllChatRoomsMembers (param , call .method , result );
102+ } else if (EMSDKMethod .fetchChatRoomAttributes .equals (call .method )){
103+ fetchChatRoomAttributes (param , call .method , result );
104+ } else if (EMSDKMethod .setChatRoomAttributes .equals (call .method )){
105+ setChatRoomAttributes (param , call .method , result );
106+ } else if (EMSDKMethod .removeChatRoomAttributes .equals (call .method )){
107+ removeChatRoomAttributes (param , call .method , result );
98108 } else {
99109 super .onMethodCall (call , result );
100110 }
@@ -563,6 +573,87 @@ public void onSuccess(EMChatRoom object) {
563573 EMClient .getInstance ().chatroomManager ().unmuteAllMembers (roomId , callback );
564574 }
565575
576+ public void fetchChatRoomAttributes (JSONObject param , String channelName , MethodChannel .Result result ) throws JSONException {
577+ String roomId = param .getString ("roomId" );
578+ List <String > keys = new ArrayList <>();
579+ if (param .has ("keys" )){
580+ JSONArray array = param .getJSONArray ("keys" );
581+ for (int i = 0 ; i < array .length (); i ++) {
582+ keys .add (array .getString (i ));
583+ }
584+ }
585+ EMClient .getInstance ().chatroomManager ().asyncFetchChatroomAttributesFromServer (roomId , keys , new EMValueWrapperCallBack (result , channelName ));
586+ }
587+
588+ public void setChatRoomAttributes (JSONObject param , String channelName , MethodChannel .Result result ) throws JSONException {
589+ String roomId = param .getString ("roomId" );
590+ Map <String , String > attributes = new HashMap <>();
591+ if (param .has ("attributes" )) {
592+ JSONObject jsonObject = param .getJSONObject ("attributes" );
593+ Iterator iterator = jsonObject .keys ();
594+ while (iterator .hasNext ()) {
595+ String key = iterator .next ().toString ();
596+ attributes .put (key , jsonObject .getString (key ));
597+ }
598+ }
599+ boolean autoDelete = false ;
600+ if (param .has ("autoDelete" )) {
601+ autoDelete = param .getBoolean ("autoDelete" );
602+ }
603+ boolean forced = false ;
604+ if (param .has ("forced" )) {
605+ forced = param .getBoolean ("forced" );
606+ }
607+
608+ EMChatRoomManagerWrapper current = this ;
609+
610+ EMResultCallBack callback = (EMResultCallBack <Map <String , Integer >>) (code , value ) -> asyncRunnable (()->{
611+ if (value .size () > 0 || code == EMError .EM_NO_ERROR ) {
612+ current .onSuccess (result , channelName , value );
613+ }else {
614+ HyphenateException e = new HyphenateException (code , "" );
615+ current .onError (result , e );
616+ }
617+ });
618+
619+ if (forced ) {
620+ EMClient .getInstance ().chatroomManager ().asyncSetChatroomAttributesForced (roomId , attributes , autoDelete , callback );
621+ }else {
622+ EMClient .getInstance ().chatroomManager ().asyncSetChatroomAttributes (roomId , attributes , autoDelete , callback );
623+ }
624+ }
625+
626+ public void removeChatRoomAttributes (JSONObject param , String channelName , MethodChannel .Result result ) throws JSONException {
627+ String roomId = param .getString ("roomId" );
628+ List <String > keys = new ArrayList <String >();
629+ if (param .has ("keys" )){
630+ JSONArray array = param .getJSONArray ("keys" );
631+ for (int i = 0 ; i < array .length (); i ++) {
632+ keys .add (array .getString (i ));
633+ }
634+ }
635+
636+ boolean forced = false ;
637+ if (param .has ("forced" )) {
638+ forced = param .getBoolean ("forced" );
639+ }
640+
641+ EMChatRoomManagerWrapper current = this ;
642+ EMResultCallBack callback = (EMResultCallBack <Map <String , Integer >>) (code , value ) -> asyncRunnable (()->{
643+ if (value .size () > 0 || code == EMError .EM_NO_ERROR ) {
644+ current .onSuccess (result , channelName , value );
645+ }else {
646+ HyphenateException e = new HyphenateException (code , "" );
647+ current .onError (result , e );
648+ }
649+ });
650+ if (forced ){
651+ EMClient .getInstance ().chatroomManager ().asyncRemoveChatRoomAttributesFromServerForced (roomId , keys , callback );
652+ }else {
653+ EMClient .getInstance ().chatroomManager ().asyncRemoveChatRoomAttributesFromServer (roomId , keys , callback );
654+ }
655+ }
656+
566657 private void registerEaseListener () {
567658
568659 chatRoomChangeListener = new EMChatRoomChangeListener () {
@@ -574,7 +665,7 @@ public void onWhiteListAdded(String chatRoomId, List<String> whitelist) {
574665 Map <String , Object > data = new HashMap <>();
575666 data .put ("roomId" , chatRoomId );
576667 data .put ("whitelist" , whitelist );
577- data .put ("type" , "onWhiteListAdded " );
668+ data .put ("type" , "chatroomWhiteListAdded " );
578669 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
579670 }
580671 );
@@ -588,7 +679,7 @@ public void onWhiteListRemoved(String chatRoomId, List<String> whitelist) {
588679 Map <String , Object > data = new HashMap <>();
589680 data .put ("roomId" , chatRoomId );
590681 data .put ("whitelist" , whitelist );
591- data .put ("type" , "onWhiteListRemoved " );
682+ data .put ("type" , "chatroomWhiteListRemoved " );
592683 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
593684 }
594685 );
@@ -601,7 +692,7 @@ public void onAllMemberMuteStateChanged(String chatRoomId, boolean isMuted) {
601692 Map <String , Object > data = new HashMap <>();
602693 data .put ("roomId" , chatRoomId );
603694 data .put ("isMuted" , isMuted );
604- data .put ("type" , "onAllMemberMuteStateChanged " );
695+ data .put ("type" , "chatroomAllMemberMuteStateChanged " );
605696 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
606697 }
607698 );
@@ -615,7 +706,7 @@ public void onChatRoomDestroyed(String roomId, String roomName) {
615706 Map <String , Object > data = new HashMap <>();
616707 data .put ("roomId" , roomId );
617708 data .put ("roomName" , roomName );
618- data .put ("type" , "onChatRoomDestroyed " );
709+ data .put ("type" , "chatroomDestroyed " );
619710 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
620711 }
621712 );
@@ -629,7 +720,7 @@ public void onMemberJoined(String roomId, String participant) {
629720 Map <String , Object > data = new HashMap <>();
630721 data .put ("roomId" , roomId );
631722 data .put ("participant" , participant );
632- data .put ("type" , "onMemberJoined " );
723+ data .put ("type" , "chatroomMemberJoined " );
633724 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
634725 }
635726 );
@@ -643,7 +734,7 @@ public void onMemberExited(String roomId, String roomName, String participant) {
643734 data .put ("roomId" , roomId );
644735 data .put ("roomName" , roomName );
645736 data .put ("participant" , participant );
646- data .put ("type" , "onMemberExited " );
737+ data .put ("type" , "chatroomMemberExited " );
647738 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
648739 }
649740 );
@@ -658,7 +749,7 @@ public void onRemovedFromChatRoom(int reason, String roomId, String roomName, St
658749 data .put ("roomId" , roomId );
659750 data .put ("roomName" , roomName );
660751 data .put ("participant" , participant );
661- data .put ("type" , "onRemovedFromChatRoom " );
752+ data .put ("type" , "chatroomRemovedFromChatRoom " );
662753 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
663754 }
664755 );
@@ -673,7 +764,7 @@ public void onMuteListAdded(String chatRoomId, List<String> mutes, long expireTi
673764 data .put ("roomId" , chatRoomId );
674765 data .put ("mutes" , mutes );
675766 data .put ("expireTime" , String .valueOf (expireTime ));
676- data .put ("type" , "onMuteListAdded " );
767+ data .put ("type" , "chatroomMuteListAdded " );
677768 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
678769 }
679770 );
@@ -686,7 +777,7 @@ public void onMuteListRemoved(String chatRoomId, List<String> mutes) {
686777 Map <String , Object > data = new HashMap <>();
687778 data .put ("roomId" , chatRoomId );
688779 data .put ("mutes" , mutes );
689- data .put ("type" , "onMuteListRemoved " );
780+ data .put ("type" , "chatroomMuteListRemoved " );
690781 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
691782 }
692783 );
@@ -700,7 +791,7 @@ public void onAdminAdded(String chatRoomId, String admin) {
700791 Map <String , Object > data = new HashMap <>();
701792 data .put ("roomId" , chatRoomId );
702793 data .put ("admin" , admin );
703- data .put ("type" , "onAdminAdded " );
794+ data .put ("type" , "chatroomAdminAdded " );
704795 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
705796 }
706797 );
@@ -714,7 +805,7 @@ public void onAdminRemoved(String chatRoomId, String admin) {
714805 Map <String , Object > data = new HashMap <>();
715806 data .put ("roomId" , chatRoomId );
716807 data .put ("admin" , admin );
717- data .put ("type" , "onAdminRemoved " );
808+ data .put ("type" , "chatroomAdminRemoved " );
718809 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
719810 }
720811 );
@@ -728,7 +819,7 @@ public void onOwnerChanged(String chatRoomId, String newOwner, String oldOwner)
728819 data .put ("roomId" , chatRoomId );
729820 data .put ("newOwner" , newOwner );
730821 data .put ("oldOwner" , oldOwner );
731- data .put ("type" , "onOwnerChanged " );
822+ data .put ("type" , "chatroomOwnerChanged " );
732823 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
733824 }
734825 );
@@ -742,7 +833,47 @@ public void onAnnouncementChanged(String chatRoomId, String announcement) {
742833 Map <String , Object > data = new HashMap <>();
743834 data .put ("roomId" , chatRoomId );
744835 data .put ("announcement" , announcement );
745- data .put ("type" , "onAnnouncementChanged" );
836+ data .put ("type" , "chatroomAnnouncementChanged" );
837+ post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
838+ }
839+ );
840+ }
841+
842+ @ Override
843+ public void onSpecificationChanged (EMChatRoom room ) {
844+ EMListenerHandle .getInstance ().addHandle (
845+ ()-> {
846+ Map <String , Object > data = new HashMap <>();
847+ data .put ("room" , EMChatRoomHelper .toJson (room ));
848+ data .put ("type" , "onSpecificationChanged" );
849+ post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
850+ }
851+ );
852+ }
853+
854+ @ Override
855+ public void onAttributesUpdate (String chatRoomId , Map <String , String > attributeMap , String from ) {
856+ EMListenerHandle .getInstance ().addHandle (
857+ ()-> {
858+ Map <String , Object > data = new HashMap <>();
859+ data .put ("roomId" , chatRoomId );
860+ data .put ("type" , "chatroomAttributesDidUpdated" );
861+ data .put ("attributes" , attributeMap );
862+ data .put ("fromId" , from );
863+ post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
864+ }
865+ );
866+ }
867+
868+ @ Override
869+ public void onAttributesRemoved (String chatRoomId , List <String > keyList , String from ) {
870+ EMListenerHandle .getInstance ().addHandle (
871+ () -> {
872+ Map <String , Object > data = new HashMap <>();
873+ data .put ("roomId" , chatRoomId );
874+ data .put ("keys" , keyList );
875+ data .put ("type" , "chatroomAttributesDidRemoved" );
876+ data .put ("fromId" , from );
746877 post (() -> channel .invokeMethod (EMSDKMethod .chatRoomChange , data ));
747878 }
748879 );
0 commit comments