瀏覽代碼

增加新版单聊页面,增加接口校验账号状态流程

Pq 5 月之前
父節點
當前提交
27ba320d28

+ 2 - 1
TUIKit/TUICore/tuicore/src/main/java/com/tencent/qcloud/tuicore/TUIConstants.java

@@ -112,7 +112,8 @@ public final class TUIConstants {
         public static final String EVENT_SUB_KEY_SEND_MESSAGE_FAILED = "eventSubKeySendMessageFailed";
         public static final String EVENT_SUB_KEY_REPLY_MESSAGE_SUCCESS = "eventSubKeyReplyMessageSuccess";
 
-        public static final String C2C_CHAT_ACTIVITY_NAME = "TUIC2CChatActivity";
+//        public static final String C2C_CHAT_ACTIVITY_NAME = "TUIC2CChatActivity";
+        public static final String C2C_CHAT_ACTIVITY_NAME = "TUIC2CChatActivityV2";
 //        public static final String GROUP_CHAT_ACTIVITY_NAME = "TUIGroupChatActivity";
         public static final String GROUP_CHAT_ACTIVITY_NAME = "TUIChatGroupActivityV2";
         public static final String CHAT_ID = "chatId";

+ 6 - 0
chatModule/src/main/AndroidManifest.xml

@@ -68,6 +68,12 @@
             android:windowSoftInputMode="adjustNothing|stateHidden"/>
 
         <activity
+            android:name=".ui.TUIC2CChatActivityV2"
+            android:launchMode="singleTask"
+            android:screenOrientation="portrait"
+            android:windowSoftInputMode="adjustNothing|stateHidden" />
+
+        <activity
             android:name=".ui.CreateGroupActivity"
             android:windowSoftInputMode="adjustPan"
             android:configChanges="orientation|screenSize|keyboardHidden"

+ 9 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/api/IMApi.java

@@ -57,6 +57,15 @@ public interface IMApi {
     @POST("{group_name}" + "/imGroup/getDetail/{groupId}")
     Observable<BaseResponse<IMGroupInfo>> queryGroupDetail(@Path("groupId") String groupId,@Path("group_name")String group_name);
 
+
+
+    /**
+     * 查询群详情
+     *
+     * @returnClassListAdapter
+     */
+    @POST("{group_name}" + "/imUserFriend/getMessageUser/{imUserId}")
+    Observable<BaseResponse<IMUserInfo>> queryUserDetail(@Path("imUserId") String imUserId,@Path("group_name")String group_name);
     /**
      * 获取群成员列表-学员
      *

+ 9 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/bean/IMUserInfo.java

@@ -29,6 +29,15 @@ public class IMUserInfo {
     private String extra;
     private String imFriendId;
     private VipBean userVip;
+    private boolean delFlag;
+
+    public boolean isDelFlag() {
+        return delFlag;
+    }
+
+    public void setDelFlag(boolean delFlag) {
+        this.delFlag = delFlag;
+    }
 
     public String getFriendType() {
         return friendType;

+ 113 - 0
chatModule/src/main/java/com/cooleshow/chatmodule/ui/TUIC2CChatActivityV2.java

@@ -0,0 +1,113 @@
+package com.cooleshow.chatmodule.ui;
+
+import android.text.TextUtils;
+import android.view.View;
+
+import com.cooleshow.base.common.BaseConstant;
+import com.cooleshow.base.data.net.BaseResponse;
+import com.cooleshow.base.data.net.RetrofitFactory;
+import com.cooleshow.base.utils.LOG;
+import com.cooleshow.base.widgets.dialog.CommonDialog;
+import com.cooleshow.chatmodule.api.IMApi;
+import com.cooleshow.chatmodule.bean.IMGroupInfo;
+import com.cooleshow.chatmodule.bean.IMUserInfo;
+import com.cooleshow.chatmodule.manager.IMCenter;
+import com.tencent.qcloud.tuicore.TUIConstants;
+import com.tencent.qcloud.tuikit.timcommon.component.interfaces.IUIKitCallback;
+import com.tencent.qcloud.tuikit.tuichat.bean.ChatInfo;
+import com.tencent.qcloud.tuikit.tuichat.classicui.page.TUIC2CChatActivity;
+
+import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers;
+import io.reactivex.rxjava3.annotations.NonNull;
+import io.reactivex.rxjava3.core.Observable;
+import io.reactivex.rxjava3.core.Observer;
+import io.reactivex.rxjava3.disposables.Disposable;
+import io.reactivex.rxjava3.schedulers.Schedulers;
+
+/**
+ * Author by pq, Date on 2024/9/18.
+ */
+public class TUIC2CChatActivityV2 extends TUIC2CChatActivity {
+
+    private String conversationId;
+    private CommonDialog mTipdialog;
+
+    @Override
+    public void initChat(ChatInfo chatInfo) {
+        super.initChat(chatInfo);
+        LOG.i("TUIC2CChatActivityV2","id:"+chatInfo.getId());
+        conversationId = getIntent().getStringExtra(TUIConstants.TUIChat.CONVERSATION_ID);
+        if(chatInfo!=null && !TextUtils.isEmpty(chatInfo.getId())){
+            checkUserStatus(chatInfo.getId());
+        }
+    }
+
+
+    private void checkUserStatus(String targetId) {
+        //根据用户编号获取用户基本信息
+        Observable<BaseResponse<IMUserInfo>> observable = RetrofitFactory.Companion.getInstance().create(IMApi.class).queryUserDetail(targetId,BaseConstant.CLIENT_API_GROUP_NAME);
+        observable.subscribeOn(Schedulers.newThread())
+                .observeOn(AndroidSchedulers.mainThread())
+                .subscribe(new Observer<BaseResponse<IMUserInfo>>() {
+                    @Override
+                    public void onSubscribe(@NonNull Disposable d) {
+
+                    }
+
+                    @Override
+                    public void onNext(@NonNull BaseResponse<IMUserInfo> updateAppBeanBaseResponse) {
+                        if (updateAppBeanBaseResponse != null && updateAppBeanBaseResponse.getData()!=null) {
+                            IMUserInfo data = updateAppBeanBaseResponse.getData();
+                            if (data.isDelFlag()) {
+                                showTipDialog("该用户已注销,是否删除会话?");
+                            }
+                        }
+                    }
+
+                    @Override
+                    public void onError(@NonNull Throwable e) {
+                        e.printStackTrace();
+                    }
+
+                    @Override
+                    public void onComplete() {
+
+                    }
+                });
+    }
+
+    private void showTipDialog(String tip) {
+        if (TextUtils.isEmpty(conversationId)) {
+            return;
+        }
+        if (mTipdialog == null) {
+            mTipdialog = new CommonDialog(this);
+        }
+        if (!mTipdialog.isShowing()) {
+            mTipdialog.show();
+        }
+        mTipdialog.setOnCancelClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                mTipdialog.dismiss();
+            }
+        });
+        mTipdialog.setOnConfirmClickListener(new View.OnClickListener() {
+            @Override
+            public void onClick(View v) {
+                delConversation();
+            }
+        });
+        mTipdialog.setTitle("提示");
+        mTipdialog.setContent(tip);
+    }
+
+    private void delConversation() {
+        IMCenter.getInstance().deleteConversation(conversationId, new IUIKitCallback<Void>() {
+            @Override
+            public void onSuccess(Void data) {
+                finish();
+            }
+        });
+    }
+}