TP-61310 | keyboard open chat (#10172)

Co-authored-by: Shivam Goyal <shivam.goyal@navi.com>
This commit is contained in:
Sayed Owais Ali
2024-03-26 16:23:04 +05:30
committed by GitHub
parent b28ee7a4a0
commit c9cb8624d1
2 changed files with 63 additions and 3 deletions

View File

@@ -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 ->

View File

@@ -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
)
}