39 lines
1.5 KiB
Kotlin
39 lines
1.5 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.sync.ext
|
|
|
|
import androidx.annotation.StringRes
|
|
import androidx.navigation.NavController
|
|
import mozilla.components.feature.syncedtabs.view.SyncedTabsView.ErrorType
|
|
import org.mozilla.fenix.R
|
|
import org.mozilla.fenix.sync.SyncedTabsAdapter
|
|
|
|
/**
|
|
* Converts the error type to the appropriate matching string resource for displaying to the user.
|
|
*/
|
|
fun ErrorType.toStringRes() = when (this) {
|
|
ErrorType.MULTIPLE_DEVICES_UNAVAILABLE -> R.string.synced_tabs_connect_another_device
|
|
ErrorType.SYNC_ENGINE_UNAVAILABLE -> R.string.synced_tabs_enable_tab_syncing
|
|
ErrorType.SYNC_UNAVAILABLE -> R.string.synced_tabs_sign_in_message
|
|
ErrorType.SYNC_NEEDS_REAUTHENTICATION -> R.string.synced_tabs_reauth
|
|
ErrorType.NO_TABS_AVAILABLE -> R.string.synced_tabs_no_tabs
|
|
}
|
|
|
|
/**
|
|
* Converts an error type to an [SyncedTabsAdapter.AdapterItem.Error].
|
|
*/
|
|
fun ErrorType.toAdapterItem(
|
|
@StringRes stringResId: Int,
|
|
navController: NavController? = null
|
|
) = when (this) {
|
|
ErrorType.MULTIPLE_DEVICES_UNAVAILABLE,
|
|
ErrorType.SYNC_ENGINE_UNAVAILABLE,
|
|
ErrorType.SYNC_NEEDS_REAUTHENTICATION,
|
|
ErrorType.NO_TABS_AVAILABLE -> SyncedTabsAdapter.AdapterItem
|
|
.Error(descriptionResId = stringResId)
|
|
ErrorType.SYNC_UNAVAILABLE -> SyncedTabsAdapter.AdapterItem
|
|
.Error(descriptionResId = stringResId, navController = navController)
|
|
}
|