From be36e02e66238a10c85abf0076b4a7ed85381b50 Mon Sep 17 00:00:00 2001 From: xuhuixiang Date: Thu, 15 May 2025 17:27:13 +0800 Subject: [PATCH] =?UTF-8?q?=E6=94=B9=E4=BA=86=E4=B8=80=E4=BA=9B=E4=B9=B1?= =?UTF-8?q?=E4=B8=83=E5=85=AB=E7=B3=9F=E7=9A=84=E4=B8=9C=E8=A5=BF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../hbl/lewan/main/chat/ChatTabFragment.java | 53 ++++++++++++++++++- .../java/com/hbl/lewan/model/LoginBean.java | 6 +-- .../ui/normal/page/ConversationFragment.java | 6 +++ .../ui/page/ConversationBaseFragment.java | 1 + .../fun_conversation_view_holder_selector.xml | 4 +- .../src/main/res-fun/values/colors.xml | 2 +- 6 files changed, 64 insertions(+), 8 deletions(-) diff --git a/app/src/main/java/com/hbl/lewan/main/chat/ChatTabFragment.java b/app/src/main/java/com/hbl/lewan/main/chat/ChatTabFragment.java index 346d91d..c84ddbc 100644 --- a/app/src/main/java/com/hbl/lewan/main/chat/ChatTabFragment.java +++ b/app/src/main/java/com/hbl/lewan/main/chat/ChatTabFragment.java @@ -1,6 +1,7 @@ package com.hbl.lewan.main.chat; import static com.netease.yunxin.kit.contactkit.ui.selector.BaseContactSelectorActivity.DEFAULT_MAX_SELECT_COUNT; +import static com.netease.yunxin.kit.conversationkit.ui.common.ConversationConstant.LIB_TAG; import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_CONTACT_SELECTOR_MAX_COUNT; import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.KEY_REQUEST_SELECTOR_NAME_ENABLE; @@ -16,6 +17,8 @@ import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; +import androidx.lifecycle.Observer; +import androidx.lifecycle.ViewModelProvider; import androidx.viewpager2.widget.ViewPager2; import com.hbl.lewan.IMApplication; @@ -48,12 +51,16 @@ import com.netease.yunxin.kit.chatkit.model.ConversationInfo; import com.netease.yunxin.kit.chatkit.repo.ContactRepo; import com.netease.yunxin.kit.chatkit.ui.fun.FunChatForwardSelectDialog; import com.netease.yunxin.kit.common.ui.fragments.BaseFragment; +import com.netease.yunxin.kit.common.ui.viewmodel.FetchResult; +import com.netease.yunxin.kit.common.ui.viewmodel.LoadStatus; import com.netease.yunxin.kit.common.utils.NetworkUtils; import com.netease.yunxin.kit.contactkit.ui.fun.contact.FunContactFragment; import com.netease.yunxin.kit.contactkit.ui.fun.search.FunSearchActivity; import com.netease.yunxin.kit.conversationkit.ui.common.ConversationConstant; import com.netease.yunxin.kit.conversationkit.ui.model.ConversationBean; import com.netease.yunxin.kit.conversationkit.ui.normal.page.ConversationFragment; +import com.netease.yunxin.kit.conversationkit.ui.page.interfaces.IConversationCallback; +import com.netease.yunxin.kit.conversationkit.ui.page.viewmodel.ConversationViewModel; import com.netease.yunxin.kit.corekit.event.EventCenter; import com.netease.yunxin.kit.corekit.event.EventNotify; import com.netease.yunxin.kit.corekit.im.IMKitClient; @@ -84,6 +91,8 @@ public class ChatTabFragment extends BaseFragment { private View mCurrentTab; private View[] tabView; private List fragments = new ArrayList<>(); +// private Observer> unreadCountObserver; + public ConversationViewModel viewModel; // public ConversationViewModel viewModel; @@ -161,6 +170,8 @@ public class ChatTabFragment extends BaseFragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); + viewModel = new ViewModelProvider(this).get(ConversationViewModel.class); + getServicesData(); initView(); // NetworkUtils.registerNetworkStatusChangedListener(networkStateListener); @@ -168,20 +179,24 @@ public class ChatTabFragment extends BaseFragment { // initObserver(); // registerObserver(); // initData(); + +// viewModel.getUnreadCountLiveData().observeForever(unreadCountObserver); + } @Override public void onResume() { super.onResume(); getNotifiesCount(); - if (verifyCount > 0) { +// if (verifyCount > 0) { getNotificationUnreadCount(); - } +// } if (bindBean == null || (!bindBean.getPhoneBind()) || (!bindBean.getPayPasswordSet())) { bindInfo(); } } + BindBean bindBean; private void bindInfo() { @@ -320,6 +335,17 @@ public class ChatTabFragment extends BaseFragment { tabView = new View[]{viewBinding.layoutChatfmAll, viewBinding.layoutChatfmFriends, viewBinding.layoutChatfmGroup, viewBinding.layoutChatfmFollow}; // fragments.add(allConversationFragment = ChatConversationFragment.newInstance(0)); fragments.add(contactFragment = new ConversationFragment()); + contactFragment.setConversationCallback(new IConversationCallback() { + @Override + public void updateUnreadCount(int count) { + if(count>0){ + ((MainActivity) getActivity()).setUnReadChat(count); + }else{ + ((MainActivity) getActivity()).hideUnReadChat(); + } + getNotificationUnreadCount(); + } + }); // fragments.add(friendConversationFragment = ChatConversationFragment.newInstance(1)); // fragments.add(teamConversationFragment = ChatConversationFragment.newInstance(2)); // followListFragment = new FollowListFragment(); @@ -383,6 +409,27 @@ public class ChatTabFragment extends BaseFragment { } }); + + +// +// unreadCountObserver = +// result -> { +// if (result.getLoadStatus() == LoadStatus.Success) { +// ALog.d(LIB_TAG, "unreadCount, Success"); +// if (result.getData() == null) { +// ALog.d(LIB_TAG, "unreadCount, Success null"); +// +// ((MainActivity) getActivity()).hideUnReadChat(); +// } else { +// int number = result.getData(); +// ALog.d(LIB_TAG, "unreadCount, Success null:"+number); +// +// ((MainActivity) getActivity()).setUnReadChat(number); +//// ((ChatTabFragment) getParentFragment()).updateUnRead(number); +// } +// getNotificationUnreadCount(); +// } +// }; } @@ -462,6 +509,8 @@ public class ChatTabFragment extends BaseFragment { public void onDestroyView() { // NetworkUtils.unregisterNetworkStatusChangedListener(networkStateListener); EventCenter.unregisterEventNotify(editConversation); +// viewModel.getUnreadCountLiveData().removeObserver(unreadCountObserver); + super.onDestroyView(); } diff --git a/app/src/main/java/com/hbl/lewan/model/LoginBean.java b/app/src/main/java/com/hbl/lewan/model/LoginBean.java index 8c38fe8..9bf03e7 100644 --- a/app/src/main/java/com/hbl/lewan/model/LoginBean.java +++ b/app/src/main/java/com/hbl/lewan/model/LoginBean.java @@ -243,7 +243,7 @@ public class LoginBean extends RosterElementEntity { public Integer getAllowSearchByPhone() { if(allowSearchByPhone == null){ - return 0; + return 1; } return allowSearchByPhone; } @@ -254,7 +254,7 @@ public class LoginBean extends RosterElementEntity { public Integer getAllowSearchById() { if(allowSearchById == null){ - return 0; + return 1; } return allowSearchById; } @@ -265,7 +265,7 @@ public class LoginBean extends RosterElementEntity { public Integer getAllowAddFriendByGroup() { if(allowSearchById == null){ - return 0; + return 1; } return allowAddFriendByGroup; } diff --git a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/normal/page/ConversationFragment.java b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/normal/page/ConversationFragment.java index 7bad2a8..3918800 100644 --- a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/normal/page/ConversationFragment.java +++ b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/normal/page/ConversationFragment.java @@ -24,6 +24,7 @@ import com.netease.yunxin.kit.conversationkit.ui.databinding.ConversationFragmen import com.netease.yunxin.kit.conversationkit.ui.normal.PopItemFactory; import com.netease.yunxin.kit.conversationkit.ui.normal.ViewHolderFactory; import com.netease.yunxin.kit.conversationkit.ui.page.ConversationBaseFragment; +import com.netease.yunxin.kit.conversationkit.ui.page.interfaces.IConversationCallback; import com.netease.yunxin.kit.corekit.im.utils.RouterConstant; import com.netease.yunxin.kit.corekit.route.XKitRouter; @@ -82,6 +83,11 @@ public class ConversationFragment extends ConversationBaseFragment { }); } + + public void setConversationCallback(IConversationCallback callback) { + super.setConversationCallback(callback); + } + private void loadUIConfig() { if (ConversationKitClient.getConversationUIConfig() == null) { diff --git a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/page/ConversationBaseFragment.java b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/page/ConversationBaseFragment.java index aeebc3e..dd7c372 100644 --- a/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/page/ConversationBaseFragment.java +++ b/conversationkit-ui/src/main/java/com/netease/yunxin/kit/conversationkit/ui/page/ConversationBaseFragment.java @@ -398,6 +398,7 @@ public abstract class ConversationBaseFragment extends BaseFragment implements I conversationCallback.updateUnreadCount( result.getData() == null ? 0 : result.getData()); } + } }; } diff --git a/conversationkit-ui/src/main/res-fun/drawable/fun_conversation_view_holder_selector.xml b/conversationkit-ui/src/main/res-fun/drawable/fun_conversation_view_holder_selector.xml index 63fe5fa..8231f5e 100644 --- a/conversationkit-ui/src/main/res-fun/drawable/fun_conversation_view_holder_selector.xml +++ b/conversationkit-ui/src/main/res-fun/drawable/fun_conversation_view_holder_selector.xml @@ -7,7 +7,7 @@ - + - + \ No newline at end of file diff --git a/conversationkit-ui/src/main/res-fun/values/colors.xml b/conversationkit-ui/src/main/res-fun/values/colors.xml index f235c06..7b37930 100644 --- a/conversationkit-ui/src/main/res-fun/values/colors.xml +++ b/conversationkit-ui/src/main/res-fun/values/colors.xml @@ -3,7 +3,7 @@ #ededed #ededed #4d000000 - #FFFBFB + #ffffff #333333 #7F7B81 #7f7b81