11package com.eatssu.android.presentation.cafeteria.review
22
33import androidx.compose.runtime.Composable
4+ import androidx.compose.runtime.LaunchedEffect
5+ import androidx.compose.runtime.collectAsState
6+ import androidx.compose.runtime.getValue
47import androidx.navigation.NavHostController
58import androidx.navigation.compose.NavHost
69import androidx.navigation.compose.composable
@@ -17,6 +20,8 @@ object ReviewNav {
1720 const val Modify = " modify"
1821}
1922
23+ private const val KEY_REVIEW_LIST_REFRESH_NONCE = " review_list_refresh_nonce"
24+
2025@Composable
2126fun ReviewNav (
2227 navHostController : NavHostController = rememberNavController(),
@@ -31,11 +36,16 @@ fun ReviewNav(
3136 startDestination = ReviewNav .List
3237 ) {
3338 // 리뷰 보기
34- composable(ReviewNav .List ) {
39+ composable(ReviewNav .List ) { backStackEntry ->
40+ val refreshNonce by backStackEntry.savedStateHandle
41+ .getStateFlow(KEY_REVIEW_LIST_REFRESH_NONCE , 0L )
42+ .collectAsState()
43+
3544 ReviewListScreen (
3645 menuName = menuName,
3746 menuType = menuType,
3847 id = id,
48+ refreshNonce = refreshNonce,
3949 onBack = { onExit() },
4050 onModifyClick = { review ->
4151 // 선택된 리뷰 데이터를 Modify 화면으로 전달
@@ -54,6 +64,12 @@ fun ReviewNav(
5464 }
5565 }
5666 )
67+
68+ LaunchedEffect (refreshNonce) {
69+ if (refreshNonce != 0L ) {
70+ backStackEntry.savedStateHandle[KEY_REVIEW_LIST_REFRESH_NONCE ] = 0L
71+ }
72+ }
5773 }
5874
5975 // 리뷰 작성
@@ -62,7 +78,12 @@ fun ReviewNav(
6278 menuType = menuType,
6379 menuName = menuName,
6480 id = id,
65- onBack = { navHostController.popBackStack() },
81+ onBack = {
82+ navHostController.previousBackStackEntry
83+ ?.savedStateHandle
84+ ?.set(KEY_REVIEW_LIST_REFRESH_NONCE , System .currentTimeMillis())
85+ navHostController.popBackStack()
86+ },
6687 )
6788 }
6889
@@ -84,4 +105,4 @@ fun ReviewNav(
84105 )
85106 }
86107 }
87- }
108+ }
0 commit comments