@@ -13,10 +13,15 @@ import androidx.compose.material.Text
1313import androidx.compose.runtime.Composable
1414import androidx.compose.runtime.LaunchedEffect
1515import androidx.compose.runtime.getValue
16+ import androidx.compose.runtime.mutableStateOf
17+ import androidx.compose.runtime.remember
18+ import androidx.compose.runtime.setValue
1619import androidx.compose.ui.Alignment
1720import androidx.compose.ui.Modifier
21+ import androidx.compose.ui.geometry.Rect
1822import androidx.compose.ui.graphics.Color
19- import androidx.compose.ui.platform.LocalContext
23+ import androidx.compose.ui.layout.boundsInRoot
24+ import androidx.compose.ui.layout.onGloballyPositioned
2025import androidx.compose.ui.res.painterResource
2126import androidx.compose.ui.text.font.FontWeight
2227import androidx.compose.ui.text.style.TextAlign
@@ -31,6 +36,7 @@ import androidx.navigation.compose.composable
3136import androidx.navigation.compose.currentBackStackEntryAsState
3237import androidx.navigation.compose.rememberNavController
3338import com.cornellappdev.uplift.ui.components.general.CheckInPopUp
39+ import com.cornellappdev.uplift.ui.components.general.ConfettiBurst
3440import com.cornellappdev.uplift.ui.nav.BottomNavScreens
3541import com.cornellappdev.uplift.ui.nav.popBackClass
3642import com.cornellappdev.uplift.ui.nav.popBackGym
@@ -51,6 +57,7 @@ import com.cornellappdev.uplift.ui.viewmodels.gyms.GymDetailViewModel
5157import com.cornellappdev.uplift.ui.viewmodels.nav.RootNavigationViewModel
5258import com.cornellappdev.uplift.ui.viewmodels.profile.CheckInMode
5359import com.cornellappdev.uplift.ui.viewmodels.profile.CheckInViewModel
60+ import com.cornellappdev.uplift.ui.viewmodels.profile.ConfettiViewModel
5461import com.cornellappdev.uplift.util.PRIMARY_BLACK
5562import com.cornellappdev.uplift.util.PRIMARY_YELLOW
5663import com.cornellappdev.uplift.util.montserratFamily
@@ -74,6 +81,7 @@ fun MainNavigationWrapper(
7481
7582) {
7683
84+ val confettiViewModel: ConfettiViewModel = hiltViewModel()
7785 val checkInViewModel: CheckInViewModel = hiltViewModel()
7886 val rootNavigationUiState = rootNavigationViewModel.collectUiStateValue()
7987 val startDestination = rootNavigationUiState.startDestination
@@ -82,6 +90,7 @@ fun MainNavigationWrapper(
8290 val systemUiController: SystemUiController = rememberSystemUiController()
8391
8492 val checkInUiState = checkInViewModel.collectUiStateValue()
93+ var confettiBounds by remember { mutableStateOf<Rect ?>(null ) }
8594
8695 val yourShimmerTheme = defaultShimmerTheme.copy(
8796 shaderColors = listOf (
@@ -252,24 +261,37 @@ fun MainNavigationWrapper(
252261 composable<UpliftRootRoute .Favorites > {}
253262 }
254263
255- AnimatedVisibility (
256- visible = checkInUiState.showPopUp && isMainScreen(),
257- modifier = Modifier
258- .align(Alignment .BottomCenter )
259- .fillMaxWidth()
260- .padding(
261- start = 10 .dp,
262- end = 9 .dp,
263- bottom = it.calculateBottomPadding() + 13 .dp
264- )
265- ){
266- CheckInPopUp (
267- gymName = checkInUiState.gymName,
268- currentTimeText = checkInUiState.timeText,
269- onDismiss = { checkInViewModel.onDismiss() },
270- onCheckIn = { checkInViewModel.onCheckIn() },
271- onClosePopUp = { checkInViewModel.onClose() },
272- mode = checkInUiState.mode,
264+ Box (modifier = Modifier .fillMaxSize()){
265+ AnimatedVisibility (
266+ visible = checkInUiState.showPopUp && isMainScreen(),
267+ modifier = Modifier
268+ .align(Alignment .BottomCenter )
269+ .fillMaxWidth()
270+ .padding(
271+ start = 10 .dp,
272+ end = 9 .dp,
273+ bottom = it.calculateBottomPadding() + 13 .dp
274+ )
275+ ){
276+ Box (
277+ modifier = Modifier .onGloballyPositioned { coords ->
278+ confettiBounds = coords.boundsInRoot()
279+ }
280+ ){
281+ CheckInPopUp (
282+ gymName = checkInUiState.gymName,
283+ currentTimeText = checkInUiState.timeText,
284+ onDismiss = checkInViewModel::onDismiss,
285+ onCheckIn = checkInViewModel::onCheckIn,
286+ onClosePopUp = checkInViewModel::onClose,
287+ mode = checkInUiState.mode,
288+ )
289+ }
290+ }
291+ ConfettiBurst (
292+ confettiViewModel = confettiViewModel,
293+ originRectInRoot = confettiBounds,
294+ modifier = Modifier
273295 )
274296 }
275297
0 commit comments