Skip to content

Commit d2be46d

Browse files
committed
feat: Restrict Google Map and Calendar access in offline mode
Disabled Google Map and Calendar screens when offline, leaving only the Quiz button functional. Added checks for network connectivity to conditionally enable or block buttons. Displayed a Toast message to inform users about the lack of internet connection when attempting to access restricted screens.
1 parent 17c5ed3 commit d2be46d

File tree

1 file changed

+29
-11
lines changed
  • app/src/main/java/com/github/lookupgroup27/lookup/ui/overview

1 file changed

+29
-11
lines changed

app/src/main/java/com/github/lookupgroup27/lookup/ui/overview/Menu.kt

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.github.lookupgroup27.lookup.ui.overview
22

33
import android.annotation.SuppressLint
4+
import android.widget.Toast
45
import androidx.compose.foundation.Image
56
import androidx.compose.foundation.layout.*
67
import androidx.compose.foundation.rememberScrollState
@@ -13,13 +14,15 @@ import androidx.compose.ui.*
1314
import androidx.compose.ui.draw.blur
1415
import androidx.compose.ui.graphics.Color
1516
import androidx.compose.ui.layout.ContentScale
17+
import androidx.compose.ui.platform.LocalContext
1618
import androidx.compose.ui.platform.testTag
1719
import androidx.compose.ui.res.painterResource
1820
import androidx.compose.ui.text.font.FontWeight
1921
import androidx.compose.ui.unit.dp
2022
import com.github.lookupgroup27.lookup.R
2123
import com.github.lookupgroup27.lookup.ui.navigation.*
2224
import com.github.lookupgroup27.lookup.ui.profile.profilepic.AvatarViewModel
25+
import com.github.lookupgroup27.lookup.util.NetworkUtils
2326
import com.google.firebase.auth.FirebaseAuth
2427

2528
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
@@ -31,6 +34,9 @@ fun MenuScreen(navigationActions: NavigationActions, avatarViewModel: AvatarView
3134

3235
val userId = auth.currentUser?.uid.orEmpty()
3336

37+
val context = LocalContext.current
38+
val isOnline = remember { mutableStateOf(NetworkUtils.isNetworkAvailable(context)) }
39+
3440
// Fetch the selected avatar for the logged-in user
3541
val selectedAvatar by avatarViewModel.selectedAvatar.collectAsState(initial = null)
3642

@@ -104,23 +110,35 @@ fun MenuScreen(navigationActions: NavigationActions, avatarViewModel: AvatarView
104110
}
105111
Spacer(modifier = Modifier.height(8.dp))
106112

113+
// Blocked buttons when offline
107114
Button(
108-
onClick = { navigationActions.navigateTo(Screen.CALENDAR) },
115+
onClick = {
116+
if (isOnline.value) navigationActions.navigateTo(Screen.CALENDAR)
117+
else
118+
Toast.makeText(
119+
context,
120+
"You're not connected to the internet",
121+
Toast.LENGTH_SHORT)
122+
.show()
123+
},
124+
enabled = isOnline.value,
109125
modifier = Modifier.fillMaxWidth(0.6f)) {
110-
Text(
111-
text = "Calendar",
112-
style = MaterialTheme.typography.headlineSmall,
113-
fontWeight = FontWeight.Bold)
126+
Text("Calendar", style = MaterialTheme.typography.headlineSmall)
114127
}
115-
Spacer(modifier = Modifier.height(8.dp))
116128

117129
Button(
118-
onClick = { navigationActions.navigateTo(Screen.GOOGLE_MAP) },
130+
onClick = {
131+
if (isOnline.value) navigationActions.navigateTo(Screen.GOOGLE_MAP)
132+
else
133+
Toast.makeText(
134+
context,
135+
"You're not connected to the internet",
136+
Toast.LENGTH_SHORT)
137+
.show()
138+
},
139+
enabled = isOnline.value,
119140
modifier = Modifier.fillMaxWidth(0.6f)) {
120-
Text(
121-
text = "Google Map",
122-
style = MaterialTheme.typography.headlineSmall,
123-
fontWeight = FontWeight.Bold)
141+
Text("Google Map", style = MaterialTheme.typography.headlineSmall)
124142
}
125143
}
126144
}

0 commit comments

Comments
 (0)