From 434628153a74fbfc4e7e27ace6077f38a1757e74 Mon Sep 17 00:00:00 2001 From: NicolasBourdin88 Date: Mon, 13 May 2024 15:15:17 +0200 Subject: [PATCH] Change logic emplacement to natural advance mode --- .../mail/ui/main/folder/ThreadListAdapter.kt | 13 ++++++++----- .../mail/ui/main/folder/ThreadListFragment.kt | 7 +++++++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt index fb6eec93467..9ab8f6c46cc 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListAdapter.kt @@ -92,6 +92,8 @@ class ThreadListAdapter @Inject constructor( private var onFlushClicked: ((dialogTitle: String) -> Unit)? = null private var onLoadMoreClicked: (() -> Unit)? = null + private var onPositionClickedChanged: ((position: Int, previousPosition: Int) -> Unit)? = null + private var folderRole: FolderRole? = null private var onSwipeFinished: (() -> Unit)? = null private var multiSelection: MultiSelectionListener? = null @@ -119,6 +121,7 @@ class ThreadListAdapter @Inject constructor( onThreadClicked: ((thread: Thread) -> Unit), onFlushClicked: ((dialogTitle: String) -> Unit)? = null, onLoadMoreClicked: (() -> Unit)? = null, + onPositionClickedChanged: ((position: Int, previousPosition: Int) -> Unit)? = null, ) { this.folderRole = folderRole this.onSwipeFinished = onSwipeFinished @@ -127,6 +130,7 @@ class ThreadListAdapter @Inject constructor( this.onThreadClicked = onThreadClicked this.onFlushClicked = onFlushClicked this.onLoadMoreClicked = onLoadMoreClicked + this.onPositionClickedChanged = onPositionClickedChanged } override fun onAttachedToRecyclerView(recyclerView: RecyclerView) { @@ -300,11 +304,10 @@ class ThreadListAdapter @Inject constructor( toggleMultiSelectedThread(thread) } else { previousThreadClickedPosition?.let { previousPosition -> - localSettings.autoAdvanceIntelligentMode = if (position > previousPosition) { - AutoAdvanceMode.FOLLOWING_THREAD - } else { - AutoAdvanceMode.PREVIOUS_THREAD - } + onPositionClickedChanged?.invoke( + position, + previousPosition + ) } previousThreadClickedPosition = position diff --git a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt index df28f4212fe..b32e38d4b0e 100644 --- a/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt +++ b/app/src/main/java/com/infomaniak/mail/ui/main/folder/ThreadListFragment.kt @@ -320,6 +320,13 @@ class ThreadListFragment : TwoPaneFragment(), SwipeRefreshLayout.OnRefreshListen trackThreadListEvent("loadMore") mainViewModel.getOnePageOfOldMessages() }, + onPositionClickedChanged = { currentPosition, previousPosition -> + localSettings.autoAdvanceIntelligentMode = if (currentPosition > previousPosition) { + LocalSettings.AutoAdvanceMode.FOLLOWING_THREAD + } else { + LocalSettings.AutoAdvanceMode.PREVIOUS_THREAD + } + } ) threadListAdapter.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY