From 7259faa67fe3ec318a37b9170cd30cfdc32bf6d6 Mon Sep 17 00:00:00 2001 From: Shuchi Dwivedi Date: Tue, 21 Feb 2023 15:05:52 +0530 Subject: [PATCH] configurable typing cues delay (#5437) Co-authored-by: shuchi --- .../chat/models/ChatConfigConstructedResponse.kt | 13 +++++++++++++ .../com/navi/chat/models/ChatConfigResponse.kt | 7 +++++-- .../navi/chat/ui/fragments/NaviChatFragment.kt | 12 +++++++++--- .../navi/chat/viewmodels/NaviChatViewModel.kt | 16 +++++++++++++--- 4 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 navi-chat/src/main/java/com/navi/chat/models/ChatConfigConstructedResponse.kt diff --git a/navi-chat/src/main/java/com/navi/chat/models/ChatConfigConstructedResponse.kt b/navi-chat/src/main/java/com/navi/chat/models/ChatConfigConstructedResponse.kt new file mode 100644 index 0000000000..91eca22398 --- /dev/null +++ b/navi-chat/src/main/java/com/navi/chat/models/ChatConfigConstructedResponse.kt @@ -0,0 +1,13 @@ +/* + * + * * Copyright © 2023 by Navi Technologies Limited + * * All rights reserved. Strictly confidential + * + */ + +package com.navi.chat.models + +data class ChatConfigConstructedResponse( + val fileSizeInKB: HashMap?, + val botTypingCuesDelayInMs: Long? +) diff --git a/navi-chat/src/main/java/com/navi/chat/models/ChatConfigResponse.kt b/navi-chat/src/main/java/com/navi/chat/models/ChatConfigResponse.kt index dd7119c382..739ea8e949 100644 --- a/navi-chat/src/main/java/com/navi/chat/models/ChatConfigResponse.kt +++ b/navi-chat/src/main/java/com/navi/chat/models/ChatConfigResponse.kt @@ -1,14 +1,17 @@ /* * - * * Copyright © 2022 by Navi Technologies Limited + * * Copyright © 2022-2023 by Navi Technologies Limited * * All rights reserved. Strictly confidential * */ package com.navi.chat.models +import com.google.gson.annotations.SerializedName + data class ChatConfigResponse( - val fileUpload: FileUpload? + @SerializedName("fileUpload") val fileUpload: FileUpload? = null, + @SerializedName("botTypingCuesDelayInMs") val botTypingCuesDelayInMs: Int? = null ) data class FileUpload( diff --git a/navi-chat/src/main/java/com/navi/chat/ui/fragments/NaviChatFragment.kt b/navi-chat/src/main/java/com/navi/chat/ui/fragments/NaviChatFragment.kt index e2f95c6b24..bd6696d854 100644 --- a/navi-chat/src/main/java/com/navi/chat/ui/fragments/NaviChatFragment.kt +++ b/navi-chat/src/main/java/com/navi/chat/ui/fragments/NaviChatFragment.kt @@ -98,6 +98,7 @@ class NaviChatFragment : ChatBaseFragment(), WidgetCallback, MessageOperation, T private var shouldShowChatResolutionWidget: Boolean = false private var csatWidgetData: NaviChatCsatRatingWidget? = null private var chatResolutionStatusWidget: NaviChatResolutionStatusWidget? = null + private var delayForTypingCuesForBot = 1000L @Inject lateinit var naviChatViewModel: NaviChatViewModel @@ -340,7 +341,13 @@ class NaviChatFragment : ChatBaseFragment(), WidgetCallback, MessageOperation, T naviChatViewModel.naviChatConfigResponse.observeNonNull(viewLifecycleOwner) { fileSizes.clear() - fileSizes.putAll(it) + it?.let { + fileSizes.putAll(it.fileSizeInKB.orEmpty()) + it.botTypingCuesDelayInMs?.let { botDelayInMs -> + delayForTypingCuesForBot = botDelayInMs + Timber.d("Updated delayForTypingCuesForBot to $botDelayInMs") + } + } } viewLifecycleOwner.lifecycleScope.launch { @@ -1002,7 +1009,7 @@ class NaviChatFragment : ChatBaseFragment(), WidgetCallback, MessageOperation, T widgetModel.rt_created_at ) }, - DELAY_TO_HIDE_TYPING_FOR_BOT + delayForTypingCuesForBot ) } } else { @@ -1147,6 +1154,5 @@ class NaviChatFragment : ChatBaseFragment(), WidgetCallback, MessageOperation, T private const val DELAY_TO_SCROLL = 200L private const val RECYCLER_VIEW_BOOT_DELAY = 3000L private const val DELAY_TO_HIDE_TYPING = 10000L - private const val DELAY_TO_HIDE_TYPING_FOR_BOT = 3000L } } diff --git a/navi-chat/src/main/java/com/navi/chat/viewmodels/NaviChatViewModel.kt b/navi-chat/src/main/java/com/navi/chat/viewmodels/NaviChatViewModel.kt index 43a200c25b..2c57532f2a 100644 --- a/navi-chat/src/main/java/com/navi/chat/viewmodels/NaviChatViewModel.kt +++ b/navi-chat/src/main/java/com/navi/chat/viewmodels/NaviChatViewModel.kt @@ -18,6 +18,7 @@ import com.navi.base.utils.orZero import com.navi.chat.base.ChatBaseVM import com.navi.chat.db.utils.getDisplayableMessages import com.navi.chat.di.scopes.NaviChatScope +import com.navi.chat.models.ChatConfigConstructedResponse import com.navi.chat.models.ChatConfigResponse import com.navi.chat.models.response.NaviChatInitiateResponse import com.navi.chat.repositories.NaviChatRepository @@ -50,8 +51,8 @@ constructor(private val naviChatRepository: NaviChatRepository, private val cont val chatHistoryMessages: LiveData>> get() = _chatHistoryMessages - private val _naviChatConfigResponse = MutableLiveData>() - val naviChatConfigResponse: LiveData> + private val _naviChatConfigResponse = MutableLiveData() + val naviChatConfigResponse: LiveData get() = _naviChatConfigResponse private var _downloadSuccessSharedFlow = MutableSharedFlow(0) @@ -217,11 +218,20 @@ constructor(private val naviChatRepository: NaviChatRepository, private val cont response.data?.fileUpload.isNotNull() && response.data?.fileUpload?.sizeInKiloBytes.isNotNull() ) { - _naviChatConfigResponse.value = response.data?.let { getHashMap(it) } + _naviChatConfigResponse.value = response.data?.let { + constructConfigResponse(it) + } } } } + private fun constructConfigResponse(response: ChatConfigResponse): ChatConfigConstructedResponse? { + return ChatConfigConstructedResponse( + fileSizeInKB = getHashMap(response), + botTypingCuesDelayInMs = response.botTypingCuesDelayInMs?.toLong() ?: 1000L + ) + } + private fun getHashMap(response: ChatConfigResponse): HashMap { val hashmap = HashMap() response.fileUpload?.sizeInKiloBytes?.let { sizeInKb ->