Skip to content

Instantly share code, notes, and snippets.

@ahinchman1
Created May 3, 2020 17:32
Show Gist options
  • Save ahinchman1/90a5d9631946d4bbece6fe2c4e482cb6 to your computer and use it in GitHub Desktop.
Save ahinchman1/90a5d9631946d4bbece6fe2c4e482cb6 to your computer and use it in GitHub Desktop.
enum class Screen(var screen: String) {
ERROR("Error"),
INVASIVE_SPECIES_MAP("Invasive Species Map"),
SPOTTER("Spotter");
override fun toString(): String = screen
}
class Navigator(
private val navController: NavController,
private val resources: Resources
) {
fun navigateToError(from: Screen) {
val currentDestination = navController.currentDestination?.id
if (currentDestination != R.id.errorFragment) {
val bundle = bundleOf(
PREVIOUS_DESTINATION_ID to from.fragmentId(),
PREVIOUS_DESTINATION_LABEL to from.fragmentLabel()
)
navController.navigate(R.id.action_go_to_error, bundle)
}
}
fun navigateToInvasiveSpeciesMap() {
if (navController.currentDestination?.id != Screen.INVASIVE_SPECIES_MAP.fragmentId()) {
navController.navigate(R.id.action_go_to_invasive_species_map)
}
}
private fun Screen.fragmentId(): Int {
return when (this) {
Screen.INVASIVE_SPECIES_MAP -> R.id.invasiveSpeciesMapFragment
else -> R.id.errorFragment
}
}
private fun Screen.fragmentLabel(): String {
return when (this) {
Screen.INVASIVE_SPECIES_MAP -> resources.getString(R.string.invasive_species_map_label)
else -> resources.getString(R.string.generalMessageError)
}
}
companion object {
const val PREVIOUS_DESTINATION_ID = "PREVIOUS_DESTINATION_ID"
const val PREVIOUS_DESTINATION_LABEL = "PREVIOUS_DESTINATION_LABEL"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment