From 2eabc318fe489aef26a6ce1fea5bd4f6d9a4fc71 Mon Sep 17 00:00:00 2001 From: Satindar Dhillon Date: Mon, 29 Aug 2022 13:38:56 -0700 Subject: [PATCH] add a home view model --- .../app/src/main/graphql/SaveUrl.graphql | 6 +-- .../app/src/main/graphql/Search.graphql | 51 +++++++++++++++++++ .../app/omnivore/omnivore/MainActivity.kt | 6 ++- .../app/omnivore/omnivore/ui/home/HomeView.kt | 8 +-- .../omnivore/ui/home/HomeViewModel.kt | 22 ++++++++ .../app/omnivore/omnivore/ui/root/RootView.kt | 18 ++++--- 6 files changed, 96 insertions(+), 15 deletions(-) create mode 100644 android/Omnivore/app/src/main/graphql/Search.graphql create mode 100644 android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt diff --git a/android/Omnivore/app/src/main/graphql/SaveUrl.graphql b/android/Omnivore/app/src/main/graphql/SaveUrl.graphql index c2a2d2428..964e2b332 100644 --- a/android/Omnivore/app/src/main/graphql/SaveUrl.graphql +++ b/android/Omnivore/app/src/main/graphql/SaveUrl.graphql @@ -1,5 +1,5 @@ -mutation SaveUrl ($input: SaveUrlInput!) { - saveUrl(input:$input){ +mutation SaveUrl($input: SaveUrlInput!) { + saveUrl(input: $input) { ... on SaveSuccess { url } @@ -7,4 +7,4 @@ mutation SaveUrl ($input: SaveUrlInput!) { errorCodes } } -} \ No newline at end of file +} diff --git a/android/Omnivore/app/src/main/graphql/Search.graphql b/android/Omnivore/app/src/main/graphql/Search.graphql new file mode 100644 index 000000000..2532cfc1e --- /dev/null +++ b/android/Omnivore/app/src/main/graphql/Search.graphql @@ -0,0 +1,51 @@ +query Search($after: String, $first: Int, $query: String) { + search(first: $first, after: $after, query: $query) { + ... on SearchSuccess { + edges { + cursor + node { + id + title + slug + url + pageType + contentReader + createdAt + isArchived + readingProgressPercent + readingProgressAnchorIndex + author + image + description + publishedAt + ownedByViewer + originalArticleUrl + uploadFileId + labels { + id + name + color + } + pageId + shortId + quote + annotation + state + siteName + subscription + readAt + } + } + pageInfo { + hasNextPage + hasPreviousPage + startCursor + endCursor + totalCount + } + } + ... on SearchError { + errorCodes + } + } +} diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt index eed5b92be..274cef68e 100644 --- a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/MainActivity.kt @@ -10,6 +10,7 @@ import androidx.core.view.ViewCompat import androidx.core.view.WindowCompat import androidx.core.view.WindowInsetsCompat import app.omnivore.omnivore.ui.auth.LoginViewModel +import app.omnivore.omnivore.ui.home.HomeViewModel import app.omnivore.omnivore.ui.root.RootView import dagger.hilt.android.AndroidEntryPoint @@ -18,11 +19,12 @@ class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) - val viewModel: LoginViewModel by viewModels() + val loginViewModel: LoginViewModel by viewModels() + val homeViewModel: HomeViewModel by viewModels() setContent { OmnivoreTheme { - RootView(viewModel = viewModel) + RootView(loginViewModel, homeViewModel) } } 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 0fcb81a21..031b50931 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 @@ -13,13 +13,12 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.unit.dp -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 @Composable -fun HomeView(viewModel: LoginViewModel) { +fun HomeView(loginViewModel: LoginViewModel, homeViewModel: HomeViewModel) { Column( verticalArrangement = Arrangement.Center, horizontalAlignment = Alignment.CenterHorizontally, @@ -29,7 +28,10 @@ fun HomeView(viewModel: LoginViewModel) { .padding(horizontal = 6.dp) ) { Text("You have a valid auth token. Nice. Go save something in Chrome!") - LogoutButton { viewModel.logout() } + LogoutButton { loginViewModel.logout() } + Button(onClick = { homeViewModel.loggo() } ) { + Text("Loggo") + } } } diff --git a/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt new file mode 100644 index 000000000..1b9e431c7 --- /dev/null +++ b/android/Omnivore/app/src/main/java/app/omnivore/omnivore/ui/home/HomeViewModel.kt @@ -0,0 +1,22 @@ +package app.omnivore.omnivore.ui.home + +import android.util.Log +import androidx.lifecycle.ViewModel +import app.omnivore.omnivore.DatastoreKeys +import app.omnivore.omnivore.DatastoreRepository +import dagger.hilt.android.lifecycle.HiltViewModel +import kotlinx.coroutines.runBlocking +import javax.inject.Inject + +@HiltViewModel +class HomeViewModel @Inject constructor( + private val datastoreRepo: DatastoreRepository +): ViewModel() { + private fun getAuthToken(): String? = runBlocking { + datastoreRepo.getString(DatastoreKeys.omnivoreAuthToken) + } + + fun loggo() { + Log.d("TAG", "logging it!") + } +} 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 9bdd36a04..81940a231 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 @@ -6,14 +6,18 @@ import androidx.compose.runtime.livedata.observeAsState import app.omnivore.omnivore.ui.auth.LoginViewModel import app.omnivore.omnivore.ui.auth.WelcomeScreen import app.omnivore.omnivore.ui.home.HomeView +import app.omnivore.omnivore.ui.home.HomeViewModel @Composable -fun RootView(viewModel: LoginViewModel) { - val hasAuthToken: Boolean by viewModel.hasAuthTokenLiveData.observeAsState(false) +fun RootView(loginViewModel: LoginViewModel, homeViewModel: HomeViewModel) { + val hasAuthToken: Boolean by loginViewModel.hasAuthTokenLiveData.observeAsState(false) - if (hasAuthToken) { - HomeView(viewModel = viewModel) - } else { - WelcomeScreen(viewModel = viewModel) - } + if (hasAuthToken) { + HomeView( + loginViewModel = loginViewModel, + homeViewModel = homeViewModel + ) + } else { + WelcomeScreen(viewModel = loginViewModel) + } }