Skip to content
This repository was archived by the owner on Jun 6, 2025. It is now read-only.

Commit a259ecb

Browse files
[v1.0.4] Update some versions for new Android Studio Preview's version (#95)
1 parent b597031 commit a259ecb

File tree

6 files changed

+70
-47
lines changed

6 files changed

+70
-47
lines changed

.idea/kotlinc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/build.gradle.kts

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,7 @@ android {
121121
}
122122

123123
composeOptions {
124-
kotlinCompilerExtensionVersion = "1.3.2"
124+
kotlinCompilerExtensionVersion = "1.4.0"
125125
}
126126

127127
packaging {
@@ -136,12 +136,12 @@ dependencies {
136136
implementation("androidx.activity:activity-compose:1.6.1")
137137

138138
// Compose ui
139-
implementation("androidx.compose.ui:ui:1.4.0-alpha04")
140-
implementation("androidx.compose.ui:ui-tooling-preview:1.4.0-alpha04")
139+
implementation("androidx.compose.ui:ui:1.4.0-alpha05")
140+
implementation("androidx.compose.ui:ui-tooling-preview:1.4.0-alpha05")
141141

142142
// Material
143-
implementation("androidx.compose.material3:material3:1.1.0-alpha04")
144-
implementation("androidx.compose.material:material:1.4.0-alpha04")
143+
implementation("androidx.compose.material3:material3:1.1.0-alpha05")
144+
implementation("androidx.compose.material:material:1.4.0-alpha05")
145145

146146
// Work manager
147147
implementation("androidx.work:work-runtime-ktx:2.8.0-rc01")
@@ -187,12 +187,12 @@ dependencies {
187187
implementation("androidx.navigation:navigation-compose:2.5.3")
188188

189189
// Lifecycle
190-
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.0-alpha04")
191-
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.0-alpha04")
190+
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.0-alpha05")
191+
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.0-alpha05")
192192

193193
// ViewModel
194-
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0-alpha04")
195-
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.0-alpha04")
194+
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.0-alpha05")
195+
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.0-alpha05")
196196

197197
// LiveData
198198
implementation("androidx.compose.runtime:runtime-livedata:1.4.0-alpha04")
@@ -207,7 +207,7 @@ dependencies {
207207
implementation("androidx.datastore:datastore-preferences:1.0.0")
208208

209209
// Kotlin reflect
210-
implementation("org.jetbrains.kotlin:kotlin-reflect:1.7.20")
210+
implementation("org.jetbrains.kotlin:kotlin-reflect:1.8.0")
211211

212212
// Lottie
213213
implementation("com.airbnb.android:lottie-compose:5.2.0")
@@ -223,6 +223,6 @@ dependencies {
223223
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
224224
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.3.3")
225225

226-
debugImplementation("androidx.compose.ui:ui-tooling:1.4.0-alpha04")
227-
debugImplementation("androidx.compose.ui:ui-test-manifest:1.4.0-alpha04")
226+
debugImplementation("androidx.compose.ui:ui-tooling:1.4.0-alpha05")
227+
debugImplementation("androidx.compose.ui:ui-test-manifest:1.4.0-alpha05")
228228
}

app/src/main/java/com/minhdtm/example/weapose/presentation/ui/home/CurrentWeatherScreen.kt

Lines changed: 28 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package com.minhdtm.example.weapose.presentation.ui.home
22

33
import android.Manifest
4-
import android.annotation.SuppressLint
54
import android.content.res.Configuration
65
import androidx.annotation.DrawableRes
76
import androidx.compose.foundation.Image
@@ -10,9 +9,14 @@ import androidx.compose.foundation.lazy.LazyRow
109
import androidx.compose.foundation.rememberScrollState
1110
import androidx.compose.foundation.shape.RoundedCornerShape
1211
import androidx.compose.foundation.verticalScroll
12+
import androidx.compose.material.ExperimentalMaterialApi
1313
import androidx.compose.material.icons.Icons
1414
import androidx.compose.material.icons.outlined.Menu
1515
import androidx.compose.material.icons.sharp.LocationOn
16+
import androidx.compose.material.pullrefresh.PullRefreshIndicator
17+
import androidx.compose.material.pullrefresh.PullRefreshState
18+
import androidx.compose.material.pullrefresh.pullRefresh
19+
import androidx.compose.material.pullrefresh.rememberPullRefreshState
1620
import androidx.compose.material3.*
1721
import androidx.compose.runtime.Composable
1822
import androidx.compose.runtime.LaunchedEffect
@@ -36,8 +40,6 @@ import androidx.lifecycle.compose.collectAsStateWithLifecycle
3640
import androidx.lifecycle.viewmodel.compose.viewModel
3741
import com.google.accompanist.permissions.ExperimentalPermissionsApi
3842
import com.google.accompanist.permissions.rememberMultiplePermissionsState
39-
import com.google.accompanist.swiperefresh.SwipeRefresh
40-
import com.google.accompanist.swiperefresh.SwipeRefreshState
4143
import com.google.android.gms.maps.model.LatLng
4244
import com.minhdtm.example.weapose.R
4345
import com.minhdtm.example.weapose.domain.enums.ActionType
@@ -51,14 +53,21 @@ import com.minhdtm.example.weapose.presentation.ui.WeatherAppState
5153
import com.minhdtm.example.weapose.presentation.utils.Constants
5254
import kotlinx.coroutines.flow.collectLatest
5355

54-
@OptIn(ExperimentalPermissionsApi::class)
56+
@OptIn(ExperimentalPermissionsApi::class, ExperimentalMaterialApi::class)
5557
@Composable
5658
fun CurrentWeather(
5759
appState: WeatherAppState,
5860
viewModel: CurrentWeatherViewModel = viewModel(),
5961
) {
6062
val state by viewModel.state.collectAsStateWithLifecycle()
6163

64+
val pullRefreshState = rememberPullRefreshState(
65+
refreshing = state.isRefresh,
66+
onRefresh = {
67+
viewModel.onRefreshCurrentWeather()
68+
},
69+
)
70+
6271
val context = LocalContext.current
6372

6473
val locationPermissionState = rememberMultiplePermissionsState(
@@ -132,16 +141,14 @@ fun CurrentWeather(
132141

133142
CurrentWeatherScreen(
134143
state = state,
144+
pullRefreshState = pullRefreshState,
135145
snackbarHostState = appState.snackbarHost,
136146
onDrawer = {
137147
appState.openDrawer()
138148
},
139149
onShowSnackbar = {
140150
appState.showSnackbar(it)
141151
},
142-
onRefresh = {
143-
viewModel.onRefreshCurrentWeather()
144-
},
145152
onDismissErrorDialog = {
146153
viewModel.hideError()
147154
},
@@ -164,13 +171,12 @@ fun CurrentWeather(
164171
)
165172
}
166173

167-
@SuppressLint("UnusedMaterial3ScaffoldPaddingParameter")
168-
@OptIn(ExperimentalMaterial3Api::class)
174+
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
169175
@Composable
170176
fun CurrentWeatherScreen(
171177
state: CurrentWeatherViewState,
178+
pullRefreshState: PullRefreshState,
172179
snackbarHostState: SnackbarHostState = SnackbarHostState(),
173-
onRefresh: () -> Unit = {},
174180
onDrawer: () -> Unit = {},
175181
onDismissErrorDialog: () -> Unit = {},
176182
onShowSnackbar: (message: String) -> Unit = {},
@@ -193,16 +199,17 @@ fun CurrentWeatherScreen(
193199
)
194200
},
195201
) { _, viewState ->
196-
SwipeRefresh(
197-
state = SwipeRefreshState(viewState.isRefresh),
198-
onRefresh = onRefresh,
199-
) {
200-
if (viewState.currentWeather != null) {
202+
Box(Modifier.pullRefresh(pullRefreshState)) {
203+
viewState.currentWeather?.let {
201204
HomeContent(
202-
currentWeather = viewState.currentWeather,
205+
currentWeather = it,
203206
listHourly = viewState.listHourlyWeatherToday,
204207
)
205208
}
209+
210+
PullRefreshIndicator(
211+
refreshing = state.isRefresh, state = pullRefreshState, modifier = Modifier.align(Alignment.TopCenter)
212+
)
206213
}
207214
}
208215
}
@@ -483,12 +490,16 @@ private fun AppBarPreview() {
483490
}
484491
}
485492

493+
@OptIn(ExperimentalMaterialApi::class)
486494
@Preview(name = "Light", showBackground = true, device = NEXUS_5)
487495
@Preview(name = "Dark", showBackground = true, uiMode = Configuration.UI_MODE_NIGHT_YES, device = PIXEL_4_XL)
488496
@Composable
489497
private fun ScreenPreview() {
490498
WeaposeTheme {
491-
CurrentWeatherScreen(CurrentWeatherViewState())
499+
CurrentWeatherScreen(
500+
state = CurrentWeatherViewState(),
501+
pullRefreshState = rememberPullRefreshState(refreshing = true, onRefresh = {})
502+
)
492503
}
493504
}
494505

app/src/main/java/com/minhdtm/example/weapose/presentation/ui/home/CurrentWeatherViewModel.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@ class CurrentWeatherViewModel @Inject constructor(
130130
)
131131
}
132132

133-
getCurrentWeather(currentLocation)
133+
getCurrentLocation()
134134
}
135135

136136
fun cleanEvent() {

app/src/main/java/com/minhdtm/example/weapose/presentation/ui/sevendaysweather/SevenDaysWeatherScreen.kt

Lines changed: 24 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,14 @@ import androidx.compose.foundation.clickable
99
import androidx.compose.foundation.layout.*
1010
import androidx.compose.foundation.lazy.LazyColumn
1111
import androidx.compose.foundation.lazy.items
12+
import androidx.compose.material.ExperimentalMaterialApi
1213
import androidx.compose.material.icons.Icons
1314
import androidx.compose.material.icons.filled.KeyboardArrowDown
1415
import androidx.compose.material.icons.filled.KeyboardArrowUp
16+
import androidx.compose.material.pullrefresh.PullRefreshIndicator
17+
import androidx.compose.material.pullrefresh.PullRefreshState
18+
import androidx.compose.material.pullrefresh.pullRefresh
19+
import androidx.compose.material.pullrefresh.rememberPullRefreshState
1520
import androidx.compose.material3.*
1621
import androidx.compose.runtime.*
1722
import androidx.compose.ui.Alignment
@@ -22,8 +27,6 @@ import androidx.compose.ui.tooling.preview.Preview
2227
import androidx.compose.ui.unit.dp
2328
import androidx.lifecycle.compose.collectAsStateWithLifecycle
2429
import androidx.lifecycle.viewmodel.compose.viewModel
25-
import com.google.accompanist.swiperefresh.SwipeRefresh
26-
import com.google.accompanist.swiperefresh.SwipeRefreshState
2730
import com.google.android.gms.maps.model.LatLng
2831
import com.minhdtm.example.weapose.R
2932
import com.minhdtm.example.weapose.presentation.component.WeatherScaffold
@@ -37,12 +40,19 @@ import com.minhdtm.example.weapose.presentation.utils.Constants
3740
import com.minhdtm.example.weapose.presentation.utils.toUVIndexAttention
3841
import kotlinx.coroutines.flow.collectLatest
3942

43+
@OptIn(ExperimentalMaterialApi::class)
4044
@Composable
4145
fun SevenDaysWeather(
4246
appState: WeatherAppState,
4347
viewModel: SevenDaysWeatherViewModel = viewModel(),
4448
) {
4549
val state by viewModel.state.collectAsStateWithLifecycle()
50+
val pullRefreshState = rememberPullRefreshState(
51+
refreshing = state.isRefresh,
52+
onRefresh = {
53+
viewModel.onRefresh()
54+
}
55+
)
4656

4757
// Get data from back
4858
LaunchedEffect(true) {
@@ -86,10 +96,9 @@ fun SevenDaysWeather(
8696
}
8797

8898
SevenDaysWeatherScreen(
89-
state = state, snackbarHostState = appState.snackbarHost,
90-
onRefresh = {
91-
viewModel.onRefresh()
92-
},
99+
state = state,
100+
snackbarHostState = appState.snackbarHost,
101+
pullRefreshState = pullRefreshState,
93102
onDrawer = {
94103
appState.openDrawer()
95104
},
@@ -108,12 +117,12 @@ fun SevenDaysWeather(
108117
)
109118
}
110119

111-
@OptIn(ExperimentalMaterial3Api::class)
120+
@OptIn(ExperimentalMaterial3Api::class, ExperimentalMaterialApi::class)
112121
@Composable
113122
fun SevenDaysWeatherScreen(
114123
state: SevenDaysViewState,
115124
snackbarHostState: SnackbarHostState,
116-
onRefresh: () -> Unit = {},
125+
pullRefreshState: PullRefreshState,
117126
onShowSnackbar: (message: String) -> Unit = {},
118127
onDrawer: () -> Unit = {},
119128
onNavigateSearch: () -> Unit = {},
@@ -136,15 +145,18 @@ fun SevenDaysWeatherScreen(
136145
onShowSnackbar = onShowSnackbar,
137146
onDismissErrorDialog = onDismissDialog,
138147
) { _, viewState ->
139-
SwipeRefresh(
140-
state = SwipeRefreshState(viewState.isRefresh),
141-
onRefresh = onRefresh,
142-
) {
148+
Box(modifier = Modifier.pullRefresh(pullRefreshState)) {
143149
ListWeatherDay(
144150
modifier = Modifier.fillMaxSize(),
145151
list = viewState.listSevenDays,
146152
onClickExpandedItem = onClickExpandedItem,
147153
)
154+
155+
PullRefreshIndicator(
156+
refreshing = state.isRefresh,
157+
state = pullRefreshState,
158+
modifier = Modifier.align(Alignment.TopCenter),
159+
)
148160
}
149161
}
150162
}

build.gradle.kts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
plugins {
2-
id("com.android.application") version "8.1.0-alpha01" apply false
3-
id("com.android.library") version "8.1.0-alpha01" apply false
4-
id("org.jetbrains.kotlin.android") version "1.7.20" apply false
5-
id("org.jetbrains.kotlin.jvm") version "1.7.20" apply false
2+
id("com.android.application") version "8.1.0-alpha02" apply false
3+
id("com.android.library") version "8.1.0-alpha02" apply false
4+
id("org.jetbrains.kotlin.android") version "1.8.0" apply false
5+
id("org.jetbrains.kotlin.jvm") version "1.8.0" apply false
66
id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") version "2.0.1" apply false
77
id("com.google.dagger.hilt.android") version "2.44.2" apply false
88
}

0 commit comments

Comments
 (0)