|
|
@@ -1,18 +1,13 @@
|
|
|
package com.adealink.weparty.im.list
|
|
|
|
|
|
-import android.content.BroadcastReceiver
|
|
|
-import android.content.Context
|
|
|
-import android.content.Intent
|
|
|
-import android.content.IntentFilter
|
|
|
import android.view.View
|
|
|
-import androidx.localbroadcastmanager.content.LocalBroadcastManager
|
|
|
+import androidx.fragment.app.activityViewModels
|
|
|
import androidx.recyclerview.widget.LinearLayoutManager
|
|
|
import androidx.recyclerview.widget.RecyclerView
|
|
|
import com.adealink.frame.base.fastLazy
|
|
|
import com.adealink.frame.mvvm.view.viewBinding
|
|
|
import com.adealink.frame.router.Router
|
|
|
import com.adealink.frame.router.annotation.RouterUri
|
|
|
-import com.adealink.frame.util.AppUtil
|
|
|
import com.adealink.weparty.commonui.BaseFragment
|
|
|
import com.adealink.weparty.commonui.ext.dp
|
|
|
import com.adealink.weparty.commonui.recycleview.itemdecoration.VerticalSpaceItemDecoration
|
|
|
@@ -24,13 +19,16 @@ import com.adealink.weparty.im.databinding.FragmentSessionListBinding
|
|
|
import com.adealink.weparty.im.list.adapter.SessionListAdapter
|
|
|
import com.adealink.weparty.im.list.adapter.viewbinder.OfficialListItemViewBinder
|
|
|
import com.adealink.weparty.im.list.adapter.viewbinder.SessionListItemViewBinder
|
|
|
+import com.adealink.weparty.im.list.viewmodel.SessionListViewModel
|
|
|
+import com.adealink.weparty.im.viewmodel.IMViewModelFactory
|
|
|
import com.adealink.weparty.module.im.IM
|
|
|
+import com.adealink.weparty.module.profile.Profile
|
|
|
import com.tencent.imsdk.v2.V2TIMConversation
|
|
|
-import com.tencent.qcloud.tuicore.TUIConstants
|
|
|
import com.tencent.qcloud.tuikit.tuiconversation.bean.ConversationInfo
|
|
|
import com.tencent.qcloud.tuikit.tuiconversation.minimalistui.interfaces.OnConversationAdapterListener
|
|
|
import com.tencent.qcloud.tuikit.tuiconversation.minimalistui.util.TUIConversationUtils
|
|
|
import com.tencent.qcloud.tuikit.tuiconversation.presenter.ConversationPresenter
|
|
|
+import kotlin.getValue
|
|
|
|
|
|
|
|
|
@RouterUri(
|
|
|
@@ -43,12 +41,11 @@ class SessionListFragment : BaseFragment(R.layout.fragment_session_list),
|
|
|
private val binding by viewBinding(FragmentSessionListBinding::bind)
|
|
|
private val presenter: ConversationPresenter by fastLazy { ConversationPresenter() }
|
|
|
private val sessionAdapter: SessionListAdapter by fastLazy { SessionListAdapter() }
|
|
|
- private lateinit var unreadCountReceiver: BroadcastReceiver
|
|
|
+ private val sessionListViewModel by activityViewModels<SessionListViewModel> { IMViewModelFactory() }
|
|
|
|
|
|
override fun initViews() {
|
|
|
super.initViews()
|
|
|
initSessionList()
|
|
|
- initUnreadCountReceiver()
|
|
|
}
|
|
|
|
|
|
override fun initComponents() {
|
|
|
@@ -65,7 +62,9 @@ class SessionListFragment : BaseFragment(R.layout.fragment_session_list),
|
|
|
)
|
|
|
|
|
|
sessionAdapter.register(OfficialListItemViewBinder(this))
|
|
|
- sessionAdapter.register(SessionListItemViewBinder(this))
|
|
|
+ sessionAdapter.register(SessionListItemViewBinder(this, { uid ->
|
|
|
+ onAvatarClick(uid)
|
|
|
+ }))
|
|
|
sessionAdapter.mOnConversationAdapterListener = this
|
|
|
|
|
|
presenter.setAdapter(sessionAdapter)
|
|
|
@@ -73,24 +72,8 @@ class SessionListFragment : BaseFragment(R.layout.fragment_session_list),
|
|
|
presenter.setShowType(ConversationPresenter.SHOW_TYPE_CONVERSATION_LIST_WITH_FOLD)
|
|
|
binding.conversationLayout.adapter = sessionAdapter
|
|
|
binding.conversationLayout.setPresenter(presenter)
|
|
|
- }
|
|
|
-
|
|
|
- private fun initUnreadCountReceiver() {
|
|
|
- unreadCountReceiver = object : BroadcastReceiver() {
|
|
|
- override fun onReceive(context: Context?, intent: Intent) {
|
|
|
- val unreadCount = intent.getLongExtra(TUIConstants.UNREAD_COUNT_EXTRA, 0)
|
|
|
- if (unreadCount > 0) {
|
|
|
- // TODO: 更新未读数
|
|
|
-// isShowReadAllButton = true
|
|
|
- } else {
|
|
|
-// isShowReadAllButton = false
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- val unreadCountFilter = IntentFilter()
|
|
|
- unreadCountFilter.addAction(TUIConstants.CONVERSATION_UNREAD_COUNT_ACTION)
|
|
|
- LocalBroadcastManager.getInstance(AppUtil.appContext)
|
|
|
- .registerReceiver(unreadCountReceiver, unreadCountFilter)
|
|
|
+ sessionListViewModel.setPresenter(presenter)
|
|
|
+ sessionListViewModel.setPresenter(presenter)
|
|
|
}
|
|
|
|
|
|
override fun onResume() {
|
|
|
@@ -102,12 +85,14 @@ class SessionListFragment : BaseFragment(R.layout.fragment_session_list),
|
|
|
|
|
|
override fun onDestroyView() {
|
|
|
super.onDestroyView()
|
|
|
- unreadCountReceiver?.let { receiver ->
|
|
|
- LocalBroadcastManager.getInstance(AppUtil.appContext).unregisterReceiver(receiver)
|
|
|
- }
|
|
|
presenter.destroy()
|
|
|
}
|
|
|
|
|
|
+ override fun observeViewModel() {
|
|
|
+ super.observeViewModel()
|
|
|
+ sessionListViewModel
|
|
|
+ }
|
|
|
+
|
|
|
override fun onItemClick(
|
|
|
view: View?,
|
|
|
viewType: Int,
|
|
|
@@ -156,6 +141,7 @@ class SessionListFragment : BaseFragment(R.layout.fragment_session_list),
|
|
|
}
|
|
|
|
|
|
override fun onConversationChanged(dataSource: List<ConversationInfo?>?) {
|
|
|
+ sessionListViewModel.loadConversationUserInfo(dataSource)
|
|
|
}
|
|
|
|
|
|
//标记为"未读"(无此功能)
|
|
|
@@ -186,4 +172,11 @@ class SessionListFragment : BaseFragment(R.layout.fragment_session_list),
|
|
|
|
|
|
}
|
|
|
|
|
|
+ private fun onAvatarClick(uid: String) {
|
|
|
+ val act = activity ?: return
|
|
|
+ Router.build(act, Profile.UserProfile.PATH)
|
|
|
+ .putExtra(Profile.Common.EXTRA_UID, uid)
|
|
|
+ .start()
|
|
|
+ }
|
|
|
+
|
|
|
}
|