11package com.espressodev.gptmap.feature.street_view
22
3- import androidx.compose.animation.AnimatedVisibility
43import androidx.compose.foundation.layout.Box
54import androidx.compose.foundation.layout.fillMaxSize
5+ import androidx.compose.foundation.layout.padding
6+ import androidx.compose.material3.ExperimentalMaterial3Api
7+ import androidx.compose.material3.Scaffold
68import androidx.compose.runtime.Composable
79import androidx.compose.runtime.LaunchedEffect
810import androidx.compose.runtime.getValue
911import androidx.compose.runtime.mutableStateOf
1012import androidx.compose.runtime.remember
1113import androidx.compose.runtime.setValue
1214import androidx.compose.ui.Modifier
13- import androidx.compose.ui.zIndex
1415import androidx.hilt.navigation.compose.hiltViewModel
1516import androidx.lifecycle.compose.collectAsStateWithLifecycle
16- import com.espressodev.gptmap.core.designsystem.GmIcons
17- import com.espressodev.gptmap.core.designsystem.component.GmDraggableButton
17+ import com.espressodev.gptmap.core.designsystem.IconType
18+ import com.espressodev.gptmap.core.designsystem.TextType
19+ import com.espressodev.gptmap.core.designsystem.component.GmTopAppBar
1820import com.espressodev.gptmap.core.designsystem.component.LottieAnimationView
21+ import com.espressodev.gptmap.core.save_screenshot.composable.SaveScreenshot
1922import com.google.android.gms.maps.StreetViewPanoramaOptions
2023import com.google.android.gms.maps.model.LatLng
2124import com.google.maps.android.compose.streetview.StreetView
2225import com.google.maps.android.ktx.MapsExperimentalFeature
2326import kotlinx.coroutines.delay
2427import com.espressodev.gptmap.core.designsystem.R.raw as AppRaw
28+ import com.espressodev.gptmap.core.designsystem.R.drawable as AppDrawable
29+ import com.espressodev.gptmap.core.designsystem.R.string as AppText
30+
31+ @OptIn(ExperimentalMaterial3Api ::class )
2532@Composable
2633fun StreetViewRoute (
2734 latitude : Double ,
2835 longitude : Double ,
36+ popUp : () -> Unit ,
37+ navigateToScreenshot : () -> Unit ,
2938 viewModel : StreetViewViewModel = hiltViewModel()
3039) {
3140 LaunchedEffect (key1 = latitude, key2 = longitude) {
@@ -34,20 +43,27 @@ fun StreetViewRoute(
3443 val uiState by viewModel.uiState.collectAsStateWithLifecycle(
3544 initialValue = StreetViewUiState (LatLng (latitude, longitude))
3645 )
37- StreetViewScreen (uiState, onCameraButtonClick = viewModel::onCameraButtonClick)
38- }
46+ Scaffold (
47+ topBar = {
48+ GmTopAppBar (
49+ text = TextType .Res (AppText .street_view),
50+ icon = IconType .Bitmap (AppDrawable .street_view),
51+ onBackClick = popUp
52+ )
53+ }
54+ ) {
55+ StreetViewScreen (modifier = Modifier .padding(it), uiState)
56+ }
3957
58+ SaveScreenshot (onSuccess = navigateToScreenshot)
59+ }
4060
4161@OptIn(MapsExperimentalFeature ::class )
4262@Composable
43- fun StreetViewScreen (uiState : StreetViewUiState , onCameraButtonClick : ( Boolean ) -> Unit ) {
63+ fun StreetViewScreen (modifier : Modifier , uiState : StreetViewUiState ) {
4464 var isStreetViewLoaded by remember { mutableStateOf(value = false ) }
4565
46- Box (modifier = Modifier .fillMaxSize()) {
47-
48- AnimatedVisibility (visible = uiState.cameraButtonState, modifier = Modifier .zIndex(4f )) {
49- GmDraggableButton (icon = GmIcons .CameraFilled , onClick = { onCameraButtonClick(true ) })
50- }
66+ Box (modifier = modifier.fillMaxSize()) {
5167
5268 StreetView (
5369 streetViewPanoramaOptionsFactory = {
@@ -64,4 +80,4 @@ fun StreetViewScreen(uiState: StreetViewUiState, onCameraButtonClick: (Boolean)
6480 isStreetViewLoaded = true
6581 }
6682 }
67- }
83+ }
0 commit comments