Skip to content

Commit df499b8

Browse files
committed
update libs
1 parent 8f7bad0 commit df499b8

File tree

15 files changed

+98
-78
lines changed

15 files changed

+98
-78
lines changed

app/build.gradle.kts

Lines changed: 52 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ android {
2222
applicationId = "com.example.moviedb"
2323
buildToolsVersion = "34.0.0"
2424
minSdk = 23
25-
compileSdk = 33
25+
compileSdk = 34
2626
targetSdk = 34
2727
multiDexEnabled = true
2828
vectorDrawables {
@@ -139,11 +139,11 @@ android {
139139
}
140140
composeOptions {
141141
// check version here https://developer.android.com/jetpack/androidx/releases/compose-kotlin
142-
kotlinCompilerExtensionVersion = "1.4.8"
142+
kotlinCompilerExtensionVersion = "1.5.3"
143143
}
144144
lint {
145-
checkReleaseBuilds = false
146-
abortOnError = false
145+
// checkReleaseBuilds = false
146+
// abortOnError = false
147147
}
148148
}
149149

@@ -152,50 +152,50 @@ dependencies {
152152
implementation("androidx.appcompat:appcompat:1.6.1")
153153
implementation("androidx.legacy:legacy-support-v4:1.0.0")
154154
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
155-
implementation("androidx.recyclerview:recyclerview:1.3.0")
156-
implementation("com.google.android.material:material:1.9.0")
157-
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.8.22")
158-
implementation("org.jetbrains.kotlin:kotlin-reflect:1.8.22")
155+
implementation("androidx.recyclerview:recyclerview:1.3.2")
156+
implementation("com.google.android.material:material:1.10.0")
157+
implementation("org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.9.10")
158+
implementation("org.jetbrains.kotlin:kotlin-reflect:1.9.10")
159159
implementation("androidx.multidex:multidex:2.0.1")
160160

161161
// List of KTX extensions
162162
// https://developer.android.com/kotlin/ktx/extensions-list
163-
implementation("androidx.core:core-ktx:1.10.1")
164-
implementation("androidx.activity:activity-ktx:1.7.2")
165-
implementation("androidx.fragment:fragment-ktx:1.6.0")
163+
implementation("androidx.core:core-ktx:1.12.0")
164+
implementation("androidx.activity:activity-ktx:1.8.0")
165+
implementation("androidx.fragment:fragment-ktx:1.6.1")
166166

167167
// Lifecycle
168168
// https://developer.android.com/jetpack/androidx/releases/lifecycle
169-
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.1")
169+
implementation("androidx.lifecycle:lifecycle-viewmodel-ktx:2.6.2")
170170
// implementation("androidx.lifecycle:lifecycle-livedata-ktx:2.6.1")
171-
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.1")
172-
implementation("androidx.lifecycle:lifecycle-common-java8:2.6.1")
171+
implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.6.2")
172+
implementation("androidx.lifecycle:lifecycle-common-java8:2.6.2")
173173

174174
// Preferences DataStore
175175
// https://android-developers.googleblog.com/2020/09/prefer-storing-data-with-jetpack.html
176176
implementation("androidx.datastore:datastore-preferences:1.0.0")
177177

178178
// room
179179
// https://developer.android.com/topic/libraries/architecture/room
180-
implementation("androidx.room:room-runtime:2.5.2")
181-
ksp("androidx.room:room-compiler:2.5.2")
182-
implementation("androidx.room:room-ktx:2.5.2")
180+
implementation("androidx.room:room-runtime:2.6.0")
181+
ksp("androidx.room:room-compiler:2.6.0")
182+
implementation("androidx.room:room-ktx:2.6.0")
183183

184184
// paging
185185
// https://developer.android.com/topic/libraries/architecture/paging
186-
implementation("androidx.paging:paging-runtime-ktx:3.1.1")
186+
implementation("androidx.paging:paging-runtime-ktx:3.2.1")
187187

188188
// navigation
189189
// https://developer.android.com/jetpack/androidx/releases/navigation
190-
implementation("androidx.navigation:navigation-runtime-ktx:2.6.0")
191-
implementation("androidx.navigation:navigation-fragment-ktx:2.6.0")
192-
implementation("androidx.navigation:navigation-ui-ktx:2.6.0")
190+
implementation("androidx.navigation:navigation-runtime-ktx:2.7.4")
191+
implementation("androidx.navigation:navigation-fragment-ktx:2.7.4")
192+
implementation("androidx.navigation:navigation-ui-ktx:2.7.4")
193193

194194
// coroutines
195195
// https://github.com/Kotlin/kotlinx.coroutines
196-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.2")
197-
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.2")
198-
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.2")
196+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.3")
197+
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3")
198+
testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.7.3")
199199

200200
// moshi
201201
implementation("com.squareup.moshi:moshi-kotlin:1.15.0")
@@ -205,7 +205,7 @@ dependencies {
205205
// https://github.com/square/retrofit
206206
implementation("com.squareup.retrofit2:retrofit:2.9.0")
207207
implementation("com.squareup.retrofit2:converter-moshi:2.9.0")
208-
implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.10")
208+
implementation("com.squareup.okhttp3:logging-interceptor:5.0.0-alpha.11")
209209

210210
// OkHttpProfiler
211211
// https://github.com/itkacher/OkHttpProfiler
@@ -218,12 +218,13 @@ dependencies {
218218

219219
// glide
220220
// https://github.com/bumptech/glide
221-
implementation("com.github.bumptech.glide:glide:4.15.1")
222-
ksp("com.github.bumptech.glide:ksp:4.15.1")
221+
implementation("com.github.bumptech.glide:glide:4.16.0")
222+
ksp("com.github.bumptech.glide:ksp:4.16.0")
223223

224224
// dagger hilt
225-
implementation("com.google.dagger:hilt-android:2.46.1")
226-
kapt("com.google.dagger:hilt-android-compiler:2.46.1")
225+
// TODO change to ksp https://github.com/google/dagger/issues/2349
226+
implementation("com.google.dagger:hilt-android:2.48.1")
227+
kapt("com.google.dagger:hilt-android-compiler:2.48.1")
227228
implementation("androidx.hilt:hilt-navigation-fragment:1.0.0")
228229
kapt("androidx.hilt:hilt-compiler:1.0.0")
229230

@@ -233,7 +234,7 @@ dependencies {
233234

234235
// firebase
235236
// https://firebase.google.com/docs/android/setup
236-
implementation(platform("com.google.firebase:firebase-bom:32.1.1"))
237+
implementation(platform("com.google.firebase:firebase-bom:32.4.0"))
237238
implementation("com.google.firebase:firebase-analytics-ktx")
238239
implementation("com.google.firebase:firebase-crashlytics-ktx")
239240
implementation("com.google.firebase:firebase-messaging-ktx")
@@ -251,12 +252,12 @@ dependencies {
251252

252253
// unit test
253254
testImplementation("junit:junit:4.13.2")
254-
testImplementation("org.mockito:mockito-core:5.4.0")
255+
testImplementation("org.mockito:mockito-core:5.6.0")
255256
// testImplementation("org.mockito:mockito-inline:3.3.3")
256-
testImplementation("io.mockk:mockk:1.13.5")
257+
testImplementation("io.mockk:mockk:1.13.8")
257258
testImplementation("androidx.arch.core:core-testing:2.2.0")
258-
testImplementation("com.squareup.okhttp3:mockwebserver:5.0.0-alpha.2")
259-
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.0")
259+
testImplementation("com.squareup.okhttp3:mockwebserver:5.0.0-alpha.11")
260+
testImplementation("org.jetbrains.kotlin:kotlin-stdlib:1.9.10")
260261
// testImplementation("org.robolectric:robolectric:4.3")
261262

262263
/**
@@ -380,47 +381,47 @@ dependencies {
380381
// implementation("androidx.compose:compose-bom:2023.04.00")
381382
// androidTestImplementation("androidx.compose:compose-bom:2023.04.00")
382383
// Foundation (Border, Background, Box, Image, Scroll, shapes, animations, etc.)
383-
implementation("androidx.compose.foundation:foundation:1.4.3")
384+
implementation("androidx.compose.foundation:foundation:1.5.4")
384385
// or Material Design 2
385-
implementation("androidx.compose.material:material:1.4.3")
386+
implementation("androidx.compose.material:material:1.5.4")
386387
// Material Design 3
387-
implementation("androidx.compose.material3:material3:1.1.1")
388+
implementation("androidx.compose.material3:material3:1.1.2")
388389
// Android Studio Preview support
389-
implementation("androidx.compose.ui:ui-tooling-preview:1.4.3")
390-
debugImplementation("androidx.compose.ui:ui-tooling:1.4.3")
390+
implementation("androidx.compose.ui:ui-tooling-preview:1.5.4")
391+
debugImplementation("androidx.compose.ui:ui-tooling:1.5.4")
391392
// UI Tests
392-
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.4.3")
393-
debugImplementation("androidx.compose.ui:ui-test-manifest:1.4.3")
393+
androidTestImplementation("androidx.compose.ui:ui-test-junit4:1.5.4")
394+
debugImplementation("androidx.compose.ui:ui-test-manifest:1.5.4")
394395
// Animations
395-
implementation("androidx.compose.animation:animation:1.4.3")
396+
implementation("androidx.compose.animation:animation:1.5.4")
396397
// Constraint layout
397398
implementation("androidx.constraintlayout:constraintlayout-compose:1.0.1")
398399
// Optional - Included automatically by material, only add when you need
399400
// the icons but not the material library (e.g. when using Material3 or a
400401
// custom design system based on Foundation)
401402
// implementation("androidx.compose.material:material-icons-core")
402403
// Optional - Add full set of material icons
403-
implementation("androidx.compose.material:material-icons-extended:1.4.3")
404+
implementation("androidx.compose.material:material-icons-extended:1.5.4")
404405
// Optional - Add window size utils
405-
implementation("androidx.compose.material3:material3-window-size-class:1.1.1")
406+
implementation("androidx.compose.material3:material3-window-size-class:1.1.2")
406407
// Optional - Integration with activities
407-
implementation("androidx.activity:activity-compose:1.7.2")
408+
implementation("androidx.activity:activity-compose:1.8.0")
408409
// Optional - Integration with ViewModels
409-
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.1")
410+
implementation("androidx.lifecycle:lifecycle-viewmodel-compose:2.6.2")
410411
// Optional - Integration with LiveData
411412
// implementation("androidx.compose.runtime:runtime-livedata:1.4.3")
412413
// Lifecycle utilities for Compose
413-
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.1")
414+
implementation("androidx.lifecycle:lifecycle-runtime-compose:2.6.2")
414415
// navigation
415-
implementation("androidx.navigation:navigation-compose:2.6.0")
416+
implementation("androidx.navigation:navigation-compose:2.7.4")
416417
implementation("androidx.hilt:hilt-navigation-compose:1.0.0")
417418
// https://github.com/skydoves/landscapist
418419
// implementation("com.github.skydoves:landscape-bom:2.1.7")
419-
implementation("com.github.skydoves:landscapist-glide:2.2.2")
420-
implementation("com.github.skydoves:landscapist-placeholder:2.2.2")
420+
implementation("com.github.skydoves:landscapist-glide:2.2.10")
421+
implementation("com.github.skydoves:landscapist-placeholder:2.2.10")
421422
// https://google.github.io/accompanist/
422423
// https://github.com/google/accompanist
423-
val accompanistVersion = "0.28.0"
424+
val accompanistVersion = "0.32.0"
424425
implementation("com.google.accompanist:accompanist-systemuicontroller:$accompanistVersion")
425426
implementation("com.google.accompanist:accompanist-pager:$accompanistVersion")
426427
implementation("com.google.accompanist:accompanist-permissions:$accompanistVersion")

app/src/main/AndroidManifest.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@
3737
</intent-filter>
3838
</activity>
3939

40+
<activity
41+
android:name=".compose.ComposeActivity"
42+
android:configChanges="orientation|screenSize"
43+
android:exported="false"
44+
android:theme="@style/Theme.MyApplication.NoActionBar" />
45+
4046
<activity
4147
android:name=".ui.screen.permission.PermissionActivity"
4248
android:exported="false">

app/src/main/java/com/example/moviedb/ui/base/BaseActivity.kt

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ abstract class BaseActivity<ViewBinding : ViewDataBinding, ViewModel : BaseViewM
4545
lifecycleScope.launch {
4646
repeatOnLifecycle(Lifecycle.State.STARTED) {
4747
viewModel.uiState.collectLatest { uiState ->
48-
handleLoading(uiState.isLoading)
48+
handleLoading(isLoading = uiState.isLoading)
4949
handleError(errorType = uiState.errorType)
5050
}
5151
}
@@ -206,13 +206,15 @@ abstract class BaseActivity<ViewBinding : ViewDataBinding, ViewModel : BaseViewM
206206
}
207207

208208
fun showForceUpdateDialog() {
209-
showDialog(
209+
val forceUpdateDialog = showDialog(
210210
title = getString(R.string.force_update_app),
211211
dismissListener = {
212212
isShowHighPriorityDialog = false
213213
}
214214
)
215-
isShowHighPriorityDialog = true
215+
if (forceUpdateDialog != null) {
216+
isShowHighPriorityDialog = true
217+
}
216218
}
217219

218220
/**
@@ -271,7 +273,7 @@ abstract class BaseActivity<ViewBinding : ViewDataBinding, ViewModel : BaseViewM
271273
}*/
272274

273275
fun dismissShowingDialog() {
274-
if (showingDialog?.isShowing == true) {
276+
if (isShowHighPriorityDialog.not() && showingDialog?.isShowing == true) {
275277
showingDialog?.dismiss()
276278
showingDialog = null
277279
}

app/src/main/java/com/example/moviedb/ui/base/BaseBottomSheetDialogFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ abstract class BaseBottomSheetDialogFragment<ViewBinding : ViewDataBinding, View
5757
lifecycleScope.launch {
5858
repeatOnLifecycle(Lifecycle.State.STARTED) {
5959
viewModel.uiState.collectLatest { uiState ->
60-
handleLoading(uiState.isLoading)
60+
handleLoading(isLoading = uiState.isLoading)
6161
handleError(errorType = uiState.errorType)
6262
}
6363
}

app/src/main/java/com/example/moviedb/ui/base/BaseDialogFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ abstract class BaseDialogFragment<ViewBinding : ViewDataBinding, ViewModel : Bas
5656
lifecycleScope.launch {
5757
repeatOnLifecycle(Lifecycle.State.STARTED) {
5858
viewModel.uiState.collectLatest { uiState ->
59-
handleLoading(uiState.isLoading)
59+
handleLoading(isLoading = uiState.isLoading)
6060
handleError(errorType = uiState.errorType)
6161
}
6262
}

app/src/main/java/com/example/moviedb/ui/base/BaseFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ abstract class BaseFragment<ViewBinding : ViewDataBinding, ViewModel : BaseViewM
5757
lifecycleScope.launch {
5858
repeatOnLifecycle(Lifecycle.State.STARTED) {
5959
viewModel.uiState.collectLatest { uiState ->
60-
handleLoading(uiState.isLoading)
60+
handleLoading(isLoading = uiState.isLoading)
6161
handleError(errorType = uiState.errorType)
6262
}
6363
}

app/src/main/java/com/example/moviedb/ui/base/BaseListAdapter.kt

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.example.moviedb.ui.base
22

33
import android.view.LayoutInflater
44
import android.view.ViewGroup
5-
import android.view.animation.AnimationUtils
65
import androidx.databinding.DataBindingUtil
76
import androidx.databinding.ViewDataBinding
87
import androidx.paging.PagingDataAdapter
@@ -11,7 +10,6 @@ import androidx.recyclerview.widget.DiffUtil
1110
import androidx.recyclerview.widget.ListAdapter
1211
import androidx.recyclerview.widget.RecyclerView
1312
import com.example.moviedb.BR
14-
import com.example.moviedb.R
1513
import java.util.concurrent.Executors
1614

1715
private interface BaseRecyclerAdapter<Item : Any, ViewBinding : ViewDataBinding> {

app/src/main/java/com/example/moviedb/ui/base/BaseViewModel.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import kotlinx.coroutines.flow.StateFlow
1010
import kotlinx.coroutines.flow.update
1111
import kotlinx.coroutines.launch
1212
import kotlinx.coroutines.plus
13+
import timber.log.Timber
1314
import java.net.ConnectException
1415
import java.net.HttpURLConnection
1516
import java.net.SocketTimeoutException
@@ -37,6 +38,7 @@ open class BaseViewModel : ViewModel() {
3738
* handle throwable when load fail
3839
*/
3940
protected fun toErrorType(throwable: Throwable): ErrorType {
41+
Timber.e("toErrorType: ${throwable.printStackTrace()}")
4042
return when (throwable) {
4143
// case no internet connection
4244
is UnknownHostException -> {

app/src/main/java/com/example/moviedb/ui/base/UiState.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ data class UiState(
66
)
77

88
sealed class ErrorType {
9-
object NoInternetConnection : ErrorType()
10-
object ConnectTimeout : ErrorType()
11-
object ForceUpdateApp : ErrorType()
12-
object UnAuthorized : ErrorType()
13-
object ServerMaintain : ErrorType()
9+
data object NoInternetConnection : ErrorType()
10+
data object ConnectTimeout : ErrorType()
11+
data object ForceUpdateApp : ErrorType()
12+
data object UnAuthorized : ErrorType()
13+
data object ServerMaintain : ErrorType()
1414
class UnknownError(val throwable: Throwable) : ErrorType()
1515
}

app/src/main/java/com/example/moviedb/ui/base/items/ItemsFragment.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import com.example.moviedb.ui.base.BaseFragment
1515
import com.example.moviedb.ui.base.BaseListAdapter
1616
import kotlinx.coroutines.flow.collectLatest
1717
import kotlinx.coroutines.launch
18+
import timber.log.Timber
1819

1920
abstract class ItemsFragment<ViewBinding : ViewDataBinding, ViewModel : ItemsViewModel<Item>, Item : Any> :
2021
BaseFragment<ViewBinding, ViewModel>() {
@@ -43,6 +44,7 @@ abstract class ItemsFragment<ViewBinding : ViewDataBinding, ViewModel : ItemsVie
4344
lifecycleScope.launch {
4445
repeatOnLifecycle(Lifecycle.State.STARTED) {
4546
viewModel.itemsUiState.collectLatest { uiState ->
47+
Timber.d("uiState collectLatest $uiState")
4648
swipeRefreshLayout.isRefreshing = uiState.isRefreshing
4749
handleLoading(isLoading = uiState.isLoading)
4850
listAdapter.submitList(uiState.items)

0 commit comments

Comments
 (0)