From 17235250770fa7cd4d1a24bc281f350f0dc4c91b Mon Sep 17 00:00:00 2001 From: Sylvain Berfini Date: Sat, 4 Nov 2023 11:25:57 +0100 Subject: [PATCH] Keep scroll position in conversation when going back after leaving --- .../linphone/ui/main/chat/fragment/ConversationFragment.kt | 7 +++++++ .../ui/main/chat/viewmodel/ConversationViewModel.kt | 2 ++ 2 files changed, 9 insertions(+) diff --git a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt index 1573b5dbf..485496a12 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/fragment/ConversationFragment.kt @@ -283,11 +283,18 @@ class ConversationFragment : GenericFragment() { val id = LinphoneUtils.getChatRoomId(args.localSipUri, args.remoteSipUri) Log.i("$TAG Asking notifications manager not to notify chat messages for chat room [$id]") coreContext.notificationsManager.setCurrentlyDisplayedChatRoomId(id) + + if (viewModel.scrollingPosition != -1) { + binding.eventsList.scrollToPosition(viewModel.scrollingPosition) + } } override fun onPause() { coreContext.notificationsManager.resetCurrentlyDisplayedChatRoomId() + val layoutManager = binding.eventsList.layoutManager as LinearLayoutManager + viewModel.scrollingPosition = layoutManager.findFirstVisibleItemPosition() + super.onPause() } diff --git a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt index 64f7fcd48..5d33ba86e 100644 --- a/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt +++ b/app/src/main/java/org/linphone/ui/main/chat/viewmodel/ConversationViewModel.kt @@ -75,6 +75,8 @@ class ConversationViewModel @UiThread constructor() : ViewModel() { val isReplyingToMessage = MutableLiveData() + var scrollingPosition: Int = -1 + val requestKeyboardHidingEvent: MutableLiveData> by lazy { MutableLiveData>() }