From 3e41d3d59bea8401dc47806e0ec60f602cafdf53 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Wed, 31 Aug 2022 11:27:02 -0700 Subject: [PATCH] add navController to root of home --- .../main/java/app/omnivore/omnivore/Routes.kt | 3 +- .../app/omnivore/omnivore/ui/home/HomeView.kt | 53 ++++++++++++++----- .../app/omnivore/omnivore/ui/root/RootView.kt | 27 ++++++++-- 3 files changed, 63 insertions(+), 20 deletions(-) diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt index 47f70b2b3..4355c954e 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/Routes.kt @@ -1,7 +1,6 @@ package app.omnivore.omnivore sealed class Routes(val route: String) { - object Root : Routes("Root") object Home : Routes("Home") - object Welcome : Routes("Welcome") + object WebReader : Routes("WebReader") } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt index 99769a54a..68514c71a 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeView.kt @@ -1,22 +1,17 @@ package app.omnivore.omnivore.ui.home import android.annotation.SuppressLint -import android.graphics.Bitmap -import android.net.Uri -import android.util.Log import android.view.ViewGroup import android.webkit.* -import android.widget.Space import androidx.compose.foundation.background -import androidx.compose.foundation.clickable import androidx.compose.foundation.layout.* import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.Button -import androidx.compose.material3.MaterialTheme -import androidx.compose.material3.Surface -import androidx.compose.material3.Text +import androidx.compose.material.TopAppBar +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Menu +import androidx.compose.material3.* import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState @@ -29,14 +24,46 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp import androidx.compose.ui.viewinterop.AndroidView import androidx.compose.ui.window.Dialog -import app.omnivore.omnivore.AppleConstants -import app.omnivore.omnivore.ui.auth.AppleAuthDialog +import androidx.navigation.NavHostController import app.omnivore.omnivore.ui.auth.LoginViewModel import com.google.android.gms.auth.api.signin.GoogleSignIn import com.google.android.gms.auth.api.signin.GoogleSignInOptions + +@OptIn(ExperimentalMaterial3Api::class) +@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter") @Composable -fun HomeView(loginViewModel: LoginViewModel, homeViewModel: HomeViewModel) { +fun HomeView( + loginViewModel: LoginViewModel, + homeViewModel: HomeViewModel, + navController: NavHostController +) { + Scaffold( + topBar = { + TopAppBar( + title = { Text("Home") }, + backgroundColor = MaterialTheme.colorScheme.surfaceVariant, + actions = { + IconButton(onClick = { }) { + Icon( + imageVector = Icons.Default.Menu, + contentDescription = null + ) + } + } + ) + } + ) { + HomeViewContent(loginViewModel, homeViewModel, navController) + } +} + +@Composable +fun HomeViewContent( + loginViewModel: LoginViewModel, + homeViewModel: HomeViewModel, + navController: NavHostController +) { val selectedItemSlug = remember { mutableStateOf(null) } val linkedItems: List by homeViewModel.itemsLiveData.observeAsState(listOf()) @@ -113,9 +140,7 @@ fun ArticleWebView(slug: String) { WebView.setWebContentsDebuggingEnabled(true) val authCookieString = "auth=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1aWQiOiIwODFkZThlOC01ODU0LTExZWMtODY4ZS03ZjU0ZjhiMzY0NGEiLCJpYXQiOjE2NjE4OTA1NjB9.zDE6SOGgRKKV7QuZUIsxEzb_M7o2pyTwshI_Lc_C8Co; Expires=Wed, 30 Aug 2023 20:16:00 GMT; HttpOnly; secure;" - // add to local storage val url = "https://demo.omnivore.app/app/me/$slug" -// val url = "https://demo.omnivore.app/app/me/algae-bloom-in-san-francisco-bay-lake-merritt-is-killing-fish-th-182e81e01dc" // Adding a WebView inside AndroidView // with layout as full screen diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt index 81940a231..cc4d5c2f5 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/root/RootView.kt @@ -3,6 +3,10 @@ package app.omnivore.omnivore.ui.root import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue import androidx.compose.runtime.livedata.observeAsState +import androidx.navigation.compose.NavHost +import androidx.navigation.compose.composable +import androidx.navigation.compose.rememberNavController +import app.omnivore.omnivore.Routes import app.omnivore.omnivore.ui.auth.LoginViewModel import app.omnivore.omnivore.ui.auth.WelcomeScreen import app.omnivore.omnivore.ui.home.HomeView @@ -13,11 +17,26 @@ fun RootView(loginViewModel: LoginViewModel, homeViewModel: HomeViewModel) { val hasAuthToken: Boolean by loginViewModel.hasAuthTokenLiveData.observeAsState(false) if (hasAuthToken) { - HomeView( - loginViewModel = loginViewModel, - homeViewModel = homeViewModel - ) + PrimaryNavigator(loginViewModel = loginViewModel, homeViewModel = homeViewModel) } else { WelcomeScreen(viewModel = loginViewModel) } } + +@Composable +fun PrimaryNavigator(loginViewModel: LoginViewModel, homeViewModel: HomeViewModel){ + val navController = rememberNavController() + + NavHost(navController = navController, startDestination = Routes.Home.route) { + composable(Routes.Home.route) { + HomeView( + loginViewModel = loginViewModel, // TODO: remove loginViewModel from here + homeViewModel = homeViewModel, + navController = navController + ) + } +// composable(Routes.EmailLogin.route) { +// EmailLoginPage(viewModel = viewModel, navController = navController) +// } + } +}