add a home view model

This commit is contained in:
Satindar Dhillon 2022-08-29 13:38:56 -07:00
parent be51a17315
commit 2eabc318fe
6 changed files with 96 additions and 15 deletions

View file

@ -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
}
}
}
}

View file

@ -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
}
}
}

View file

@ -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)
}
}

View file

@ -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")
}
}
}

View file

@ -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!")
}
}

View file

@ -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)
}
}