1616
1717package com.example.jetnews.ui
1818
19+ import android.content.Intent
20+ import android.net.Uri
1921import android.os.Bundle
2022import androidx.activity.ComponentActivity
2123import androidx.activity.compose.setContent
2224import androidx.activity.enableEdgeToEdge
2325import androidx.compose.material3.windowsizeclass.ExperimentalMaterial3WindowSizeClassApi
2426import androidx.compose.material3.windowsizeclass.calculateWindowSizeClass
27+ import androidx.navigation3.runtime.NavKey
2528import com.example.jetnews.JetnewsApplication
29+ import com.example.jetnews.ui.navigation.Home
30+ import com.example.jetnews.ui.navigation.POST_ID
2631
2732class MainActivity : ComponentActivity () {
2833
@@ -34,7 +39,19 @@ class MainActivity : ComponentActivity() {
3439 val appContainer = (application as JetnewsApplication ).container
3540 setContent {
3641 val widthSizeClass = calculateWindowSizeClass(this ).widthSizeClass
37- JetnewsApp (appContainer, widthSizeClass)
42+ JetnewsApp (appContainer, widthSizeClass, getDeepLinkKey(intent) )
3843 }
3944 }
4045}
46+
47+ private fun getDeepLinkKey (intent : Intent ): NavKey ? {
48+ val uri: Uri = intent.data ? : return null
49+ val pathParams = uri.pathSegments
50+ if (pathParams.lastOrNull() != " home" ) return null
51+
52+ val queryParams = uri.getQueryParameters(POST_ID )
53+ if (queryParams.isEmpty() || queryParams.size > 1 ) return null
54+ // "https://developer.android.com/jetnews/home?postId={$POST_ID}"
55+ return Home (postId = Uri .decode(queryParams.firstOrNull()))
56+ }
57+
0 commit comments