Przeglądaj źródła

feat: 陪玩私聊

DoggyZhang 3 miesięcy temu
rodzic
commit
75b0c9efd8

+ 2 - 3
app/src/main/java/com/adealink/weparty/module/im/IIMService.kt

@@ -1,10 +1,9 @@
 package com.adealink.weparty.module.im
 
+import android.app.Activity
 import com.adealink.frame.startup.IAppStartUpTask
 import com.adealink.weparty.aab.IService
 
 interface IIMService : IService<IIMService>, IAppStartUpTask {
-
-
-
+    fun goSession(activity: Activity, uid: String)
 }

+ 8 - 0
app/src/main/java/com/adealink/weparty/module/im/IMModule.kt

@@ -1,5 +1,6 @@
 package com.adealink.weparty.module.im
 
+import android.app.Activity
 import android.app.Application
 import com.adealink.frame.aab.BaseDynamicModule
 import com.adealink.weparty.R
@@ -32,6 +33,9 @@ object IMModule : BaseDynamicModule<IIMService>(IIMService::class), IIMService {
 
             override fun logout() {
             }
+
+            override fun goSession(activity: Activity, uid: String) {
+            }
         }
     }
 
@@ -55,5 +59,9 @@ object IMModule : BaseDynamicModule<IIMService>(IIMService::class), IIMService {
         getService().logout()
     }
 
+    override fun goSession(activity: Activity, uid: String) {
+        getService().goSession(activity, uid)
+    }
+
 
 }

BIN
app/src/main/res/drawable-xhdpi/common_create_order_button_bg.9.png


+ 8 - 0
app/src/main/res/drawable/common_chat_button_bg.xml

@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="utf-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+
+    <solid android:color="#15E5E2" />
+    <corners android:radius="100dp" />
+
+</shape>

+ 3 - 3
app/src/main/res/drawable/common_create_order_price_bg.xml

@@ -2,9 +2,9 @@
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
     android:shape="rectangle">
 
-    <solid android:color="#141789FF" />
+    <solid android:color="#FFECF6FF" />
     <corners
-        android:bottomLeftRadius="24dp"
-        android:topLeftRadius="24dp" />
+        android:bottomLeftRadius="100dp"
+        android:topLeftRadius="100dp" />
 
 </shape>

+ 21 - 1
module/im/src/main/java/com/adealink/weparty/im/IMServiceImpl.kt

@@ -1,6 +1,8 @@
 package com.adealink.weparty.im
 
+import android.app.Activity
 import android.app.Application
+import com.adealink.frame.router.Router
 import com.adealink.frame.spi.RegisterService
 import com.adealink.weparty.im.constant.OFFICIAL_IMAGE_TEXT_BUSINESS_ID
 import com.adealink.weparty.im.manager.imLoginManager
@@ -8,7 +10,10 @@ import com.adealink.weparty.im.service.TIMAppService
 import com.adealink.weparty.im.session.mesasge.CustomMessageViewHolder
 import com.adealink.weparty.im.session.mesasge.OfficialImageTextMessageBean
 import com.adealink.weparty.module.im.IIMService
+import com.adealink.weparty.module.im.IM
+import com.tencent.imsdk.v2.V2TIMConversation
 import com.tencent.qcloud.tuikit.tuichat.config.TUIChatConfigs
+import com.tencent.qcloud.tuikit.tuisearch.bean.ChatInfo
 
 @RegisterService(value = IIMService::class)
 class IMServiceImpl : IIMService {
@@ -22,7 +27,9 @@ class IMServiceImpl : IIMService {
     override fun appOnCreateMainTask(application: Application) {
         //注册自定义消息类型
         TUIChatConfigs.registerCustomMessage(
-            OFFICIAL_IMAGE_TEXT_BUSINESS_ID, OfficialImageTextMessageBean::class.java, CustomMessageViewHolder::class.java
+            OFFICIAL_IMAGE_TEXT_BUSINESS_ID,
+            OfficialImageTextMessageBean::class.java,
+            CustomMessageViewHolder::class.java
         )
 
         imLoginManager.init(application)
@@ -39,4 +46,17 @@ class IMServiceImpl : IIMService {
     override fun logout() {
 
     }
+
+    override fun goSession(activity: Activity, uid: String) {
+        val chatInfo = ChatInfo()
+        chatInfo.type = ChatInfo.TYPE_C2C
+        chatInfo.id = uid
+        Router.build(activity, IM.Session.PATH)
+            .putExtra(IM.Session.EXTRA_CHAT_TYPE, V2TIMConversation.V2TIM_C2C)
+            .putExtra(IM.Session.EXTRA_CHAT_ID, uid)
+//            .putExtra(IM.Session.EXTRA_CHAT_NAME, conversationInfo.title)
+//            .putExtra(IM.Session.EXTRA_CHAT_DRAFT_TEXT, conversationInfo.draft?.draftText)
+//            .putExtra(IM.Session.EXTRA_CHAT_DRAFT_TIME, conversationInfo.draft?.draftTime)
+            .start()
+    }
 }

+ 0 - 11
module/im/src/main/java/com/adealink/weparty/im/list/SessionHomeListFragment.kt

@@ -6,7 +6,6 @@ import androidx.core.view.updateLayoutParams
 import androidx.fragment.app.viewModels
 import com.adealink.frame.aab.util.getCompatDimension
 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.onClick
 import com.adealink.frame.util.statusBarHeight
@@ -16,7 +15,6 @@ import com.adealink.weparty.im.databinding.FragmentSessionHomeListBinding
 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.adealink.weparty.R as APP_R
 
 
@@ -35,9 +33,6 @@ class SessionHomeListFragment : BaseFragment(R.layout.fragment_session_home_list
         binding.clTopBar.updateLayoutParams<ConstraintLayout.LayoutParams> {
             topMargin = activity.statusBarHeight()
         }
-        binding.ivSearch.onClick {
-            goSearch()
-        }
         binding.ivClearMessage.onClick {
             clearMessage()
         }
@@ -57,12 +52,6 @@ class SessionHomeListFragment : BaseFragment(R.layout.fragment_session_home_list
 
     }
 
-    private fun goSearch() {
-        activity?.let { act ->
-            Router.build(act, Profile.Search.PATH).start()
-        }
-    }
-
     private fun clearMessage() {
         viewModel.clearMessage()
     }

+ 0 - 10
module/im/src/main/res/layout/fragment_session_home_list.xml

@@ -46,16 +46,6 @@
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="parent" />
 
-        <androidx.appcompat.widget.AppCompatImageView
-            android:id="@+id/iv_search"
-            android:layout_width="30dp"
-            android:layout_height="30dp"
-            android:layout_marginEnd="14dp"
-            app:layout_constraintBottom_toBottomOf="parent"
-            app:layout_constraintEnd_toStartOf="@id/iv_clear_message"
-            app:layout_constraintTop_toTopOf="parent"
-            app:srcCompat="@drawable/common_app_search_ic" />
-
         <androidx.appcompat.widget.AppCompatImageView
             android:id="@+id/iv_clear_message"
             android:layout_width="30dp"

+ 11 - 1
module/playmate/src/main/java/com/adealink/weparty/playmate/detail/comp/PlaymateDetailBottomComp.kt

@@ -8,6 +8,7 @@ import com.adealink.frame.util.onClick
 import com.adealink.weparty.commonui.ext.dp
 import com.adealink.weparty.commonui.ext.gone
 import com.adealink.weparty.commonui.ext.show
+import com.adealink.weparty.module.im.IMModule
 import com.adealink.weparty.playmate.data.PlaymateDetailRes
 import com.adealink.weparty.playmate.databinding.LayoutPlaymateDetailBottomBinding
 import com.adealink.weparty.playmate.detail.viewmodel.PlaymateDetailViewModel
@@ -27,10 +28,13 @@ class PlaymateDetailBottomComp(
     }
 
     private fun initView() {
+        binding.root.setPadding(16.dp(), 16.dp(), 16.dp(), activity.naviBarHeight() + 24.dp())
         binding.btnOrder.onClick {
             createOrder()
         }
-        binding.root.setPadding(16.dp(), 16.dp(), 16.dp(), activity.naviBarHeight() + 24.dp())
+        binding.btnChat.onClick {
+            chat()
+        }
     }
 
     private fun observeViewModel() {
@@ -52,4 +56,10 @@ class PlaymateDetailBottomComp(
 
     }
 
+    private fun chat() {
+        val act = activity ?: return
+        val uid = detailViewModel.detailLD.value?.uid ?: return
+        IMModule.goSession(act, uid)
+    }
+
 }

BIN
module/playmate/src/main/res/drawable-xhdpi/playmate_chat_ic.png


+ 49 - 3
module/playmate/src/main/res/layout/layout_playmate_detail_bottom.xml

@@ -9,10 +9,15 @@
     tools:paddingBottom="36dp">
 
     <androidx.constraintlayout.widget.ConstraintLayout
-        android:layout_width="match_parent"
+        android:id="@+id/cl_order"
+        android:layout_width="0dp"
         android:layout_height="@dimen/playmate_detail_bottom_bar_height"
         android:layout_marginTop="16dp"
-        app:layout_constraintBottom_toBottomOf="parent">
+        android:layout_marginEnd="10dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/btn_chat"
+        app:layout_constraintHorizontal_bias="0"
+        app:layout_constraintStart_toStartOf="parent">
 
         <androidx.constraintlayout.widget.ConstraintLayout
             android:id="@+id/cl_price"
@@ -20,8 +25,9 @@
             android:layout_height="0dp"
             android:background="@drawable/common_create_order_price_bg"
             android:paddingStart="20dp"
-            android:paddingEnd="60dp"
+            android:paddingEnd="40dp"
             app:layout_constraintBottom_toBottomOf="@id/btn_order"
+            app:layout_constraintHorizontal_chainStyle="packed"
             app:layout_constraintStart_toStartOf="parent"
             app:layout_constraintTop_toTopOf="@id/btn_order">
 
@@ -56,6 +62,46 @@
             app:layout_constraintStart_toEndOf="@id/cl_price"
             app:layout_constraintTop_toTopOf="parent" />
 
+    </androidx.constraintlayout.widget.ConstraintLayout>
+
+
+    <androidx.constraintlayout.widget.ConstraintLayout
+        android:id="@+id/btn_chat"
+        android:layout_width="wrap_content"
+        android:layout_height="@dimen/playmate_detail_bottom_bar_height"
+        android:background="@drawable/common_chat_button_bg"
+        android:paddingHorizontal="24dp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="parent">
+
+        <androidx.appcompat.widget.AppCompatImageView
+            android:id="@+id/iv_chat"
+            android:layout_width="30dp"
+            android:layout_height="30dp"
+            android:layout_marginEnd="4dp"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toStartOf="@id/tv_chat"
+            app:layout_constraintHorizontal_chainStyle="packed"
+            app:layout_constraintStart_toStartOf="parent"
+            app:layout_constraintTop_toTopOf="parent"
+            app:srcCompat="@drawable/playmate_chat_ic" />
+
+        <androidx.appcompat.widget.AppCompatTextView
+            android:id="@+id/tv_chat"
+            android:layout_width="wrap_content"
+            android:layout_height="48dp"
+            android:fontFamily="@font/poppins_semibold"
+            android:gravity="center"
+            android:includeFontPadding="false"
+            android:text="@string/common_chat"
+            android:textColor="@color/white"
+            android:textSize="16sp"
+            app:layout_constrainedHeight="true"
+            app:layout_constraintBottom_toBottomOf="parent"
+            app:layout_constraintEnd_toEndOf="parent"
+            app:layout_constraintStart_toEndOf="@id/iv_chat"
+            app:layout_constraintTop_toTopOf="parent" />
 
     </androidx.constraintlayout.widget.ConstraintLayout>