Skip to content

Commit c7cada7

Browse files
author
=
committed
feat: sub screen
1 parent 6c04b12 commit c7cada7

File tree

14 files changed

+385
-33
lines changed

14 files changed

+385
-33
lines changed

feature/snapTo-script/src/main/kotlin/com/espressodev/gptmap/feature/snapTo_script/SnapToScriptNavigation.kt

+1-6
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,7 @@ package com.espressodev.gptmap.feature.snapTo_script
33
import androidx.navigation.NavController
44
import androidx.navigation.NavGraphBuilder
55
import androidx.navigation.NavOptions
6-
import androidx.navigation.NavType
76
import androidx.navigation.compose.composable
8-
import androidx.navigation.navArgument
97

108
const val IMAGE_ID = "imageId"
119
const val SnapToScriptRoute = "snapTo_script_route"
@@ -16,10 +14,7 @@ fun NavController.navigateToSnapToScript(imageId: String, navOptions: NavOptions
1614
}
1715

1816
fun NavGraphBuilder.snapToScriptScreen() {
19-
composable(
20-
route = SnapToScriptRouteWithArg,
21-
arguments = listOf(navArgument(IMAGE_ID) { type = NavType.StringType })
22-
) {
17+
composable(route = SnapToScriptRouteWithArg) {
2318
SnapToScriptRoute()
2419
}
2520
}

feature/snapTo-script/src/main/kotlin/com/espressodev/gptmap/feature/snapTo_script/SnapToScriptScreen.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,7 @@ private fun Messages(
262262
val jumpToBottomEnabled by remember {
263263
derivedStateOf {
264264
scrollState.firstVisibleItemIndex > 1 ||
265-
scrollState.firstVisibleItemScrollOffset > jumpThreshold
265+
scrollState.firstVisibleItemScrollOffset > jumpThreshold
266266
}
267267
}
268268

feature/street-view/src/main/kotlin/com/espressodev/gptmap/feature/street_view/StreetViewScreen.kt

+29-26
Original file line numberDiff line numberDiff line change
@@ -3,32 +3,26 @@ package com.espressodev.gptmap.feature.street_view
33
import androidx.compose.animation.AnimatedVisibility
44
import androidx.compose.foundation.layout.Box
55
import androidx.compose.foundation.layout.fillMaxSize
6-
import androidx.compose.foundation.layout.padding
76
import androidx.compose.material3.CircularProgressIndicator
8-
import androidx.compose.material3.ExperimentalMaterial3Api
9-
import androidx.compose.material3.Scaffold
107
import androidx.compose.runtime.Composable
118
import androidx.compose.runtime.LaunchedEffect
129
import androidx.compose.runtime.getValue
1310
import androidx.compose.runtime.mutableStateOf
1411
import androidx.compose.runtime.remember
1512
import androidx.compose.ui.Alignment
1613
import androidx.compose.ui.Modifier
14+
import androidx.compose.ui.tooling.preview.Preview
1715
import androidx.hilt.navigation.compose.hiltViewModel
1816
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
2219
import com.espressodev.gptmap.core.save_screenshot.composable.SaveScreenshot
2320
import com.google.android.gms.maps.StreetViewPanoramaOptions
2421
import com.google.android.gms.maps.model.LatLng
2522
import com.google.maps.android.compose.streetview.StreetView
2623
import com.google.maps.android.ktx.MapsExperimentalFeature
2724
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
3025

31-
@OptIn(ExperimentalMaterial3Api::class)
3226
@Composable
3327
internal fun StreetViewRoute(
3428
popUp: () -> Unit,
@@ -37,22 +31,14 @@ internal fun StreetViewRoute(
3731
viewModel: StreetViewViewModel = hiltViewModel()
3832
) {
3933
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,
4840
modifier = modifier
49-
) {
50-
StreetViewScreen(
51-
latitude = uiState.latitude,
52-
longitude = uiState.longitude,
53-
modifier = Modifier.padding(it)
54-
)
55-
}
41+
)
5642

5743
SaveScreenshot(
5844
onClick = viewModel::initializeScreenCaptureBroadcastReceiver,
@@ -70,11 +56,16 @@ internal fun StreetViewRoute(
7056

7157
@OptIn(MapsExperimentalFeature::class)
7258
@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+
) {
7465
val (isStreetViewLoaded, setStreetViewLoaded) = remember { mutableStateOf(value = false) }
7566

7667
LaunchedEffect(key1 = latitude) {
77-
delay(1000L)
68+
delay(1250L)
7869
setStreetViewLoaded(true)
7970
}
8071

@@ -93,5 +84,17 @@ private fun StreetViewScreen(latitude: Double, longitude: Double, modifier: Modi
9384
AnimatedVisibility(!isStreetViewLoaded, modifier = Modifier.align(Alignment.Center)) {
9485
CircularProgressIndicator()
9586
}
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, {})
9699
}
97100
}

feature/sub/.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
/build

feature/sub/build.gradle.kts

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
plugins {
2+
alias(libs.plugins.gptmap.android.library.compose)
3+
alias(libs.plugins.gptmap.android.feature)
4+
}
5+
6+
android {
7+
namespace = "com.espressodev.gptmap.feature.sub"
8+
}
9+
10+
dependencies {
11+
12+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package com.espressodev.gptmap.feature.sub
2+
3+
import androidx.test.platform.app.InstrumentationRegistry
4+
import androidx.test.ext.junit.runners.AndroidJUnit4
5+
6+
import org.junit.Test
7+
import org.junit.runner.RunWith
8+
9+
import org.junit.Assert.*
10+
11+
/**
12+
* Instrumented test, which will execute on an Android device.
13+
*
14+
* See [testing documentation](http://d.android.com/tools/testing).
15+
*/
16+
@RunWith(AndroidJUnit4::class)
17+
class ExampleInstrumentedTest {
18+
@Test
19+
fun useAppContext() {
20+
// Context of the app under test.
21+
val appContext = InstrumentationRegistry.getInstrumentation().targetContext
22+
assertEquals("com.espressodev.gptmap.feature.sub.test", appContext.packageName)
23+
}
24+
}
+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
3+
4+
</manifest>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
package com.espressodev.gptmap.feature.sub
2+
3+
class SubNavigation {
4+
}

0 commit comments

Comments
 (0)