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 @@ -39,7 +39,6 @@ fun NavGraphBuilder.homeNavGraph(
navigateToGlucoseDetailScreen = { elderId ->
navigateToGlucoseDetailScreen(elderId)
},
mainBackStackEntry = backStackEntry,
)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,6 @@ import androidx.compose.ui.res.painterResource
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import androidx.lifecycle.compose.collectAsStateWithLifecycle
import androidx.navigation.NavBackStackEntry
import com.konkuk.medicarecall.R
import com.konkuk.medicarecall.data.dto.response.HomeResponseDto
import com.konkuk.medicarecall.ui.common.component.NameBar
Expand Down Expand Up @@ -79,7 +78,6 @@ fun HomeScreen(
navigateToStateHealthDetailScreen: (Int) -> Unit,
navigateToStateMentalDetailScreen: (Int) -> Unit,
navigateToGlucoseDetailScreen: (Int) -> Unit,
mainBackStackEntry: NavBackStackEntry,
) {
val homeUiState by homeViewModel.homeUiState.collectAsStateWithLifecycle()
val elderInfoList by homeViewModel.elderInfoList.collectAsStateWithLifecycle()
Expand All @@ -92,14 +90,13 @@ fun HomeScreen(
val snackbarHostState = remember { SnackbarHostState() }
val scope = rememberCoroutineScope()

val updatedName by mainBackStackEntry.savedStateHandle
.getStateFlow<String?>("ELDER_NAME_UPDATED", null)
.collectAsStateWithLifecycle()
// 네비게이션 결과
val updatedName by homeViewModel.updatedName.collectAsStateWithLifecycle()

LaunchedEffect(updatedName) {
updatedName?.let {
homeViewModel.overrideName(it)
mainBackStackEntry.savedStateHandle.remove<String>("ELDER_NAME_UPDATED") // 원샷 처리
homeViewModel.clearUpdatedName()
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ import androidx.compose.runtime.setValue
import androidx.lifecycle.SavedStateHandle
import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import com.konkuk.medicarecall.data.exception.HttpException
import com.konkuk.medicarecall.data.repository.EldersHealthInfoRepository
import com.konkuk.medicarecall.data.repository.EldersInfoRepository
import com.konkuk.medicarecall.data.repository.HomeRepository
Expand All @@ -20,7 +21,6 @@ import kotlinx.coroutines.flow.stateIn
import kotlinx.coroutines.flow.update
import kotlinx.coroutines.launch
import org.koin.android.annotation.KoinViewModel
import com.konkuk.medicarecall.data.exception.HttpException

data class ElderInfo(val id: Int, val name: String, val phone: String?)

Expand All @@ -31,6 +31,17 @@ class HomeViewModel(
private val savedStateHandle: SavedStateHandle,
private val eldersHealthInfoRepository: EldersHealthInfoRepository,
) : ViewModel() {

// 이름 업데이트 수신
private val _updatedName: StateFlow<String?> =
savedStateHandle.getStateFlow("ELDER_NAME_UPDATED", null)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

혹시 이 부분을 어디서 넘겨주고 있나요??

Copy link
Collaborator Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ElderDetailScreen에서 넘겨주고 있습니다!


val updatedName: StateFlow<String?> = _updatedName

fun clearUpdatedName() {
savedStateHandle.remove<String>("ELDER_NAME_UPDATED")
}

fun overrideName(newName: String) {
val id = selectedElderId.value ?: return

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@ import com.konkuk.medicarecall.ui.feature.statistics.weeklycard.WeeklyMentalCard
import com.konkuk.medicarecall.ui.feature.statistics.weeklycard.WeeklySleepCard
import com.konkuk.medicarecall.ui.feature.statistics.weeklycard.WeeklySummaryCard
import com.konkuk.medicarecall.ui.theme.MediCareCallTheme
import kotlinx.coroutines.flow.MutableStateFlow
import org.koin.androidx.compose.koinViewModel
import java.time.LocalDate

Expand Down Expand Up @@ -105,18 +104,22 @@ fun StatisticsScreen(
LaunchedEffect(selectedElderId) {
selectedElderId?.let { statisticsViewModel.setSelectedElderId(it) }
}
val savedStateHandle = navController.currentBackStackEntry?.savedStateHandle
val medsChanged by (savedStateHandle?.getStateFlow("medsChanged", false) ?: MutableStateFlow(
false,
))
.collectAsStateWithLifecycle()

LaunchedEffect(medsChanged) {
if (medsChanged) {
statisticsViewModel.refresh()
savedStateHandle?.set("medsChanged", false)
}
// 복약 변경 이벤트 수신
LaunchedEffect(Unit) {
navController.currentBackStackEntry
?.savedStateHandle
?.getStateFlow("medsChanged", false)
?.collect { changed ->
if (changed) {
statisticsViewModel.onMedsChanged()
navController.currentBackStackEntry
?.savedStateHandle
?.set("medsChanged", false)
}
}
}

StatisticsScreenLayout(
modifier = modifier,
uiState = uiState,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,10 @@ class StatisticsViewModel(
private val repository: StatisticsRepository,
private val eldersHealthInfoRepository: EldersHealthInfoRepository,
) : ViewModel() {

// 네비게이션 결과(복약 변경 등)를 ViewModel 책임으로 처리
fun onMedsChanged() {
refresh()
}
private val _uiState = MutableStateFlow(StatisticsUiState())
val uiState: StateFlow<StatisticsUiState> = _uiState.asStateFlow()

Expand Down