1
+ import android.content.Context
2
+ import android.location.LocationManager
3
+ import android.os.Build
4
+ import android.widget.Toast
1
5
import androidx.compose.foundation.Image
2
6
import androidx.compose.foundation.clickable
3
7
import androidx.compose.foundation.layout.Row
@@ -17,27 +21,40 @@ import androidx.compose.ui.graphics.BlurEffect
17
21
import androidx.compose.ui.graphics.ColorFilter
18
22
import androidx.compose.ui.graphics.graphicsLayer
19
23
import androidx.compose.ui.layout.ContentScale
24
+ import androidx.compose.ui.platform.LocalContext
20
25
import androidx.compose.ui.res.painterResource
21
26
import androidx.compose.ui.res.stringResource
22
27
import androidx.compose.ui.text.font.FontWeight
23
28
import androidx.compose.ui.unit.dp
24
29
import com.windscribe.mobile.R
30
+ import com.windscribe.mobile.ui.AppStartActivity
25
31
import com.windscribe.mobile.ui.common.RequestLocationPermissions
26
32
import com.windscribe.mobile.ui.connection.ConnectionViewmodel
27
33
import com.windscribe.mobile.ui.connection.NetworkInfoState
34
+ import com.windscribe.mobile.ui.connection.ToastMessage
28
35
import com.windscribe.mobile.ui.helper.hapticClickable
29
36
import com.windscribe.mobile.ui.home.HomeViewmodel
30
37
import com.windscribe.mobile.ui.nav.LocalNavController
31
38
import com.windscribe.mobile.ui.nav.Screen
39
+ import com.windscribe.mobile.ui.preferences.robert.RobertGoToState
32
40
import com.windscribe.mobile.ui.theme.AppColors
33
41
import com.windscribe.mobile.ui.theme.font16
34
42
35
43
internal enum class PermissionDialogType {
36
44
ForegroundLocation , BackgroundLocation , OpenSettings , None
37
45
}
38
46
47
+ private fun isLocationEnabled (context : Context ): Boolean {
48
+ val locationManager = context.getSystemService(Context .LOCATION_SERVICE ) as ? LocationManager
49
+ return if (Build .VERSION .SDK_INT >= Build .VERSION_CODES .P ) {
50
+ locationManager?.isLocationEnabled == true
51
+ } else {
52
+ true
53
+ }
54
+ }
39
55
@Composable
40
56
fun NetworkNameSheet (connectionViewmodel : ConnectionViewmodel , homeViewmodel : HomeViewmodel ) {
57
+ val activity = LocalContext .current as AppStartActivity
41
58
val networkInfo by connectionViewmodel.networkInfoState.collectAsState()
42
59
val hapticEnabled by homeViewmodel.hapticFeedbackEnabled.collectAsState()
43
60
var showPermissionRequest by remember { mutableStateOf(false ) }
@@ -49,7 +66,15 @@ fun NetworkNameSheet(connectionViewmodel: ConnectionViewmodel, homeViewmodel: Ho
49
66
" network_name" ,
50
67
networkInfo.name
51
68
)
52
- navController.navigate(Screen .NetworkDetails .route)
69
+ if (networkInfo is NetworkInfoState .Unknown ) {
70
+ if (! isLocationEnabled(activity)) {
71
+ Toast .makeText(activity, " Enable location services to access network name & restart app." , Toast .LENGTH_SHORT ).show()
72
+ return @RequestLocationPermissions
73
+ }
74
+ Toast .makeText(activity, " Unable to get network name." , Toast .LENGTH_SHORT ).show()
75
+ } else {
76
+ navController.navigate(Screen .NetworkDetails .route)
77
+ }
53
78
}
54
79
}
55
80
Row (verticalAlignment = Alignment .CenterVertically ) {
0 commit comments