Skip to content

Commit c5a967e

Browse files
authored
Final update deps june 2025 (#41)
1 parent acf292d commit c5a967e

File tree

39 files changed

+597
-572
lines changed

39 files changed

+597
-572
lines changed

.gitignore

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,18 @@
1-
.gradle
21
*.iml
3-
.idea/
4-
build/
5-
out/
2+
.kotlin
3+
.gradle
4+
**/build/
5+
xcuserdata
6+
!src/**/build/
67
local.properties
8+
.idea
79
.DS_Store
8-
xcuserdata/
9-
Pods/
10-
/.kotlin/
10+
captures
11+
.externalNativeBuild
12+
.cxx
13+
*.xcodeproj/*
14+
!*.xcodeproj/project.pbxproj
15+
!*.xcodeproj/xcshareddata/
16+
!*.xcodeproj/project.xcworkspace/
17+
!*.xcworkspace/contents.xcworkspacedata
18+
**/xcshareddata/WorkspaceSettings.xcsettings

build.gradle.kts

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,7 @@ plugins {
33
// in each subproject's classloader
44
alias(libs.plugins.androidApplication) apply false
55
alias(libs.plugins.androidLibrary) apply false
6-
alias(libs.plugins.jetbrainsCompose) apply false
7-
alias(libs.plugins.compose.compiler) apply false
6+
alias(libs.plugins.composeMultiplatform) apply false
7+
alias(libs.plugins.composeCompiler) apply false
88
alias(libs.plugins.kotlinMultiplatform) apply false
9-
alias(libs.plugins.kotlinxSerialization) apply false
10-
alias(libs.plugins.sqldelight) apply false
11-
id("org.jetbrains.kotlinx.kover") version "0.9.1"
129
}

composeApp/build.gradle.kts

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1+
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
12
import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi
23
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
34

45
plugins {
56
alias(libs.plugins.kotlinMultiplatform)
67
alias(libs.plugins.androidApplication)
7-
alias(libs.plugins.jetbrainsCompose)
8-
alias(libs.plugins.compose.compiler)
8+
alias(libs.plugins.composeMultiplatform)
9+
alias(libs.plugins.composeCompiler)
910
}
1011

1112
kotlin {
@@ -17,6 +18,7 @@ kotlin {
1718
}
1819

1920
sourceSets {
21+
2022
androidMain.dependencies {
2123
implementation(compose.preview)
2224
implementation(libs.androidx.activity.compose)
@@ -27,23 +29,24 @@ kotlin {
2729
commonMain.dependencies {
2830
implementation(compose.runtime)
2931
implementation(compose.foundation)
30-
implementation(compose.material)
32+
implementation(compose.material3)
3133
implementation(compose.ui)
3234
implementation(compose.components.resources)
3335
implementation(compose.components.uiToolingPreview)
36+
implementation(libs.androidx.lifecycle.viewmodel)
37+
implementation(libs.androidx.lifecycle.runtimeCompose)
3438
implementation(projects.shared)
3539
}
40+
commonTest.dependencies {
41+
implementation(libs.kotlin.test)
42+
}
3643
}
3744
}
3845

3946
android {
4047
namespace = "com.jetbrains.spacetutorial"
4148
compileSdk = libs.versions.android.compileSdk.get().toInt()
4249

43-
sourceSets["main"].manifest.srcFile("src/androidMain/AndroidManifest.xml")
44-
sourceSets["main"].res.srcDirs("src/androidMain/res")
45-
sourceSets["main"].resources.srcDirs("src/commonMain/resources")
46-
4750
defaultConfig {
4851
applicationId = "com.jetbrains.spacetutorial"
4952
minSdk = libs.versions.android.minSdk.get().toInt()
@@ -65,10 +68,9 @@ android {
6568
sourceCompatibility = JavaVersion.VERSION_11
6669
targetCompatibility = JavaVersion.VERSION_11
6770
}
68-
buildFeatures {
69-
compose = true
70-
}
71-
dependencies {
72-
debugImplementation(compose.uiTooling)
73-
}
7471
}
72+
73+
dependencies {
74+
debugImplementation(compose.uiTooling)
75+
}
76+

composeApp/src/androidMain/AndroidManifest.xml

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,17 @@
11
<?xml version="1.0" encoding="utf-8"?>
22
<manifest xmlns:android="http://schemas.android.com/apk/res/android">
33
<uses-permission android:name="android.permission.INTERNET" />
4-
54
<application
5+
android:name="com.jetbrains.spacetutorial.MainApplication"
66
android:allowBackup="true"
77
android:icon="@mipmap/ic_launcher"
88
android:label="@string/app_name"
99
android:roundIcon="@mipmap/ic_launcher_round"
1010
android:supportsRtl="true"
11-
android:theme="@android:style/Theme.Material.Light.NoActionBar"
12-
android:name="com.jetbrains.spacetutorial.MainApplication">
11+
android:theme="@android:style/Theme.Material.Light.NoActionBar">
1312
<activity
14-
android:exported="true"
15-
android:configChanges="orientation|screenSize|screenLayout|keyboardHidden|mnc|colorMode|density|fontScale|fontWeightAdjustment|keyboard|layoutDirection|locale|mcc|navigation|smallestScreenSize|touchscreen|uiMode"
16-
android:name=".MainActivity">
13+
android:name="com.jetbrains.spacetutorial.MainActivity"
14+
android:exported="true">
1715
<intent-filter>
1816
<action android:name="android.intent.action.MAIN" />
1917

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
<vector
2+
xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:aapt="http://schemas.android.com/aapt"
4+
android:width="450dp"
5+
android:height="450dp"
6+
android:viewportWidth="64"
7+
android:viewportHeight="64">
8+
<path
9+
android:pathData="M56.25,18V46L32,60 7.75,46V18L32,4Z"
10+
android:fillColor="#6075f2"/>
11+
<path
12+
android:pathData="m41.5,26.5v11L32,43V60L56.25,46V18Z"
13+
android:fillColor="#6b57ff"/>
14+
<path
15+
android:pathData="m32,43 l-9.5,-5.5v-11L7.75,18V46L32,60Z">
16+
<aapt:attr name="android:fillColor">
17+
<gradient
18+
android:centerX="23.131"
19+
android:centerY="18.441"
20+
android:gradientRadius="42.132"
21+
android:type="radial">
22+
<item android:offset="0" android:color="#FF5383EC"/>
23+
<item android:offset="0.867" android:color="#FF7F52FF"/>
24+
</gradient>
25+
</aapt:attr>
26+
</path>
27+
<path
28+
android:pathData="M22.5,26.5 L32,21 41.5,26.5 56.25,18 32,4 7.75,18Z">
29+
<aapt:attr name="android:fillColor">
30+
<gradient
31+
android:startX="44.172"
32+
android:startY="4.377"
33+
android:endX="17.973"
34+
android:endY="34.035"
35+
android:type="linear">
36+
<item android:offset="0" android:color="#FF33C3FF"/>
37+
<item android:offset="0.878" android:color="#FF5383EC"/>
38+
</gradient>
39+
</aapt:attr>
40+
</path>
41+
<path
42+
android:pathData="m32,21 l9.526,5.5v11L32,43 22.474,37.5v-11z"
43+
android:fillColor="#000000"/>
44+
</vector>
Lines changed: 51 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,78 @@
11
package com.jetbrains.spacetutorial
22

3-
import androidx.compose.material3.ExperimentalMaterial3Api
4-
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
5-
import androidx.compose.runtime.Composable
6-
import androidx.compose.runtime.getValue
7-
import androidx.compose.runtime.remember
8-
import org.koin.androidx.compose.koinViewModel
9-
import com.jetbrains.spacetutorial.theme.AppTheme
10-
import com.jetbrains.spacetutorial.entity.RocketLaunch
11-
import com.jetbrains.spacetutorial.theme.app_theme_successful
12-
import com.jetbrains.spacetutorial.theme.app_theme_unsuccessful
13-
import androidx.compose.material3.HorizontalDivider
14-
import androidx.compose.material3.MaterialTheme
15-
import androidx.compose.material3.Scaffold
16-
import androidx.compose.material3.Text
17-
import androidx.compose.material3.TopAppBar
18-
import androidx.compose.material3.pulltorefresh.PullToRefreshContainer
19-
import androidx.compose.ui.Modifier
20-
import androidx.compose.ui.Alignment
213
import androidx.compose.foundation.layout.Arrangement
22-
import androidx.compose.foundation.layout.Box
234
import androidx.compose.foundation.layout.Column
245
import androidx.compose.foundation.layout.Spacer
256
import androidx.compose.foundation.layout.fillMaxSize
267
import androidx.compose.foundation.layout.height
278
import androidx.compose.foundation.layout.padding
289
import androidx.compose.foundation.lazy.LazyColumn
2910
import androidx.compose.foundation.lazy.items
30-
import androidx.compose.ui.input.nestedscroll.nestedScroll
11+
import androidx.compose.material3.ExperimentalMaterial3Api
12+
import androidx.compose.material3.HorizontalDivider
13+
import androidx.compose.material3.MaterialTheme
14+
import androidx.compose.material3.Scaffold
15+
import androidx.compose.material3.Text
16+
import androidx.compose.material3.TopAppBar
17+
import androidx.compose.material3.pulltorefresh.PullToRefreshBox
18+
import androidx.compose.material3.pulltorefresh.rememberPullToRefreshState
19+
import androidx.compose.runtime.Composable
20+
import androidx.compose.runtime.getValue
21+
import androidx.compose.runtime.mutableStateOf
22+
import androidx.compose.runtime.remember
23+
import androidx.compose.runtime.rememberCoroutineScope
24+
import androidx.compose.runtime.setValue
25+
import androidx.compose.ui.Alignment
26+
import androidx.compose.ui.Modifier
3127
import androidx.compose.ui.unit.dp
28+
import com.jetbrains.spacetutorial.entity.RocketLaunch
29+
import com.jetbrains.spacetutorial.theme.AppTheme
30+
import com.jetbrains.spacetutorial.theme.app_theme_successful
31+
import com.jetbrains.spacetutorial.theme.app_theme_unsuccessful
32+
import kotlinx.coroutines.launch
33+
import org.jetbrains.compose.ui.tooling.preview.Preview
34+
import org.koin.androidx.compose.koinViewModel
3235

3336
@OptIn(
3437
ExperimentalMaterial3Api::class
3538
)
3639
@Composable
40+
@Preview
3741
fun App() {
3842
val viewModel = koinViewModel<RocketLaunchViewModel>()
3943
val state by remember { viewModel.state }
44+
val coroutineScope = rememberCoroutineScope()
45+
var isRefreshing by remember { mutableStateOf(false) }
4046
val pullToRefreshState = rememberPullToRefreshState()
41-
if (pullToRefreshState.isRefreshing) {
42-
viewModel.loadLaunches()
43-
pullToRefreshState.endRefresh()
44-
}
47+
4548
AppTheme {
4649
Scaffold(
4750
topBar = {
48-
TopAppBar(title = {
49-
Text(
50-
"SpaceX Launches",
51-
style = MaterialTheme.typography.headlineLarge
52-
)
53-
})
51+
TopAppBar(
52+
title = {
53+
Text(
54+
"SpaceX Launches",
55+
style = MaterialTheme.typography.headlineLarge
56+
)
57+
}
58+
)
5459
}
5560
) { padding ->
56-
Box(
61+
PullToRefreshBox(
5762
modifier = Modifier
58-
.nestedScroll(pullToRefreshState.nestedScrollConnection)
5963
.fillMaxSize()
60-
.padding(padding)
64+
.padding(padding),
65+
state = pullToRefreshState,
66+
isRefreshing = isRefreshing,
67+
onRefresh = {
68+
isRefreshing = true
69+
coroutineScope.launch {
70+
viewModel.loadLaunches()
71+
isRefreshing = false
72+
}
73+
}
6174
) {
62-
if (state.isLoading) {
75+
if (state.isLoading && !isRefreshing) {
6376
Column(
6477
verticalArrangement = Arrangement.Center,
6578
horizontalAlignment = Alignment.CenterHorizontally,
@@ -70,7 +83,7 @@ fun App() {
7083
} else {
7184
LazyColumn {
7285
items(state.launches) { launch: RocketLaunch ->
73-
Column(modifier = Modifier.padding(all = 16.dp)) {
86+
Column(modifier = Modifier.padding(16.dp)) {
7487
Text(
7588
text = "${launch.missionName} - ${launch.launchYear}",
7689
style = MaterialTheme.typography.headlineSmall
@@ -82,22 +95,15 @@ fun App() {
8295
)
8396
Spacer(Modifier.height(8.dp))
8497
val details = launch.details
85-
if (details?.isNotBlank() == true) {
86-
Text(
87-
text = details
88-
)
98+
if (details != null && details.isNotBlank()) {
99+
Text(details)
89100
}
90101
}
91102
HorizontalDivider()
92103
}
93104
}
94105
}
95-
96-
PullToRefreshContainer(
97-
state = pullToRefreshState,
98-
modifier = Modifier.align(Alignment.TopCenter)
99-
)
100106
}
101107
}
102108
}
103-
}
109+
}

composeApp/src/androidMain/kotlin/com/jetbrains/spacetutorial/AppModule.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ package com.jetbrains.spacetutorial
33
import com.jetbrains.spacetutorial.cache.AndroidDatabaseDriverFactory
44
import com.jetbrains.spacetutorial.network.SpaceXApi
55
import org.koin.android.ext.koin.androidContext
6-
import org.koin.androidx.viewmodel.dsl.viewModel
6+
import org.koin.core.module.dsl.viewModel
77
import org.koin.dsl.module
88

99
val appModule = module {

composeApp/src/androidMain/kotlin/com/jetbrains/spacetutorial/MainActivity.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,13 @@ package com.jetbrains.spacetutorial
33
import android.os.Bundle
44
import androidx.activity.ComponentActivity
55
import androidx.activity.compose.setContent
6+
import androidx.activity.enableEdgeToEdge
67
import androidx.compose.runtime.Composable
78
import androidx.compose.ui.tooling.preview.Preview
89

910
class MainActivity : ComponentActivity() {
1011
override fun onCreate(savedInstanceState: Bundle?) {
12+
enableEdgeToEdge()
1113
super.onCreate(savedInstanceState)
1214

1315
setContent {

composeApp/src/androidMain/kotlin/com/jetbrains/spacetutorial/RocketLaunchViewModel.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ class RocketLaunchViewModel(private val sdk: SpaceXSDK) : ViewModel() {
2626
}
2727
}
2828
}
29-
3029
}
3130

3231
data class RocketLaunchScreenState(

composeApp/src/androidMain/kotlin/com/jetbrains/spacetutorial/theme/Color.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
12
package com.jetbrains.spacetutorial.theme
23

34
import androidx.compose.ui.graphics.Color
@@ -67,4 +68,4 @@ val md_theme_dark_scrim = Color(0xFF000000)
6768
val app_theme_successful = Color(0xff4BB543)
6869
val app_theme_unsuccessful = Color(0xffFC100D)
6970

70-
val seed = Color(0xFF5E5E5E)
71+
val seed = Color(0xFF5E5E5E)

0 commit comments

Comments
 (0)