You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
iceraven-browser/app/src/main/java/org/mozilla/fenix/settings/logins/controller/LoginsListController.kt

71 lines
2.6 KiB
Kotlin

/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.settings.logins.controller
import androidx.navigation.NavController
import mozilla.components.service.glean.private.NoExtras
import org.mozilla.fenix.BrowserDirection
import org.mozilla.fenix.GleanMetrics.Logins
import org.mozilla.fenix.settings.SupportUtils
import org.mozilla.fenix.settings.logins.LoginsAction
import org.mozilla.fenix.settings.logins.LoginsFragmentStore
import org.mozilla.fenix.settings.logins.SavedLogin
import org.mozilla.fenix.settings.logins.SortingStrategy
import org.mozilla.fenix.settings.logins.fragment.SavedLoginsFragmentDirections
import org.mozilla.fenix.utils.Settings
/**
* Controller for the saved logins list
*
* @property loginsFragmentStore Store used to hold in-memory collection state.
* @property navController NavController manages app navigation within a NavHost.
* @property browserNavigator Controller allowing browser navigation to any Uri.
* @property settings SharedPreferences wrapper for easier usage.
*/
class LoginsListController(
private val loginsFragmentStore: LoginsFragmentStore,
private val navController: NavController,
private val browserNavigator: (
searchTermOrURL: String,
newTab: Boolean,
from: BrowserDirection,
) -> Unit,
private val settings: Settings,
) {
fun handleItemClicked(item: SavedLogin) {
Logins.managementLoginsTapped.record(NoExtras())
loginsFragmentStore.dispatch(LoginsAction.LoginSelected(item))
Logins.openIndividualLogin.record(NoExtras())
navController.navigate(
SavedLoginsFragmentDirections.actionSavedLoginsFragmentToLoginDetailFragment(item.guid),
)
}
fun handleAddLoginClicked() {
Logins.managementAddTapped.record(NoExtras())
navController.navigate(
SavedLoginsFragmentDirections.actionSavedLoginsFragmentToAddLoginFragment(),
)
}
fun handleLearnMoreClicked() {
browserNavigator.invoke(
SupportUtils.getGenericSumoURLForTopic(SupportUtils.SumoTopic.SYNC_SETUP),
true,
BrowserDirection.FromSavedLoginsFragment,
)
}
fun handleSort(sortingStrategy: SortingStrategy) {
loginsFragmentStore.dispatch(
LoginsAction.SortLogins(
sortingStrategy,
),
)
settings.savedLoginsSortingStrategy = sortingStrategy
}
}