From aa21f0a1e3c2a073a162861a9e69e84f866e9855 Mon Sep 17 00:00:00 2001 From: Android Dev Date: Thu, 1 Feb 2024 12:35:33 -0800 Subject: [PATCH 1/3] E2E Main branch (#79) --- app/build.gradle.kts | 26 +++++++++---------- .../com/example/marsphotos/MainActivity.kt | 7 ++--- .../example/marsphotos/ui/MarsPhotosApp.kt | 8 +++--- .../marsphotos/ui/screens/HomeScreen.kt | 18 ++++++++----- .../com/example/marsphotos/ui/theme/Theme.kt | 8 +++--- build.gradle.kts | 6 ++--- 6 files changed, 36 insertions(+), 37 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 7c10324..0f0167e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -14,22 +14,20 @@ * limitations under the License. */ -@file:Suppress("UnstableApiUsage") - plugins { id("com.android.application") id("org.jetbrains.kotlin.android") - id("org.jetbrains.kotlin.plugin.serialization") version "1.8.10" + id("org.jetbrains.kotlin.plugin.serialization") version "1.9.10" } android { namespace = "com.example.marsphotos" - compileSdk = 33 + compileSdk = 34 defaultConfig { applicationId = "com.example.marsphotos" minSdk = 24 - targetSdk = 33 + targetSdk = 34 versionCode = 1 versionName = "1.0" @@ -59,7 +57,7 @@ android { compose = true } composeOptions { - kotlinCompilerExtensionVersion = "1.4.7" + kotlinCompilerExtensionVersion = "1.5.3" } packaging { resources { @@ -71,25 +69,25 @@ android { dependencies { // Import the Compose BOM - implementation(platform("androidx.compose:compose-bom:2023.06.01")) - implementation("androidx.activity:activity-compose:1.7.2") + implementation(platform("androidx.compose:compose-bom:2023.08.00")) + implementation("androidx.activity:activity-compose:1.8.0") implementation("androidx.compose.material3:material3") implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-tooling-preview") - implementation("androidx.core:core-ktx:1.10.1") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1") - implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1") + implementation("androidx.core:core-ktx:1.12.0") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2") + implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2") // Retrofit implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0") implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("io.coil-kt:coil-compose:2.4.0") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.6.0") testImplementation("junit:junit:4.13.2") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.1") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") - androidTestImplementation(platform("androidx.compose:compose-bom:2023.06.01")) + androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") androidTestImplementation("androidx.test.ext:junit:1.1.5") diff --git a/app/src/main/java/com/example/marsphotos/MainActivity.kt b/app/src/main/java/com/example/marsphotos/MainActivity.kt index 74b88ab..f8ae999 100644 --- a/app/src/main/java/com/example/marsphotos/MainActivity.kt +++ b/app/src/main/java/com/example/marsphotos/MainActivity.kt @@ -19,24 +19,21 @@ package com.example.marsphotos import android.os.Bundle import androidx.activity.ComponentActivity import androidx.activity.compose.setContent +import androidx.activity.enableEdgeToEdge import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.material3.MaterialTheme import androidx.compose.material3.Surface import androidx.compose.ui.Modifier -import androidx.core.view.WindowCompat import com.example.marsphotos.ui.MarsPhotosApp import com.example.marsphotos.ui.theme.MarsPhotosTheme class MainActivity : ComponentActivity() { override fun onCreate(savedInstanceState: Bundle?) { + enableEdgeToEdge() super.onCreate(savedInstanceState) - WindowCompat.setDecorFitsSystemWindows(window, false) setContent { MarsPhotosTheme { - // A surface container using the 'background' color from the theme Surface( modifier = Modifier.fillMaxSize(), - color = MaterialTheme.colorScheme.background ) { MarsPhotosApp() } diff --git a/app/src/main/java/com/example/marsphotos/ui/MarsPhotosApp.kt b/app/src/main/java/com/example/marsphotos/ui/MarsPhotosApp.kt index 27cf262..88d4310 100644 --- a/app/src/main/java/com/example/marsphotos/ui/MarsPhotosApp.kt +++ b/app/src/main/java/com/example/marsphotos/ui/MarsPhotosApp.kt @@ -19,7 +19,6 @@ package com.example.marsphotos.ui import androidx.compose.foundation.layout.fillMaxSize -import androidx.compose.foundation.layout.padding import androidx.compose.material3.CenterAlignedTopAppBar import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.MaterialTheme @@ -45,15 +44,14 @@ fun MarsPhotosApp() { topBar = { MarsTopAppBar(scrollBehavior = scrollBehavior) } ) { Surface( - modifier = Modifier - .fillMaxSize() - .padding(it) + modifier = Modifier.fillMaxSize() ) { val marsViewModel: MarsViewModel = viewModel(factory = MarsViewModel.Factory) HomeScreen( marsUiState = marsViewModel.marsUiState, - retryAction = marsViewModel::getMarsPhotos + retryAction = marsViewModel::getMarsPhotos, + contentPadding = it ) } } diff --git a/app/src/main/java/com/example/marsphotos/ui/screens/HomeScreen.kt b/app/src/main/java/com/example/marsphotos/ui/screens/HomeScreen.kt index 13dbe69..1465930 100644 --- a/app/src/main/java/com/example/marsphotos/ui/screens/HomeScreen.kt +++ b/app/src/main/java/com/example/marsphotos/ui/screens/HomeScreen.kt @@ -49,14 +49,16 @@ import com.example.marsphotos.ui.theme.MarsPhotosTheme @Composable fun HomeScreen( - marsUiState: MarsUiState, retryAction: () -> Unit, modifier: Modifier = Modifier + marsUiState: MarsUiState, + retryAction: () -> Unit, + modifier: Modifier = Modifier, + contentPadding: PaddingValues = PaddingValues(0.dp), ) { when (marsUiState) { is MarsUiState.Loading -> LoadingScreen(modifier = modifier.fillMaxSize()) is MarsUiState.Success -> PhotosGridScreen( - marsUiState.photos, modifier = modifier.fillMaxWidth() + marsUiState.photos, contentPadding = contentPadding, modifier = modifier.fillMaxWidth() ) - is MarsUiState.Error -> ErrorScreen(retryAction, modifier = modifier.fillMaxSize()) } } @@ -97,11 +99,15 @@ fun ErrorScreen(retryAction: () -> Unit, modifier: Modifier = Modifier) { * The home screen displaying photo grid. */ @Composable -fun PhotosGridScreen(photos: List, modifier: Modifier = Modifier) { +fun PhotosGridScreen( + photos: List, + modifier: Modifier = Modifier, + contentPadding: PaddingValues = PaddingValues(0.dp), +) { LazyVerticalGrid( columns = GridCells.Adaptive(150.dp), - modifier = modifier, - contentPadding = PaddingValues(4.dp) + modifier = modifier.padding(horizontal = 4.dp), + contentPadding = contentPadding, ) { items(items = photos, key = { photo -> photo.id }) { photo -> MarsPhotoCard( diff --git a/app/src/main/java/com/example/marsphotos/ui/theme/Theme.kt b/app/src/main/java/com/example/marsphotos/ui/theme/Theme.kt index 54db37f..4007559 100644 --- a/app/src/main/java/com/example/marsphotos/ui/theme/Theme.kt +++ b/app/src/main/java/com/example/marsphotos/ui/theme/Theme.kt @@ -26,7 +26,6 @@ import androidx.compose.material3.dynamicLightColorScheme import androidx.compose.material3.lightColorScheme import androidx.compose.runtime.Composable import androidx.compose.runtime.SideEffect -import androidx.compose.ui.graphics.Color import androidx.compose.ui.graphics.toArgb import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView @@ -65,11 +64,12 @@ fun MarsPhotosTheme( if (!view.isInEditMode) { SideEffect { val window = (view.context as Activity).window - window.statusBarColor = Color.Transparent.toArgb() - WindowCompat.getInsetsController(window, view).isAppearanceLightStatusBars = !darkTheme + window.statusBarColor = colorScheme.primary.toArgb() + WindowCompat + .getInsetsController(window, view) + .isAppearanceLightStatusBars = darkTheme } } - MaterialTheme( colorScheme = colorScheme, typography = Typography, diff --git a/build.gradle.kts b/build.gradle.kts index 3b1acf5..fc8e13d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,9 +17,9 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.0.2" apply false - id("com.android.library") version "8.0.2" apply false - id("org.jetbrains.kotlin.android") version "1.8.21" apply false + id("com.android.application") version "8.1.3" apply false + id("com.android.library") version "8.1.3" apply false + id("org.jetbrains.kotlin.android") version "1.9.10" apply false } tasks.register("clean", Delete::class) { From cad4c1be22449e594d75af62ea4a3b42a56a3cdb Mon Sep 17 00:00:00 2001 From: ashir7171 Date: Sat, 25 May 2024 23:26:52 +0100 Subject: [PATCH 2/3] E2E Main branch (#79) --- app/build.gradle.kts | 3 +++ build.gradle.kts | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0f0167e..4c2fbeb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -87,6 +87,9 @@ dependencies { testImplementation("junit:junit:4.13.2") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") + + //coil + implementation("io.coil-kt:coil-compose:2.4.0") androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") diff --git a/build.gradle.kts b/build.gradle.kts index fc8e13d..44b2f39 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,8 +17,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.1.3" apply false - id("com.android.library") version "8.1.3" apply false + id("com.android.application") version "8.4.0" apply false + id("com.android.library") version "8.4.0" apply false id("org.jetbrains.kotlin.android") version "1.9.10" apply false } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7052911..84923fd 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Jul 07 14:05:48 IST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME From 47455e5fdacee9a1fcda9698ee27633296a77214 Mon Sep 17 00:00:00 2001 From: ashir7171 Date: Sat, 25 May 2024 23:26:52 +0100 Subject: [PATCH 3/3] E2E Main branch (#79) --- app/build.gradle.kts | 3 +++ build.gradle.kts | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 2 +- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 0f0167e..4c2fbeb 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -87,6 +87,9 @@ dependencies { testImplementation("junit:junit:4.13.2") testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3") + + //coil + implementation("io.coil-kt:coil-compose:2.4.0") androidTestImplementation(platform("androidx.compose:compose-bom:2023.08.00")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") diff --git a/build.gradle.kts b/build.gradle.kts index fc8e13d..44b2f39 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -17,8 +17,8 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.1.3" apply false - id("com.android.library") version "8.1.3" apply false + id("com.android.application") version "8.4.0" apply false + id("com.android.library") version "8.4.0" apply false id("org.jetbrains.kotlin.android") version "1.9.10" apply false } diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7052911..84923fd 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ #Thu Jul 07 14:05:48 IST 2022 distributionBase=GRADLE_USER_HOME -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip distributionPath=wrapper/dists zipStorePath=wrapper/dists zipStoreBase=GRADLE_USER_HOME