@@ -3,10 +3,12 @@ package io.trtc.tuikit.atomicx.callview.public.transcriber
33import android.content.Context
44import android.view.LayoutInflater
55import android.widget.FrameLayout
6+ import android.widget.TextView
67import androidx.constraintlayout.utils.widget.ImageFilterButton
78import androidx.core.view.isVisible
89import io.trtc.tuikit.atomicx.R
910import io.trtc.tuikit.atomicx.ai.TranscriberView
11+ import io.trtc.tuikit.atomicxcore.api.ai.AITranscriberStore
1012import io.trtc.tuikit.atomicxcore.api.ai.SourceLanguage
1113import io.trtc.tuikit.atomicxcore.api.ai.TranslationLanguage
1214import io.trtc.tuikit.atomicxcore.api.call.CallParticipantStatus
@@ -22,6 +24,7 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
2224 private var subscribeStateJob: Job ? = null
2325 private var btnShowTranscriber: ImageFilterButton ? = null
2426 private var transcriberView: TranscriberView ? = null
27+ private var emptyHintView: TextView ? = null
2528
2629 init {
2730 initView()
@@ -32,6 +35,7 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
3235 subscribeStateJob = CoroutineScope (Dispatchers .Main ).launch {
3336 supervisorScope {
3437 launch { observeSelfInfo() }
38+ launch { observeRealtimeMessages() }
3539 }
3640 }
3741 }
@@ -45,6 +49,8 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
4549 LayoutInflater .from(context).inflate(R .layout.callview_ai_transcriber, this )
4650 btnShowTranscriber = findViewById(R .id.call_btn_ai_transcriber)
4751 transcriberView = findViewById(R .id.call_view_ai_transcriber)
52+ emptyHintView = findViewById(R .id.call_tv_ai_transcriber_empty_hint)
53+
4854
4955 btnShowTranscriber?.setOnClickListener {
5056 val isVisible = transcriberView?.isVisible == false
@@ -53,6 +59,7 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
5359 else R .drawable.callview_ic_ai_transcriber_off
5460 )
5561 transcriberView?.isVisible = isVisible
62+ updateHintViewVisible()
5663 }
5764 }
5865
@@ -66,6 +73,19 @@ class CallTranscriberView(context: Context): FrameLayout(context) {
6673 TranscriberView .currentTranslationLanguage = TranslationLanguage .ENGLISH
6774 TranscriberView .isBilingualEnabled = true
6875 }
76+ updateHintViewVisible()
77+ }
78+ }
79+
80+ private suspend fun observeRealtimeMessages () {
81+ AITranscriberStore .shared.transcriberState.realtimeMessageList.collect { messages ->
82+ updateHintViewVisible()
6983 }
7084 }
85+
86+ private fun updateHintViewVisible () {
87+ val isEmpty = AITranscriberStore .shared.transcriberState.realtimeMessageList.value.isEmpty()
88+ val isShow = transcriberView?.isVisible == true
89+ emptyHintView?.isVisible = isShow && isEmpty
90+ }
7191}
0 commit comments