Ver Fonte

修复bug

Pq há 3 anos atrás
pai
commit
ec40cd7810

+ 3 - 1
rong_im/common_im_ui/src/main/java/com/common/im/adapter/NoticeListAdapter.java

@@ -6,6 +6,7 @@ import android.widget.ImageView;
 import android.widget.TextView;
 
 import androidx.annotation.NonNull;
+import io.rong.imkit.utils.helper.ChatGroupHelper;
 
 import com.chad.library.adapter.base.BaseQuickAdapter;
 import com.chad.library.adapter.base.module.BaseLoadMoreModule;
@@ -42,7 +43,8 @@ public class NoticeListAdapter extends BaseQuickAdapter<GroupNoticeBean.RowsBean
         TextView tvTitle = helper.getView(R.id.tv_title);
         TextView tvContent = helper.getView(R.id.tv_content);
         TextView tvRead = helper.getView(R.id.tv_read);
-        GlideUtils.INSTANCE.loadImage(getContext(), bean.avatar, ivPortrait, R.drawable.ic_teach_teacher_loading);
+        int chatGroupAvatarFromId = ChatGroupHelper.getChatGroupAvatarFromId(bean.groupId);
+        ivPortrait.setImageResource(chatGroupAvatarFromId);
         tvName.setText(bean.username);
 
         tvTime.setText(DateUtil.dateFormatNoSecond(TextUtils.isEmpty(bean.updateTime) ? bean.createTime : bean.updateTime));

+ 12 - 1
rong_im/common_im_ui/src/main/java/com/common/im/api/IMApi.java

@@ -168,8 +168,18 @@ public interface IMApi {
     @POST(TEACHER_GROUP + "imGroupNotice/create")
     Observable<BaseResponse<Object>> createGroupNotice(@Body RequestBody body);
 
+
+    /**
+     * 修改群公告
+     *
+     * @return
+     */
+    @POST(TEACHER_GROUP + "imGroupNotice/del/{id}")
+    Observable<BaseResponse<String>> noticeDel(@Path("id") String id);
+
     /**
      * 修改群信息
+     *
      * @param body
      * @return
      */
@@ -178,6 +188,7 @@ public interface IMApi {
 
     /**
      * 申请入群列表
+     *
      * @param body
      * @return
      */
@@ -186,6 +197,7 @@ public interface IMApi {
 
     /**
      * 申请入群批量审核
+     *
      * @param body
      * @return
      */
@@ -193,7 +205,6 @@ public interface IMApi {
     Observable<BaseResponse<Object>> doGroupApply(@Body RequestBody body);
 
     /**
-     *
      * @param body
      * @return
      */

+ 2 - 0
rong_im/common_im_ui/src/main/java/com/common/im/contract/NoticeContract.java

@@ -16,6 +16,8 @@ public interface NoticeContract {
         void queryGroupNoticeError(int page);
 
         void updateGroupNoticeSuccess();
+
+        void delGroupNoticeSuccess();
     }
 
     interface Presenter {

+ 18 - 0
rong_im/common_im_ui/src/main/java/com/common/im/presenter/NoticePresenter.java

@@ -11,6 +11,8 @@ import com.cooleshow.base.utils.RequestBodyUtil;
 import org.json.JSONException;
 import org.json.JSONObject;
 
+import io.rong.imkit.api.APIService;
+
 /**
  * 创建日期:2022/6/11 18:09
  *
@@ -89,4 +91,20 @@ public class NoticePresenter extends BasePresenter<NoticeContract.NoticeView> im
 
     }
 
+    public void noticeDel(String id) {
+        addSubscribe(create(IMApi.class).noticeDel(id), new BaseObserver<String>(getView()) {
+            @Override
+            protected void onSuccess(String data) {
+                if (getView() != null) {
+                    getView().delGroupNoticeSuccess();
+                }
+            }
+
+            @Override
+            public void onError(Throwable e) {
+                super.onError(e);
+            }
+        });
+    }
+
 }

+ 29 - 3
rong_im/common_im_ui/src/main/java/com/common/im/ui/activity/NoticeActivity.java

@@ -25,7 +25,10 @@ import com.cooleshow.base.constanst.Constants;
 import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.PopupUtil;
+import com.cooleshow.base.utils.SizeUtils;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
 import com.cooleshow.base.widgets.DensityUtil;
+import com.cooleshow.base.widgets.EmptyViewLayout;
 import com.scwang.smart.refresh.layout.api.RefreshLayout;
 import com.scwang.smart.refresh.layout.listener.OnRefreshListener;
 
@@ -47,9 +50,10 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
 
     private String targetId = "";
 
+
     @Override
     public void onClick(View v) {
-        if (v.getId() == R.id.floatbutton) {
+        if (v.getId() == com.cooleshow.base.R.id.tv_right) {
             ARouter.getInstance().build(RouterPath.ChatCenter.CHAT_GROUP_NOTICE_EDIT)
                     .withString("targetId", targetId)
                     .navigation();
@@ -65,6 +69,9 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
     @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "群公告");
+        viewBinding.toolbarInclude.tvRight.setImageResource(R.drawable.icon_chat_group_notice_add);
+        viewBinding.toolbarInclude.tvRight.setVisibility(View.VISIBLE);
+        viewBinding.toolbarInclude.tvRight.setOnClickListener(this);
         targetId = getIntent().getStringExtra("targetId");
         recyclerView = viewBinding.recyclerView;
         floatbutton = viewBinding.floatbutton;
@@ -80,6 +87,9 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
         LinearLayoutManager manager = new LinearLayoutManager(this);
         recyclerView.setLayoutManager(manager);
         mAdapter = new NoticeListAdapter(noticeData);
+        EmptyViewLayout emptyViewLayout = new EmptyViewLayout(this);
+        emptyViewLayout.setContent(R.drawable.icon_empty_content, "暂无群公告");
+        mAdapter.setEmptyView(emptyViewLayout);
         recyclerView.setAdapter(mAdapter);
 
         mAdapter.getLoadMoreModule().setOnLoadMoreListener(new OnLoadMoreListener() {
@@ -105,6 +115,7 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
                 } else {
                     popuList.add("置顶");
                 }
+                popuList.add("删除");
                 initPopu(popuList, v, bean);
             }
         });
@@ -114,7 +125,7 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
     @Override
     protected void onCreate(@Nullable Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        StatusBarUtil.setStatusBarDarkTheme(this, true);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
     }
 
 
@@ -133,7 +144,7 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
 
     private void initPopu(List<String> popuList, View view, GroupNoticeBean.RowsBean bean) {
         PopupUtil.showInDropWrapNObg(this, R.layout.notice_on_popu, view,
-                DensityUtil.dp2px(this, 20), DensityUtil.dp2px(this, 20), (view1, popupWindow) -> {
+                SizeUtils.dp2px(20), SizeUtils.dp2px(20), (view1, popupWindow) -> {
                     RecyclerView recyclerView = view1.findViewById(R.id.recyclerView);
                     LinearLayoutManager linearLayoutManager = new LinearLayoutManager(NoticeActivity.this);
                     recyclerView.setLayoutManager(linearLayoutManager);
@@ -158,6 +169,9 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
                                     presenter.noticeUpdate(bean.id, targetId, bean.title, bean.content, false);
                                 }
                             }
+                            if (position == 2) {
+                                presenter.noticeDel(String.valueOf(bean.id));
+                            }
                             popupWindow.dismiss();
                         }
                     });
@@ -231,6 +245,18 @@ public class NoticeActivity extends BaseMVPActivity<ActivityNoticeBinding, Notic
 
     @Override
     public void updateGroupNoticeSuccess() {
+        if (!checkActivityExist()) {
+            return;
+        }
+        currentPage = 1;
+        queryData();
+    }
+
+    @Override
+    public void delGroupNoticeSuccess() {
+        if (!checkActivityExist()) {
+            return;
+        }
         currentPage = 1;
         queryData();
     }

+ 10 - 0
rong_im/common_im_ui/src/main/java/com/common/im/ui/activity/NoticeEditActivity.java

@@ -1,6 +1,7 @@
 package com.common.im.ui.activity;
 
 import android.content.Intent;
+import android.os.Bundle;
 import android.text.TextUtils;
 import android.view.View;
 import android.widget.Button;
@@ -15,6 +16,9 @@ import com.cooleshow.base.router.RouterPath;
 import com.cooleshow.base.ui.activity.BaseMVPActivity;
 import com.cooleshow.base.utils.ToastUtil;
 import com.cooleshow.base.utils.ToastUtils;
+import com.cooleshow.base.utils.helper.QMUIStatusBarHelper;
+
+import androidx.annotation.Nullable;
 
 /**
  * 创建日期:2022/6/11 19:25
@@ -40,6 +44,12 @@ public class NoticeEditActivity extends BaseMVPActivity<ActivityNoticeEditBindin
     private long id;
 
     @Override
+    protected void onCreate(@Nullable Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        QMUIStatusBarHelper.setStatusBarLightMode(this);
+    }
+
+    @Override
     protected void initView() {
         initMidTitleToolBar(viewBinding.toolbarInclude.toolbar, "群公告编辑");
         etNotice = viewBinding.etNotice;

BIN
rong_im/common_im_ui/src/main/res/drawable-xhdpi/icon_chat_group_notice_add.png


BIN
rong_im/common_im_ui/src/main/res/drawable-xxhdpi/icon_chat_group_notice_add.png


+ 6 - 9
rong_im/common_im_ui/src/main/res/layout/activity_notice.xml

@@ -1,11 +1,9 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    android:background="@color/color_f6f8f9">
+    android:layout_height="match_parent">
 
     <include
         android:id="@+id/toolbar_include"
@@ -27,9 +25,9 @@
         <androidx.recyclerview.widget.RecyclerView
             android:id="@+id/recyclerView"
             android:layout_width="match_parent"
-            android:layout_height="wrap_content"
+            android:layout_height="match_parent"
             android:scrollbars="none"
-            tools:listitem="@layout/notice_list_item"/>
+            tools:listitem="@layout/notice_list_item" />
     </com.scwang.smart.refresh.layout.SmartRefreshLayout>
 
     <ImageView
@@ -40,8 +38,7 @@
         android:layout_marginBottom="71dp"
         android:clickable="true"
         android:src="@drawable/ic_add_notice"
-        android:visibility="visible"
+        android:visibility="gone"
         app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toEndOf="parent"
-        />
+        app:layout_constraintEnd_toEndOf="parent" />
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 13 - 19
rong_im/common_im_ui/src/main/res/layout/notice_list_item.xml

@@ -1,20 +1,20 @@
 <?xml version="1.0" encoding="utf-8"?>
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
-    android:layout_marginBottom="@dimen/dp_15"
+    android:layout_marginTop="@dimen/dp_10"
     android:background="@color/white">
 
-    <de.hdodenhof.circleimageview.CircleImageView
+    <com.cooleshow.base.widgets.QMUIRadiusImageView
         android:id="@+id/iv_portrait"
         android:layout_width="@dimen/dp_60"
         android:layout_height="@dimen/dp_60"
         android:layout_marginStart="16dp"
         android:layout_marginTop="16dp"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
+        app:layout_constraintTop_toTopOf="parent"
+        app:qmui_corner_radius="5dp" />
 
     <TextView
         android:id="@+id/tv_name"
@@ -29,8 +29,7 @@
         android:textSize="@dimen/dp_18"
         app:layout_constraintEnd_toStartOf="@id/iv_setting"
         app:layout_constraintStart_toEndOf="@id/iv_portrait"
-        app:layout_constraintTop_toTopOf="@id/iv_portrait"
-        />
+        app:layout_constraintTop_toTopOf="@id/iv_portrait" />
 
     <TextView
         android:id="@+id/tv_time"
@@ -43,8 +42,7 @@
         android:textColor="@color/color_666666"
         android:textSize="@dimen/dp_14"
         app:layout_constraintStart_toEndOf="@id/iv_portrait"
-        app:layout_constraintTop_toBottomOf="@id/tv_name"
-        />
+        app:layout_constraintTop_toBottomOf="@id/tv_name" />
 
     <TextView
         android:id="@+id/tv_roof"
@@ -60,8 +58,7 @@
         android:textColor="@color/color_fa6400"
         android:textSize="@dimen/dp_14"
         app:layout_constraintStart_toEndOf="@id/tv_time"
-        app:layout_constraintTop_toBottomOf="@id/tv_name"
-        />
+        app:layout_constraintTop_toBottomOf="@id/tv_name" />
 
     <ImageView
         android:id="@+id/iv_setting"
@@ -69,10 +66,10 @@
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/dp_12"
         android:padding="@dimen/dp_15"
-        android:visibility="visible"
         android:src="@drawable/ic_notice_setting"
+        android:visibility="visible"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"/>
+        app:layout_constraintTop_toTopOf="parent" />
 
     <TextView
         android:id="@+id/tv_title"
@@ -86,8 +83,7 @@
         android:textStyle="bold"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="@id/iv_portrait"
-        app:layout_constraintTop_toBottomOf="@id/iv_portrait"
-        />
+        app:layout_constraintTop_toBottomOf="@id/iv_portrait" />
 
     <TextView
         android:id="@+id/tv_content"
@@ -102,8 +98,7 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="@id/tv_title"
-        app:layout_constraintTop_toBottomOf="@id/tv_title"
-        />
+        app:layout_constraintTop_toBottomOf="@id/tv_title" />
 
     <TextView
         android:id="@+id/tv_read"
@@ -121,6 +116,5 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toStartOf="@id/tv_content"
-        app:layout_constraintTop_toBottomOf="@id/tv_content"
-        />
+        app:layout_constraintTop_toBottomOf="@id/tv_content" />
 </androidx.constraintlayout.widget.ConstraintLayout>

+ 8 - 8
rong_im/common_im_ui/src/main/res/layout/notice_on_popu.xml

@@ -1,15 +1,15 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-              xmlns:tools="http://schemas.android.com/tools"
-              android:layout_width="wrap_content"
-              android:layout_height="wrap_content"
-              android:background="@drawable/ic_already_on_popu"
-              android:orientation="vertical">
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="100dp"
+    android:layout_height="wrap_content"
+    android:background="@drawable/ic_already_on_popu"
+    android:orientation="vertical">
+
     <androidx.recyclerview.widget.RecyclerView
         android:id="@+id/recyclerView"
-        android:layout_width="wrap_content"
+        android:layout_width="100dp"
         android:layout_height="wrap_content"
         android:overScrollMode="never"
-        tools:listitem="@layout/notice_popu_list_item"
-        />
+        tools:listitem="@layout/notice_popu_list_item" />
 </LinearLayout>

+ 2 - 2
rong_im/common_im_ui/src/main/res/layout/notice_popu_list_item.xml

@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
+    android:layout_width="wrap_content"
     android:layout_height="wrap_content"
     android:orientation="vertical">
 
@@ -14,7 +14,7 @@
         android:paddingEnd="@dimen/dp_20"
         android:paddingBottom="@dimen/dp_18"
         android:textColor="@color/black_333"
-        android:textSize="@dimen/dp_16" />
+        android:textSize="@dimen/dp_14" />
 
     <View
         android:layout_width="match_parent"

+ 3 - 0
rong_im/kit/src/main/java/io/rong/imkit/conversation/RongConversationActivity.java

@@ -134,6 +134,9 @@ public class RongConversationActivity extends RongBaseActivity {
         RongUserInfoManager.getInstance().getAllUsersLiveData().observe(this, new Observer<List<User>>() {
             @Override
             public void onChanged(List<User> users) {
+                if (users == null) {
+                    return;
+                }
                 for (int i = 0; i < users.size(); i++) {
                     User user = users.get(i);
                     if (TextUtils.equals(mTargetId, user.id)) {