Replace deep links with global actions
This commit is contained in:
@@ -5,15 +5,16 @@ import android.view.Menu
|
|||||||
import android.view.MenuItem
|
import android.view.MenuItem
|
||||||
import androidx.activity.viewModels
|
import androidx.activity.viewModels
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
import androidx.core.net.toUri
|
|
||||||
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
import androidx.core.splashscreen.SplashScreen.Companion.installSplashScreen
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import androidx.navigation.NavController
|
import androidx.navigation.NavController
|
||||||
|
import androidx.navigation.NavDirections
|
||||||
import androidx.navigation.fragment.NavHostFragment
|
import androidx.navigation.fragment.NavHostFragment
|
||||||
import by.kirich1409.viewbindingdelegate.viewBinding
|
import by.kirich1409.viewbindingdelegate.viewBinding
|
||||||
import com.google.android.material.shape.CornerFamily
|
import com.google.android.material.shape.CornerFamily
|
||||||
import com.google.android.material.shape.MaterialShapeDrawable
|
import com.google.android.material.shape.MaterialShapeDrawable
|
||||||
import dagger.hilt.android.AndroidEntryPoint
|
import dagger.hilt.android.AndroidEntryPoint
|
||||||
|
import gq.kirmanak.mealient.NavGraphDirections
|
||||||
import gq.kirmanak.mealient.R
|
import gq.kirmanak.mealient.R
|
||||||
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
import gq.kirmanak.mealient.databinding.MainActivityBinding
|
||||||
import gq.kirmanak.mealient.extensions.observeOnce
|
import gq.kirmanak.mealient.extensions.observeOnce
|
||||||
@@ -64,12 +65,12 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
|
|||||||
private fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
|
private fun onNavigationItemSelected(menuItem: MenuItem): Boolean {
|
||||||
logger.v { "onNavigationItemSelected() called with: menuItem = $menuItem" }
|
logger.v { "onNavigationItemSelected() called with: menuItem = $menuItem" }
|
||||||
menuItem.isChecked = true
|
menuItem.isChecked = true
|
||||||
val deepLink = when (menuItem.itemId) {
|
val directions = when (menuItem.itemId) {
|
||||||
R.id.add_recipe -> ADD_RECIPE_DEEP_LINK
|
R.id.add_recipe -> NavGraphDirections.actionGlobalAddRecipeFragment()
|
||||||
R.id.recipes_list -> RECIPES_LIST_DEEP_LINK
|
R.id.recipes_list -> NavGraphDirections.actionGlobalRecipesFragment()
|
||||||
else -> throw IllegalArgumentException("Unknown menu item id: ${menuItem.itemId}")
|
else -> throw IllegalArgumentException("Unknown menu item id: ${menuItem.itemId}")
|
||||||
}
|
}
|
||||||
navigateDeepLink(deepLink)
|
navigateTo(directions)
|
||||||
binding.drawer.close()
|
binding.drawer.close()
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -109,7 +110,7 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
|
|||||||
logger.v { "onOptionsItemSelected() called with: item = $item" }
|
logger.v { "onOptionsItemSelected() called with: item = $item" }
|
||||||
val result = when (item.itemId) {
|
val result = when (item.itemId) {
|
||||||
R.id.login -> {
|
R.id.login -> {
|
||||||
navigateDeepLink(AUTH_DEEP_LINK)
|
navigateTo(NavGraphDirections.actionGlobalAuthenticationFragment())
|
||||||
true
|
true
|
||||||
}
|
}
|
||||||
R.id.logout -> {
|
R.id.logout -> {
|
||||||
@@ -121,14 +122,8 @@ class MainActivity : AppCompatActivity(R.layout.main_activity) {
|
|||||||
return result
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun navigateDeepLink(deepLink: String) {
|
private fun navigateTo(directions: NavDirections) {
|
||||||
logger.v { "navigateDeepLink() called with: deepLink = $deepLink" }
|
logger.v { "navigateTo() called with: directions = $directions" }
|
||||||
navController.navigate(deepLink.toUri())
|
navController.navigate(directions)
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
private const val AUTH_DEEP_LINK = "mealient://authenticate"
|
|
||||||
private const val ADD_RECIPE_DEEP_LINK = "mealient://recipe/add"
|
|
||||||
private const val RECIPES_LIST_DEEP_LINK = "mealient://recipe/list"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -9,11 +9,8 @@
|
|||||||
android:id="@+id/authenticationFragment"
|
android:id="@+id/authenticationFragment"
|
||||||
android:name="gq.kirmanak.mealient.ui.auth.AuthenticationFragment"
|
android:name="gq.kirmanak.mealient.ui.auth.AuthenticationFragment"
|
||||||
android:label="AuthenticationFragment"
|
android:label="AuthenticationFragment"
|
||||||
tools:layout="@layout/fragment_authentication">
|
tools:layout="@layout/fragment_authentication" />
|
||||||
<deepLink
|
|
||||||
android:id="@+id/deepLink"
|
|
||||||
app:uri="mealient://authenticate" />
|
|
||||||
</fragment>
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/recipesFragment"
|
android:id="@+id/recipesFragment"
|
||||||
android:name="gq.kirmanak.mealient.ui.recipes.RecipesFragment"
|
android:name="gq.kirmanak.mealient.ui.recipes.RecipesFragment"
|
||||||
@@ -22,10 +19,8 @@
|
|||||||
<action
|
<action
|
||||||
android:id="@+id/action_recipesFragment_to_recipeInfoFragment"
|
android:id="@+id/action_recipesFragment_to_recipeInfoFragment"
|
||||||
app:destination="@id/recipeInfoFragment" />
|
app:destination="@id/recipeInfoFragment" />
|
||||||
<deepLink
|
|
||||||
android:id="@+id/deepLink"
|
|
||||||
app:uri="mealient://recipe/list" />
|
|
||||||
</fragment>
|
</fragment>
|
||||||
|
|
||||||
<dialog
|
<dialog
|
||||||
android:id="@+id/recipeInfoFragment"
|
android:id="@+id/recipeInfoFragment"
|
||||||
android:name="gq.kirmanak.mealient.ui.recipes.info.RecipeInfoFragment"
|
android:name="gq.kirmanak.mealient.ui.recipes.info.RecipeInfoFragment"
|
||||||
@@ -35,6 +30,7 @@
|
|||||||
android:name="recipe_id"
|
android:name="recipe_id"
|
||||||
app:argType="string" />
|
app:argType="string" />
|
||||||
</dialog>
|
</dialog>
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/disclaimerFragment"
|
android:id="@+id/disclaimerFragment"
|
||||||
android:name="gq.kirmanak.mealient.ui.disclaimer.DisclaimerFragment"
|
android:name="gq.kirmanak.mealient.ui.disclaimer.DisclaimerFragment"
|
||||||
@@ -46,6 +42,7 @@
|
|||||||
app:popUpTo="@id/nav_graph"
|
app:popUpTo="@id/nav_graph"
|
||||||
app:popUpToInclusive="true" />
|
app:popUpToInclusive="true" />
|
||||||
</fragment>
|
</fragment>
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/baseURLFragment"
|
android:id="@+id/baseURLFragment"
|
||||||
android:name="gq.kirmanak.mealient.ui.baseurl.BaseURLFragment"
|
android:name="gq.kirmanak.mealient.ui.baseurl.BaseURLFragment"
|
||||||
@@ -57,13 +54,22 @@
|
|||||||
app:popUpTo="@id/nav_graph"
|
app:popUpTo="@id/nav_graph"
|
||||||
app:popUpToInclusive="true" />
|
app:popUpToInclusive="true" />
|
||||||
</fragment>
|
</fragment>
|
||||||
|
|
||||||
<fragment
|
<fragment
|
||||||
android:id="@+id/addRecipeFragment"
|
android:id="@+id/addRecipeFragment"
|
||||||
android:name="gq.kirmanak.mealient.ui.add.AddRecipeFragment"
|
android:name="gq.kirmanak.mealient.ui.add.AddRecipeFragment"
|
||||||
android:label="fragment_add_recipe"
|
android:label="fragment_add_recipe"
|
||||||
tools:layout="@layout/fragment_add_recipe">
|
tools:layout="@layout/fragment_add_recipe" />
|
||||||
<deepLink
|
|
||||||
android:id="@+id/deepLink"
|
<action
|
||||||
app:uri="mealient://recipe/add" />
|
android:id="@+id/action_global_authenticationFragment"
|
||||||
</fragment>
|
app:destination="@id/authenticationFragment" />
|
||||||
|
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_global_recipesFragment"
|
||||||
|
app:destination="@id/recipesFragment" />
|
||||||
|
|
||||||
|
<action
|
||||||
|
android:id="@+id/action_global_addRecipeFragment"
|
||||||
|
app:destination="@id/addRecipeFragment" />
|
||||||
</navigation>
|
</navigation>
|
||||||
Reference in New Issue
Block a user