Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import androidx.compose.foundation.rememberScrollState
import androidx.compose.foundation.verticalScroll
import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember
import androidx.compose.ui.Alignment
Expand All @@ -22,6 +23,7 @@ import androidx.compose.ui.platform.LocalContext
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.hilt.navigation.compose.hiltViewModel
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavController
import androidx.navigation.NavGraphBuilder
import androidx.navigation.compose.composable
Expand All @@ -46,7 +48,6 @@ import com.jusiCool.presentation.main.viewModel.MainViewModel
import com.jusiCool.presentation.utill.Event
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.persistentListOf
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.delay

const val mainRoute = "mainRoute"
Expand Down Expand Up @@ -91,6 +92,8 @@ internal fun MainRoute(
) {
val (isSwipeRefreshLoading, setIsSwipeRefreshLoading) = remember { mutableStateOf(false) }
val swipeRefreshState = rememberSwipeRefreshState(isRefreshing = isSwipeRefreshLoading)
val getMyPointResponse by viewModel.getMyPointResponse.collectAsStateWithLifecycle()
val getMyStockResponse by viewModel.getMyStockResponse.collectAsStateWithLifecycle()

MainScreen(
modifier = modifier,
Expand All @@ -101,8 +104,18 @@ internal fun MainRoute(
"νŒŒμ΄λ‚Έμ…œλ‰΄μŠ€",
1
),
pointData = viewModel.myPoint.value,
stockData = viewModel.myStock.toImmutableList(),
pointData = when (getMyPointResponse) {
is Event.Success -> getMyPointResponse.data!!
else -> GetMyPointModel(
points = 0,
upDownPercent = 0.0,
upDownPoints = 0,
)
},
stockData = when (getMyStockResponse) {
is Event.Success -> getMyStockResponse.data!!
else -> persistentListOf()
},
onRefresh = {
viewModel.apply {
getMyPoint()
Expand All @@ -127,30 +140,11 @@ internal fun MainRoute(
}

LaunchedEffect(Unit) {
viewModel.getMyPointResponse.collect { response ->
when (response) {
is Event.Success -> {
viewModel.myPoint.value = response.data!!
}

else -> {}
}
}
}

LaunchedEffect(Unit) {
viewModel.getMyStockResponse.collect { response ->
when (response) {
is Event.Success -> {
viewModel.myStock.removeRange(0, viewModel.myStock.size)
viewModel.myStock.addAll(response.data!!)
}

else -> {
viewModel.myStock.removeRange(0, viewModel.myStock.size)
}
}
viewModel.apply {
getMyPoint()
getMyStock()
}
setIsSwipeRefreshLoading(true)
}
}

Expand All @@ -174,10 +168,6 @@ internal fun MainScreen(
navigateToCommunity: () -> Unit,
navigateToHoldShareRoute: () -> Unit,
) {
LaunchedEffect(Unit) {
onRefresh()
}

SwipeRefresh(
state = swipeRefreshState,
onRefresh = onRefresh
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ import com.jusiCool.domain.usecase.user.GetMyStockUseCase
import com.jusiCool.presentation.utill.Event
import com.jusiCool.presentation.utill.errorHandling
import dagger.hilt.android.lifecycle.HiltViewModel
import kotlinx.collections.immutable.ImmutableList
import kotlinx.collections.immutable.toImmutableList
import kotlinx.coroutines.flow.MutableStateFlow
import kotlinx.coroutines.flow.asStateFlow
import kotlinx.coroutines.flow.catch
Expand All @@ -28,7 +30,7 @@ class MainViewModel @Inject constructor(
private val _getMyPointResponse = MutableStateFlow<Event<GetMyPointModel>>(Event.Loading)
val getMyPointResponse = _getMyPointResponse.asStateFlow()

private val _getMyStockResponse = MutableStateFlow<Event<List<GetMyStockModel>>>(Event.Loading)
private val _getMyStockResponse = MutableStateFlow<Event<ImmutableList<GetMyStockModel>>>(Event.Loading)
val getMyStockResponse = _getMyStockResponse.asStateFlow()

private val _getStockListResponse = MutableStateFlow<Event<List<GetStockListResponseModel>>>(Event.Loading)
Expand All @@ -40,15 +42,6 @@ class MainViewModel @Inject constructor(
var stockList = mutableStateListOf<GetStockListResponseModel>()
private set

var myPoint = mutableStateOf(
GetMyPointModel(
points = 0,
upDownPercent = 0.0,
upDownPoints = 0,
)
)
private set

internal fun getMyPoint() = viewModelScope.launch {
getMyPointUseCase().onSuccess {
it.catch { remoteError ->
Expand All @@ -66,7 +59,7 @@ class MainViewModel @Inject constructor(
it.catch { remoteError ->
_getMyStockResponse.value = remoteError.errorHandling()
}.collect { response ->
_getMyStockResponse.value = Event.Success(data = response)
_getMyStockResponse.value = Event.Success(data = response.toImmutableList())
}
}.onFailure { error ->
_getMyStockResponse.value = error.errorHandling()
Expand All @@ -78,7 +71,7 @@ class MainViewModel @Inject constructor(
it.catch { remoteError ->
_getStockListResponse.value = remoteError.errorHandling()
}.collect { response ->
_getStockListResponse.value = Event.Success(data = response)
_getStockListResponse.value = Event.Success(data = response.toImmutableList())
}
}.onFailure { error ->
_getStockListResponse.value = error.errorHandling()
Expand Down