@@ -39,6 +39,7 @@ import dagger.hilt.android.lifecycle.HiltViewModel
3939import kotlinx.coroutines.launch
4040import android.util.Log
4141import androidx.compose.foundation.clickable
42+ import androidx.compose.runtime.rememberCoroutineScope
4243import com.example.terrace.core.auth.SessionManager
4344import com.example.terrace.core.navigation.Screen
4445import androidx.compose.ui.platform.LocalContext
@@ -49,6 +50,9 @@ import dagger.hilt.EntryPoint
4950import dagger.hilt.InstallIn
5051import dagger.hilt.android.EntryPointAccessors
5152import dagger.hilt.components.SingletonComponent
53+ import androidx.compose.foundation.layout.WindowInsets
54+ import androidx.compose.foundation.layout.windowInsetsTopHeight
55+ import androidx.compose.foundation.layout.statusBars
5256
5357val Philosopher = FontFamily (
5458 Font (R .font.philosopher, FontWeight .Normal )
@@ -71,6 +75,10 @@ fun LeaderboardScreen(navController: NavController, viewModel: LeaderboardViewMo
7175 ).sessionManager()
7276 }
7377
78+ val isNavigating = remember { mutableStateOf(false ) }
79+ val username = remember { mutableStateOf(" User" ) }
80+ val scope = rememberCoroutineScope()
81+
7482 LaunchedEffect (Unit ) {
7583 if (sessionManager.getAuthToken() == null ) {
7684 navController.navigate(Screen .Login .route) {
@@ -163,8 +171,14 @@ fun LeaderboardScreen(navController: NavController, viewModel: LeaderboardViewMo
163171 ) {
164172 items(entries) { entry ->
165173 LeaderboardRow (entry, onClick = {
166- navController.popBackStack()
167- navController.navigate(" home/${entry.score} /true" )
174+ username.value = entry.name
175+ isNavigating.value = true
176+ scope.launch {
177+ delay(2000 ) // 2 second delay
178+ navController.popBackStack()
179+ navController.navigate(" home/${entry.score} /true" )
180+ isNavigating.value = false
181+ }
168182 })
169183 }
170184 }
@@ -186,6 +200,29 @@ fun LeaderboardScreen(navController: NavController, viewModel: LeaderboardViewMo
186200 }
187201 }
188202 }
203+
204+ // Move this overlay to root Box level
205+ if (isNavigating.value) {
206+ Box (
207+ modifier = Modifier
208+ .fillMaxSize()
209+ .background(Color .Black .copy(alpha = 0.8f ))
210+ .systemBarsPadding()
211+ ) {
212+ Column (
213+ modifier = Modifier .fillMaxSize(),
214+ verticalArrangement = Arrangement .Center ,
215+ horizontalAlignment = Alignment .CenterHorizontally
216+ ) {
217+ LoadingDots ()
218+ Text (
219+ text = " Loading ${username.value} 's Sky..." ,
220+ color = Color .White ,
221+ fontFamily = Philosopher
222+ )
223+ }
224+ }
225+ }
189226 }
190227}
191228
0 commit comments