TP-61310 | keyboard open chat (#10172)
Co-authored-by: Shivam Goyal <shivam.goyal@navi.com>
This commit is contained in:
@@ -366,6 +366,12 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
|
||||
naviChatViewModel.showFreeText.observeNonNull(viewLifecycleOwner) { showFreeText ->
|
||||
binding.clFreeText.isVisible = (showFreeText)
|
||||
if (showFreeText) {
|
||||
binding.etFreeText.requestFocus()
|
||||
openKeyboard(context = requireContext(), view = binding.etFreeText) {}
|
||||
} else {
|
||||
hideKeyboard(context = requireContext(), view = binding.etFreeText)
|
||||
}
|
||||
}
|
||||
|
||||
naviChatSharedViewModel.isLanguageSelected.observeNonNull(viewLifecycleOwner) {
|
||||
@@ -887,7 +893,15 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
)
|
||||
)
|
||||
}
|
||||
showFreeText?.let { binding.clFreeText.isVisible = it }
|
||||
showFreeText?.let {
|
||||
binding.clFreeText.isVisible = it
|
||||
if (it) {
|
||||
binding.etFreeText.requestFocus()
|
||||
openKeyboard(context = requireContext(), view = binding.etFreeText) {}
|
||||
} else {
|
||||
hideKeyboard(context = requireContext(), view = binding.etFreeText)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1589,11 +1603,17 @@ class NaviChatFragment : BaseFragment(), WidgetCallback, MessageOperation, Toolb
|
||||
override fun processControllerWidget(naviChatControllerWidget: NaviChatControllerWidget) {
|
||||
when (naviChatControllerWidget.widgetData?.message) {
|
||||
NaviChatControllerEnum.ENABLE_FREE_TEXT.name -> {
|
||||
binding.clFreeText.isVisible = true
|
||||
scrollChatToLatestMessageReceived()
|
||||
if (binding.clFreeText.visibility == GONE) {
|
||||
binding.clFreeText.isVisible = true
|
||||
binding.etFreeText.requestFocus()
|
||||
openKeyboard(context = requireContext(), view = binding.etFreeText) {
|
||||
scrollChatToLatestMessageReceived()
|
||||
}
|
||||
}
|
||||
}
|
||||
NaviChatControllerEnum.DISABLE_FREE_TEXT.name -> {
|
||||
binding.clFreeText.isVisible = false
|
||||
hideKeyboard(context = requireContext(), view = binding.etFreeText)
|
||||
}
|
||||
}
|
||||
naviChatControllerWidget.widgetData?.controllerConfig?.let { config ->
|
||||
|
||||
@@ -0,0 +1,40 @@
|
||||
/*
|
||||
*
|
||||
* * Copyright © 2024 by Navi Technologies Limited
|
||||
* * All rights reserved. Strictly confidential
|
||||
*
|
||||
*/
|
||||
|
||||
package com.navi.chat.utils
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Context
|
||||
import android.os.Handler
|
||||
import android.os.Looper
|
||||
import android.view.View
|
||||
import android.view.inputmethod.InputMethodManager
|
||||
|
||||
fun openKeyboard(context: Context? = null, view: View, onFinish: () -> Unit) {
|
||||
post(view = view, delay = ANIMATION_DURATION) {
|
||||
val imm = context?.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
|
||||
imm.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT)
|
||||
post(view = view, delay = ANIMATION_DURATION, task = onFinish)
|
||||
}
|
||||
}
|
||||
|
||||
fun hideKeyboard(context: Context, view: View) {
|
||||
(context.getSystemService(Activity.INPUT_METHOD_SERVICE) as? InputMethodManager)?.apply {
|
||||
hideSoftInputFromWindow(view.windowToken, 0)
|
||||
}
|
||||
}
|
||||
|
||||
fun post(view: View? = null, delay: Long = 0, task: () -> Unit) {
|
||||
Handler(Looper.getMainLooper())
|
||||
.postDelayed(
|
||||
{
|
||||
if (view == null || view.visibility != View.VISIBLE) return@postDelayed
|
||||
task()
|
||||
},
|
||||
delay
|
||||
)
|
||||
}
|
||||
Reference in New Issue
Block a user