Skip to content

Commit

Permalink
Working deeplinks
Browse files Browse the repository at this point in the history
  • Loading branch information
rozPierog committed Jun 10, 2022
1 parent 8532892 commit d9b2239
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 15 deletions.
32 changes: 17 additions & 15 deletions app/src/main/java/com/omelan/cofi/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.omelan.cofi

import android.app.PictureInPictureParams
import android.content.Intent
import android.content.res.Configuration
import android.os.Build
import android.os.Bundle
Expand All @@ -15,11 +16,8 @@ import androidx.compose.material3.MaterialTheme
import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
import androidx.compose.material3.windowsizeclass.WindowSizeClass
import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
import androidx.compose.runtime.Composable
import androidx.compose.runtime.CompositionLocalProvider
import androidx.compose.runtime.getValue
import androidx.compose.runtime.*
import androidx.compose.runtime.livedata.observeAsState
import androidx.compose.runtime.staticCompositionLocalOf
import androidx.compose.ui.Modifier
import androidx.compose.ui.graphics.Color
import androidx.compose.ui.graphics.luminance
Expand Down Expand Up @@ -119,13 +117,11 @@ class MainActivity : MonetCompatActivity() {
@Composable
fun MainRecipeDetails(
navController: NavController,
backStackEntry: NavBackStackEntry,
recipeId: Int,
goBack: () -> Unit,
windowSizeClass: WindowSizeClass,
db: AppDatabase
) {
val recipeId = backStackEntry.arguments?.getInt("recipeId")
?: throw IllegalStateException("No Recipe ID")
RecipeDetails(
recipeId = recipeId,
onRecipeEnd = { recipe ->
Expand Down Expand Up @@ -238,7 +234,10 @@ class MainActivity : MonetCompatActivity() {
}
val systemUiController = rememberSystemUiController()
val windowSizeClass = calculateWindowSizeClass(this)

val intent by mainActivityViewModel.intent.observeAsState()
LaunchedEffect(intent) {
navController.handleDeepLink(intent)
}
CofiTheme(monet) {
val darkIcons = MaterialTheme.colorScheme.background.luminance() > 0.5
systemUiController.setStatusBarColor(
Expand Down Expand Up @@ -292,13 +291,9 @@ class MainActivity : MonetCompatActivity() {
}
),
) { backStackEntry ->
MainRecipeDetails(
navController,
backStackEntry,
goBack,
windowSizeClass,
db,
)
val recipeId = backStackEntry.arguments?.getInt("recipeId")
?: throw IllegalStateException("No Recipe ID")
MainRecipeDetails(navController, recipeId, goBack, windowSizeClass, db)
}
composable(
"edit/{recipeId}",
Expand Down Expand Up @@ -335,6 +330,13 @@ class MainActivity : MonetCompatActivity() {
}
}

override fun onNewIntent(newIntent: Intent?) {
super.onNewIntent(intent)
if (newIntent != null) {
mainActivityViewModel.setIntent(newIntent)
}
}

override fun onPictureInPictureModeChanged(
isInPictureInPictureMode: Boolean,
newConfig: Configuration
Expand Down
8 changes: 8 additions & 0 deletions app/src/main/java/com/omelan/cofi/MainActivityViewModel.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.omelan.cofi

import android.content.Intent
import androidx.lifecycle.LiveData
import androidx.lifecycle.MutableLiveData
import androidx.lifecycle.ViewModel
Expand All @@ -11,11 +12,18 @@ class MainActivityViewModel : ViewModel() {
private val _canGoToPiP = MutableLiveData(false)
val canGoToPiP: LiveData<Boolean> = _canGoToPiP

private val _intent = MutableLiveData(Intent())
val intent: LiveData<Intent> = _intent

fun setIsInPiP(newPiPState: Boolean) {
_pipState.value = newPiPState
}

fun setCanGoToPiP(newCanGoToPiP: Boolean) {
_canGoToPiP.value = newCanGoToPiP
}

fun setIntent(newIntent: Intent) {
_intent.value = newIntent
}
}

0 comments on commit d9b2239

Please sign in to comment.