Skip to content

Commit 5d53349

Browse files
authored
feat: ⬆️ update libs and gradle (#32)
1 parent ad8145d commit 5d53349

File tree

32 files changed

+269
-318
lines changed

32 files changed

+269
-318
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,4 @@
77
/captures
88
*.iml
99
*/.kotlintest
10+
.idea

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ My way to MVVM using RxJava with new Android databinding
2222
* picasso
2323

2424
### Testing
25-
* [KotlinTest][10]
25+
* [Kotest][10]
2626
* [Android Junit 5][11]
2727

2828
TODO LIST
@@ -68,5 +68,5 @@ License
6868
[7]: https://developer.android.com/topic/libraries/architecture/room.html
6969
[8]: https://developer.android.com/topic/libraries/architecture/livedata.html
7070
[9]: https://developer.android.com/topic/libraries/architecture/viewmodel.html
71-
[10]: https://github.com/kotlintest/kotlintest
71+
[10]: https://kotest.io
7272
[11]: https://github.com/mannodermaus/android-junit5

app/build.gradle

Lines changed: 28 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,16 @@ android {
2222
minSdkVersion min_sdk
2323
versionCode 1
2424
versionName "1.0"
25+
javaCompileOptions {
26+
annotationProcessorOptions {
27+
arguments += [
28+
"room.schemaLocation" : "$projectDir/schemas".toString(),
29+
"room.incremental" : "true",
30+
"room.expandProjection": "true"
31+
]
32+
}
33+
}
34+
2535
}
2636

2737
buildTypes {
@@ -31,8 +41,8 @@ android {
3141
}
3242
}
3343

34-
dataBinding {
35-
enabled = true
44+
buildFeatures {
45+
dataBinding true
3646
}
3747

3848
compileOptions {
@@ -45,61 +55,55 @@ android {
4555
}
4656
}
4757

48-
kapt {
49-
arguments {
50-
arg("room.schemaLocation", "$projectDir/schemas".toString())
51-
}
52-
}
53-
5458
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
5559
kotlinOptions {
5660
jvmTarget = JavaVersion.VERSION_1_8
5761
}
5862
}
5963

6064
dependencies {
61-
kapt libs.databinding_compiler
62-
kapt libs.arch_comp_room_compiler
63-
kaptTest libs.arch_comp_room_compiler
65+
kapt libs.androidx_room_compiler
66+
kaptTest libs.androidx_room_compiler
6467

65-
implementation libs.arch_comp_livedata
66-
implementation libs.arch_comp_viewmodel
67-
implementation libs.arch_comp_room
68-
implementation libs.arch_comp_room_rxjava
68+
implementation libs.androidx_constraint
69+
implementation libs.androidx_livedata
70+
implementation libs.androidx_room
71+
implementation libs.androidx_room_rxjava
72+
implementation libs.androidx_viewmodel
6973
implementation libs.arrow
70-
implementation libs.constraint
71-
implementation libs.design
7274
implementation(libs.floating_search) {
7375
exclude module: 'support-v4'
7476
}
77+
implementation libs.material
7578
implementation libs.okhttp
7679
implementation libs.okhttp_logging
80+
implementation libs.picasso
7781
implementation libs.koin
7882
implementation libs.koin_android
7983
implementation libs.koin_architecture
8084
implementation libs.kotlin_stdlib
81-
implementation libs.picasso
8285
implementation libs.retrofit
8386
implementation libs.retrofit_gson
8487
implementation libs.retrofit_rx_java
8588
implementation libs.rx_java
8689
implementation libs.rx_android
8790
implementation libs.steho
8891

89-
testImplementation (libs.arch_comp_room_test) {
92+
testImplementation(libs.androidx_room_test) {
9093
exclude module: 'junit'
9194
}
92-
testImplementation (libs.arch_comp_test) {
95+
testImplementation(libs.androidx_test) {
9396
exclude module: 'junit'
9497
}
9598
testImplementation libs.junit_api
9699
testImplementation libs.junit_params
97-
testImplementation libs.kotlintest
98-
testImplementation (libs.koin_test) {
100+
testImplementation libs.mockito_kotlin
101+
testImplementation libs.kotest_runner
102+
testImplementation libs.kotest_assertions
103+
testImplementation libs.kotest_property
104+
testImplementation(libs.koin_test) {
99105
exclude module: 'junit'
100106
}
101-
testImplementation libs.mockito_kotlin
102-
103107
testRuntimeOnly libs.junit_engine
104108
}
105109
repositories {

app/src/main/java/es/ffgiraldez/comicsearch/comics/data/ComicDataSources.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package es.ffgiraldez.comicsearch.comics.data
22

3-
import arrow.core.Option
43
import es.ffgiraldez.comicsearch.comics.domain.Query
4+
import es.ffgiraldez.comicsearch.platform.Option
55
import io.reactivex.Completable
66
import io.reactivex.Flowable
77
import io.reactivex.Single

app/src/main/java/es/ffgiraldez/comicsearch/comics/data/ComicRepository.kt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
package es.ffgiraldez.comicsearch.comics.data
22

33
import arrow.core.Either
4-
import arrow.core.None
5-
import arrow.core.Option
6-
import arrow.core.Some
4+
import arrow.core.Either.Left
5+
import arrow.core.Either.Right
76
import es.ffgiraldez.comicsearch.comics.domain.ComicError
87
import es.ffgiraldez.comicsearch.comics.domain.ComicError.EmptyResultsError
98
import es.ffgiraldez.comicsearch.comics.domain.ComicError.NetworkError
109
import es.ffgiraldez.comicsearch.comics.domain.Query
10+
import es.ffgiraldez.comicsearch.platform.Option
1111
import es.ffgiraldez.comicsearch.platform.left
1212
import es.ffgiraldez.comicsearch.platform.right
1313
import io.reactivex.Flowable
@@ -24,8 +24,8 @@ abstract class ComicRepository<T> (
2424
query: Option<Query>,
2525
term: String
2626
): Flowable<out Either<ComicError, List<T>>> = when (query) {
27-
is None -> search(term)
28-
is Some -> fetch(query)
27+
is Left -> search(term)
28+
is Right -> fetch(query)
2929
}
3030

3131
private fun search(term: String): Flowable<Either<ComicError, List<T>>> =
@@ -44,8 +44,8 @@ abstract class ComicRepository<T> (
4444
local.insert(term, it).toFlowable()
4545
})
4646

47-
private fun fetch(it: Some<Query>): Flowable<Either<EmptyResultsError, List<T>>> =
48-
local.findByQuery(it.t)
47+
private fun fetch(it: Right<Query>): Flowable<Either<EmptyResultsError, List<T>>> =
48+
local.findByQuery(it.b)
4949
.map {
5050
when (it.isEmpty()) {
5151
true -> Either.left(EmptyResultsError)

app/src/main/java/es/ffgiraldez/comicsearch/comics/data/network/ComicVineApi.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ import retrofit2.http.Query
77
interface ComicVineApi {
88

99
companion object {
10-
const val KEY = "75d580a0593b7320727309feb6309f62def786cd"
11-
const val BASE_URL = "http://www.comicvine.com"
10+
const val KEY = "d800216c205879548fdc491e0a260ff402633c00"
11+
const val BASE_URL = "https://www.comicvine.com"
1212
}
1313

1414
@GET("/api/search?format=json&field_list=name&limit=20&page=1&resources=volume&api_key=$KEY")
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
package es.ffgiraldez.comicsearch.platform
22

3-
import androidx.databinding.BindingAdapter
43
import android.widget.ImageView
4+
import androidx.databinding.BindingAdapter
55
import com.squareup.picasso.Picasso
66

77
@BindingAdapter("image")
8-
fun bindImage(image: ImageView, url: String) = Picasso.with(image.context).load(url).into(image)
8+
fun bindImage(image: ImageView, url: String) = Picasso.get().load(url).into(image)

app/src/main/java/es/ffgiraldez/comicsearch/platform/Utilities.kt

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,18 @@
11
package es.ffgiraldez.comicsearch.platform
22

33
import arrow.core.Either
4+
import arrow.core.Left
5+
import arrow.core.Right
46
import arrow.core.left
57
import arrow.core.right
68
import io.reactivex.disposables.CompositeDisposable
79
import io.reactivex.disposables.Disposable
810

11+
typealias Option<A> = Either<Unit, A>
12+
913
fun <A, B> left(a: A): Either<A, B> = a.left()
1014
fun <A, B> right(b: B): Either<A, B> = b.right()
15+
fun <T> T?.toOption(): Option<T> = this?.let { Right(it) } ?: Left(Unit)
1116

1217
operator fun CompositeDisposable.plus(disposable: Disposable): CompositeDisposable = apply {
1318
add(disposable)

app/src/main/java/es/ffgiraldez/comicsearch/query/base/ui/QueryActivity.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ import es.ffgiraldez.comicsearch.navigation.Navigator
99
import es.ffgiraldez.comicsearch.query.search.presentation.SearchViewModel
1010
import es.ffgiraldez.comicsearch.query.sugestion.presentation.SuggestionViewModel
1111
import org.koin.android.ext.android.inject
12-
import org.koin.android.viewmodel.ext.android.viewModel
12+
import org.koin.androidx.viewmodel.ext.android.viewModel
1313
import org.koin.core.parameter.parametersOf
1414

1515
class QueryActivity : AppCompatActivity() {

app/src/main/java/es/ffgiraldez/comicsearch/query/base/ui/QueryViewStateExt.kt

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,14 @@
11
package es.ffgiraldez.comicsearch.query.base.ui
22

3-
import arrow.core.Option
4-
import arrow.core.toOption
53
import es.ffgiraldez.comicsearch.comics.domain.ComicError
64
import es.ffgiraldez.comicsearch.query.base.presentation.QueryViewState
75

8-
val <T>QueryViewState<T>.error: Option<ComicError>
6+
val <T>QueryViewState<T>.error: ComicError?
97
get() = when (this) {
10-
is QueryViewState.Error -> _error.toOption()
11-
else -> Option.empty()
8+
is QueryViewState.Error -> _error
9+
else -> null
1210
}
1311

14-
val <T>QueryViewState<T>.hasError: Boolean
15-
get() = !error.isEmpty()
16-
1712
val <T>QueryViewState<T>.results: List<T>
1813
get() = when (this) {
1914
is QueryViewState.Result -> _results

0 commit comments

Comments
 (0)