Skip to content

Commit

Permalink
feat: adds viewmodel logic (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
kikin81 authored May 17, 2024
1 parent 1a393db commit 0e73f05
Show file tree
Hide file tree
Showing 4 changed files with 49 additions and 19 deletions.
26 changes: 9 additions & 17 deletions app/src/main/java/us/kikin/android/gamingbacklog/MainActivity.kt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import android.util.Log
import androidx.activity.ComponentActivity
import androidx.activity.compose.setContent
import androidx.activity.enableEdgeToEdge
import androidx.activity.viewModels
import androidx.compose.foundation.background
import androidx.compose.foundation.layout.Box
import androidx.compose.material3.MaterialTheme
Expand All @@ -19,6 +20,7 @@ import dagger.hilt.android.AndroidEntryPoint
import kotlinx.coroutines.launch
import us.kikin.android.gamingbacklog.domain.usecase.AppEntryUseCases
import us.kikin.android.gamingbacklog.presentation.onboarding.OnboardingScreen
import us.kikin.android.gamingbacklog.presentation.onboarding.OnboardingViewModel
import us.kikin.android.gamingbacklog.ui.theme.AppTheme
import javax.inject.Inject

Expand All @@ -28,6 +30,8 @@ class MainActivity : ComponentActivity() {
@Inject
lateinit var appEntryUseCases: AppEntryUseCases

private val onboardingViewModel: OnboardingViewModel by viewModels()

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
WindowCompat.setDecorFitsSystemWindows(window, false)
Expand All @@ -41,25 +45,13 @@ class MainActivity : ComponentActivity() {
setContent {
AppTheme {
Box(modifier = Modifier.background(color = MaterialTheme.colorScheme.background)) {
OnboardingScreen()
OnboardingScreen(
event = { event ->
onboardingViewModel.onEvent(event)
}
)
}
}
}
}
}

@Composable
fun Greeting(name: String, modifier: Modifier = Modifier) {
Text(
text = "Hello $name!",
modifier = modifier
)
}

@Preview(showBackground = true)
@Composable
private fun GreetingPreview() {
AppTheme {
Greeting("Android")
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package us.kikin.android.gamingbacklog.presentation.onboarding

sealed class OnboardingEvent {

object SaveAppEntry: OnboardingEvent()
}
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ import us.kikin.android.gamingbacklog.ui.theme.AppTheme
@OptIn(ExperimentalFoundationApi::class)
@Composable
fun OnboardingScreen(
modifier: Modifier = Modifier
modifier: Modifier = Modifier,
event: (OnboardingEvent) -> Unit,
) {
Column(modifier = modifier.fillMaxSize()) {
val pagerState = rememberPagerState(initialPage = 0) {
Expand Down Expand Up @@ -79,6 +80,9 @@ fun OnboardingScreen(
}
PrimaryButton(text = buttonState.value[1],
onClick = {
if (pagerState.currentPage == pages.size - 1) {
event(OnboardingEvent.SaveAppEntry)
}
scope.launch { pagerState.animateScrollToPage(pagerState.currentPage + 1) }
})
}
Expand All @@ -91,6 +95,6 @@ fun OnboardingScreen(
@Preview(showBackground = true)
internal fun OnboardingScreenPreview() {
AppTheme {
OnboardingScreen()
OnboardingScreen(event = {})
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package us.kikin.android.gamingbacklog.presentation.onboarding

import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.coroutines.launch
import us.kikin.android.gamingbacklog.domain.usecase.AppEntryUseCases
import javax.inject.Inject

@HiltViewModel
class OnboardingViewModel @Inject constructor(
private val appEntryUseCases: AppEntryUseCases
) : ViewModel() {

fun onEvent(event: OnboardingEvent) {
when (event) {
OnboardingEvent.SaveAppEntry -> {
saveAppEntry()
}
}
}

private fun saveAppEntry() {
viewModelScope.launch {
appEntryUseCases.saveAppEntry()
}
}
}

0 comments on commit 0e73f05

Please sign in to comment.