@@ -3,32 +3,26 @@ package com.espressodev.gptmap.feature.street_view
3
3
import androidx.compose.animation.AnimatedVisibility
4
4
import androidx.compose.foundation.layout.Box
5
5
import androidx.compose.foundation.layout.fillMaxSize
6
- import androidx.compose.foundation.layout.padding
7
6
import androidx.compose.material3.CircularProgressIndicator
8
- import androidx.compose.material3.ExperimentalMaterial3Api
9
- import androidx.compose.material3.Scaffold
10
7
import androidx.compose.runtime.Composable
11
8
import androidx.compose.runtime.LaunchedEffect
12
9
import androidx.compose.runtime.getValue
13
10
import androidx.compose.runtime.mutableStateOf
14
11
import androidx.compose.runtime.remember
15
12
import androidx.compose.ui.Alignment
16
13
import androidx.compose.ui.Modifier
14
+ import androidx.compose.ui.tooling.preview.Preview
17
15
import androidx.hilt.navigation.compose.hiltViewModel
18
16
import androidx.lifecycle.compose.collectAsStateWithLifecycle
19
- import com.espressodev.gptmap.core.designsystem.IconType
20
- import com.espressodev.gptmap.core.designsystem.TextType
21
- import com.espressodev.gptmap.core.designsystem.component.GmTopAppBar
17
+ import com.espressodev.gptmap.core.designsystem.component.BackButton
18
+ import com.espressodev.gptmap.core.designsystem.theme.GptmapTheme
22
19
import com.espressodev.gptmap.core.save_screenshot.composable.SaveScreenshot
23
20
import com.google.android.gms.maps.StreetViewPanoramaOptions
24
21
import com.google.android.gms.maps.model.LatLng
25
22
import com.google.maps.android.compose.streetview.StreetView
26
23
import com.google.maps.android.ktx.MapsExperimentalFeature
27
24
import kotlinx.coroutines.delay
28
- import com.espressodev.gptmap.core.designsystem.R.drawable as AppDrawable
29
- import com.espressodev.gptmap.core.designsystem.R.string as AppText
30
25
31
- @OptIn(ExperimentalMaterial3Api ::class )
32
26
@Composable
33
27
internal fun StreetViewRoute (
34
28
popUp : () -> Unit ,
@@ -37,22 +31,14 @@ internal fun StreetViewRoute(
37
31
viewModel : StreetViewViewModel = hiltViewModel()
38
32
) {
39
33
val uiState by viewModel.uiState.collectAsStateWithLifecycle()
40
- Scaffold (
41
- topBar = {
42
- GmTopAppBar (
43
- text = TextType .Res (AppText .street_view),
44
- icon = IconType .Bitmap (AppDrawable .street_view),
45
- onBackClick = popUp
46
- )
47
- },
34
+
35
+
36
+ StreetViewScreen (
37
+ latitude = uiState.latitude,
38
+ longitude = uiState.longitude,
39
+ popUp = popUp,
48
40
modifier = modifier
49
- ) {
50
- StreetViewScreen (
51
- latitude = uiState.latitude,
52
- longitude = uiState.longitude,
53
- modifier = Modifier .padding(it)
54
- )
55
- }
41
+ )
56
42
57
43
SaveScreenshot (
58
44
onClick = viewModel::initializeScreenCaptureBroadcastReceiver,
@@ -70,11 +56,16 @@ internal fun StreetViewRoute(
70
56
71
57
@OptIn(MapsExperimentalFeature ::class )
72
58
@Composable
73
- private fun StreetViewScreen (latitude : Double , longitude : Double , modifier : Modifier = Modifier ) {
59
+ private fun StreetViewScreen (
60
+ latitude : Double ,
61
+ longitude : Double ,
62
+ popUp : () -> Unit ,
63
+ modifier : Modifier = Modifier
64
+ ) {
74
65
val (isStreetViewLoaded, setStreetViewLoaded) = remember { mutableStateOf(value = false ) }
75
66
76
67
LaunchedEffect (key1 = latitude) {
77
- delay(1000L )
68
+ delay(1250L )
78
69
setStreetViewLoaded(true )
79
70
}
80
71
@@ -93,5 +84,17 @@ private fun StreetViewScreen(latitude: Double, longitude: Double, modifier: Modi
93
84
AnimatedVisibility (! isStreetViewLoaded, modifier = Modifier .align(Alignment .Center )) {
94
85
CircularProgressIndicator ()
95
86
}
87
+
88
+ if (isStreetViewLoaded) {
89
+ BackButton { popUp() }
90
+ }
91
+ }
92
+ }
93
+
94
+ @Preview(showBackground = true )
95
+ @Composable
96
+ private fun StreetViewPreview () {
97
+ GptmapTheme {
98
+ StreetViewScreen (latitude = 10.0 , longitude = 20.0 , {})
96
99
}
97
100
}
0 commit comments