Skip to content

Commit

Permalink
Change logic emplacement to natural advance mode
Browse files Browse the repository at this point in the history
  • Loading branch information
NicolasBourdin88 committed May 13, 2024
1 parent c9eca18 commit 3c6c0a6
Show file tree
Hide file tree
Showing 4 changed files with 23 additions and 15 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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<Thread>? = null
Expand Down Expand Up @@ -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
Expand All @@ -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) {
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,6 @@ import com.infomaniak.mail.MatomoMail.trackMultiSelectionEvent
import com.infomaniak.mail.MatomoMail.trackNewMessageEvent
import com.infomaniak.mail.MatomoMail.trackThreadListEvent
import com.infomaniak.mail.R
import com.infomaniak.mail.data.LocalSettings
import com.infomaniak.mail.data.LocalSettings.SwipeAction
import com.infomaniak.mail.data.LocalSettings.ThreadDensity.COMPACT
import com.infomaniak.mail.data.models.Folder
Expand Down Expand Up @@ -104,9 +103,6 @@ class ThreadListFragment : TwoPaneFragment(), SwipeRefreshLayout.OnRefreshListen

private var isFirstTimeRefreshingThreads = true

@Inject
lateinit var localSettings: LocalSettings

@Inject
lateinit var notificationManagerCompat: NotificationManagerCompat

Expand Down Expand Up @@ -320,6 +316,7 @@ class ThreadListFragment : TwoPaneFragment(), SwipeRefreshLayout.OnRefreshListen
trackThreadListEvent("loadMore")
mainViewModel.getOnePageOfOldMessages()
},
onPositionClickedChanged = ::changeNaturalAdvanceModeByPosition
)

threadListAdapter.stateRestorationPolicy = StateRestorationPolicy.PREVENT_WHEN_EMPTY
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,6 +33,7 @@ import com.infomaniak.lib.core.utils.safeNavigate
import com.infomaniak.mail.MatomoMail.OPEN_FROM_DRAFT_NAME
import com.infomaniak.mail.MatomoMail.trackNewMessageEvent
import com.infomaniak.mail.R
import com.infomaniak.mail.data.LocalSettings
import com.infomaniak.mail.data.cache.mailboxContent.FolderController
import com.infomaniak.mail.data.models.thread.Thread
import com.infomaniak.mail.ui.MainActivity
Expand All @@ -53,6 +54,9 @@ abstract class TwoPaneFragment : Fragment() {
@Inject
lateinit var threadListAdapter: ThreadListAdapter

@Inject
lateinit var localSettings: LocalSettings

@ColorRes
abstract fun getStatusBarColor(): Int
abstract fun getLeftPane(): View?
Expand Down Expand Up @@ -184,8 +188,7 @@ abstract class TwoPaneFragment : Fragment() {
}
}

private fun computeTwoPaneWidths(widthPixels: Int, isThreadOpen: Boolean): Pair<Int, Int> = with(twoPaneViewModel) {

private fun computeTwoPaneWidths(widthPixels: Int, isThreadOpen: Boolean): Pair<Int, Int> {
val leftPaneWidthRatio = ResourcesCompat.getFloat(resources, R.dimen.leftPaneWidthRatio)
val rightPaneWidthRatio = ResourcesCompat.getFloat(resources, R.dimen.rightPaneWidthRatio)

Expand Down Expand Up @@ -217,4 +220,12 @@ abstract class TwoPaneFragment : Fragment() {

setSystemBarsColors(statusBarColor = statusBarColor, navigationBarColor = null)
}

protected fun changeNaturalAdvanceModeByPosition(currentPosition: Int, previousPosition: Int) {
localSettings.autoAdvanceIntelligentMode = if (currentPosition > previousPosition) {
LocalSettings.AutoAdvanceMode.FOLLOWING_THREAD
} else {
LocalSettings.AutoAdvanceMode.PREVIOUS_THREAD
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,6 @@ import com.infomaniak.mail.MatomoMail.SEARCH_DELETE_NAME
import com.infomaniak.mail.MatomoMail.SEARCH_VALIDATE_NAME
import com.infomaniak.mail.MatomoMail.trackSearchEvent
import com.infomaniak.mail.R
import com.infomaniak.mail.data.LocalSettings
import com.infomaniak.mail.data.models.Folder
import com.infomaniak.mail.data.models.thread.Thread.ThreadFilter
import com.infomaniak.mail.databinding.FragmentSearchBinding
Expand All @@ -57,7 +56,6 @@ import com.infomaniak.mail.utils.RealmChangesBinding.Companion.bindResultsChange
import com.infomaniak.mail.utils.Utils.Shortcuts
import com.infomaniak.mail.utils.extensions.*
import dagger.hilt.android.AndroidEntryPoint
import javax.inject.Inject

@AndroidEntryPoint
class SearchFragment : TwoPaneFragment() {
Expand All @@ -66,8 +64,6 @@ class SearchFragment : TwoPaneFragment() {
private val binding get() = _binding!! // This property is only valid between onCreateView and onDestroyView

private val searchViewModel: SearchViewModel by viewModels()
@Inject
lateinit var localSettings: LocalSettings

private val showLoadingTimer: CountDownTimer by lazy { Utils.createRefreshTimer(onTimerFinish = ::showRefreshLayout) }

Expand Down Expand Up @@ -160,6 +156,7 @@ class SearchFragment : TwoPaneFragment() {
navigateToThread(thread)
}
},
onPositionClickedChanged = ::changeNaturalAdvanceModeByPosition
)

binding.mailRecyclerView.adapter = threadListAdapter.apply {
Expand Down

0 comments on commit 3c6c0a6

Please sign in to comment.