Skip to content

Commit

Permalink
Merge pull request #29 from Kyash/androidx
Browse files Browse the repository at this point in the history
Migrated to AndroidX
  • Loading branch information
konifar authored Dec 27, 2018
2 parents 5fa7cc9 + 42ef56b commit da5c9fc
Show file tree
Hide file tree
Showing 13 changed files with 224 additions and 136 deletions.
3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,8 @@ dependencies {
}
```

`LATEST_VERSION` is [![JitPack](https://jitpack.io/v/Kyash/validatable-textinput-layout.svg)](https://jitpack.io/#Kyash/validatable-textinput-layout)
`LATEST_VERSION` is [![JitPack](https://jitpack.io/v/Kyash/validatable-textinput-layout.svg)](https://jitpack.io/#Kyash/validatable-textinput-layout) which supports AndroidX.
If you still use Support Library, please use version `0.3.0`.

## Basic usage
You can use as same as `TextInputLayout` in layout xml.
Expand Down
14 changes: 7 additions & 7 deletions build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
buildscript {
apply from: "${rootDir.absolutePath}/versions.gradle"
import dependencies.Depends

buildscript {
repositories {
google()
jcenter()
Expand All @@ -10,11 +10,11 @@ buildscript {
maven { url "https://jitpack.io" }
}
dependencies {
classpath "com.android.tools.build:gradle:$versions.gradleBuildTool"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$versions.kotlin"
classpath "gradle.plugin.org.jlleitschuh.gradle:ktlint-gradle:$versions.ktlintGradle"
classpath "io.fabric.tools:gradle:$versions.fabricGradleTool"
classpath "com.github.dcendents:android-maven-gradle-plugin:$versions.mavenGradle"
classpath Depends.GradlePlugin.android
classpath Depends.GradlePlugin.kotlin
classpath Depends.GradlePlugin.ktlint
classpath Depends.GradlePlugin.fabric
classpath Depends.GradlePlugin.androidMaven
}
}

Expand Down
1 change: 1 addition & 0 deletions buildSrc/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
/build
6 changes: 6 additions & 0 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
plugins {
`kotlin-dsl`
}
repositories {
jcenter()
}
65 changes: 65 additions & 0 deletions buildSrc/src/main/java/dependencies/Depends.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
package dependencies

@Suppress("unused")
object Depends {
object GradlePlugin {
const val android = "com.android.tools.build:gradle:3.2.1"
const val kotlin = "org.jetbrains.kotlin:kotlin-gradle-plugin:${Kotlin.version}"
const val ktlint = "gradle.plugin.org.jlleitschuh.gradle:ktlint-gradle:3.0.0"
const val fabric = "io.fabric.tools:gradle:1.25.4"
const val androidMaven = "com.github.dcendents:android-maven-gradle-plugin:2.0"
}

object Test {
const val junit = "junit:junit:4.12"
const val testRunner = "androidx.test:runner:1.1.0"
const val mockitoKotlin = "com.nhaarman.mockitokotlin2:mockito-kotlin:2.0.0"
const val robolectric = "org.robolectric:robolectric:3.5.1"

object Espresso {
const val core = "androidx.test.espresso:espresso-core:3.1.0-alpha4"
const val intents = "androidx.test.espresso:espresso-intents:3.1.0-alpha4"
}
}

object AndroidX {
const val appCompat = "androidx.appcompat:appcompat:1.0.0"
const val recyclerView = "androidx.recyclerview:recyclerview:1.0.0"
const val cardView = "androidx.cardview:cardview:1.0.0"
const val design = "com.google.android.material:material:1.1.0-alpha01"
}

object Kotlin {
const val version = "1.3.11"
const val stdlib = "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$version"
}

object Stetho {
const val version = "1.5.0"
const val core = "com.facebook.stetho:stetho:$version"
const val okhttp = "com.facebook.stetho:stetho-okhttp3:$version"
}

object Crashlytics {
const val core = "com.crashlytics.sdk.android:crashlytics:2.8.0@aar"
}

object Retrofit {
private const val version = "2.5.0"
const val core = "com.squareup.retrofit2:retrofit:$version"
const val converterMoshi = "com.squareup.retrofit2:converter-moshi:$version"
const val adapterRxJava2 = "com.squareup.retrofit2:adapter-rxjava2:$version"
}

object Kotshi {
private const val version = "1.0.6"
const val api = "se.ansman.kotshi:api:$version"
const val compiler = "se.ansman.kotshi:compiler:$version"
}

object Rx {
const val RxJava = "io.reactivex.rxjava2:rxjava:2.2.4"
const val RxAndroid = "io.reactivex.rxjava2:rxandroid:2.1.0"
const val RxKotlin = "io.reactivex.rxjava2:rxkotlin:2.3.0"
}
}
7 changes: 7 additions & 0 deletions buildSrc/src/main/java/dependencies/Versions.kt
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package dependencies

private object Versions {
val androidCompileSdkVersion = 28
val androidTargetSdkVersion = 28
val androidMinSdkVersion = 19
}
57 changes: 30 additions & 27 deletions example/build.gradle
Original file line number Diff line number Diff line change
@@ -1,21 +1,25 @@
import dependencies.Depends
import dependencies.Versions

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: "org.jlleitschuh.gradle.ktlint"
apply plugin: 'io.fabric'
apply from: "${rootDir.absolutePath}/versions.gradle"

def versionMajor = 0
def versionMinor = 1
def versionMajor = 1
def versionMinor = 0
def versionPatch = 0

android {
compileSdkVersion versions.compileSdk
compileSdkVersion Versions.androidCompileSdkVersion
dataBinding.enabled = true

defaultConfig {
applicationId "co.kyash.vtl.sample"
minSdkVersion versions.minSdk
targetSdkVersion versions.targetSdk
minSdkVersion Versions.androidMinSdkVersion
targetSdkVersion Versions.androidTargetSdkVersion
versionCode versionMajor * 10000 + versionMinor * 100 + versionPatch
versionName "$versionMajor.$versionMinor.$versionPatch"
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
Expand Down Expand Up @@ -58,43 +62,42 @@ dependencies {
implementation project(':library')

//==================== Kotlin ====================
implementation depends.kotlin.stdlib
implementation Depends.Kotlin.stdlib

//==================== Support Library ====================
implementation depends.support.appcompat
implementation depends.support.design
implementation depends.support.cardview
implementation Depends.AndroidX.appCompat
implementation Depends.AndroidX.design
implementation Depends.AndroidX.cardView

//==================== Network ====================
implementation depends.retrofit.core
implementation depends.retrofit.converterMoshi
implementation depends.retrofit.adapterRxJava2
implementation Depends.Retrofit.core
implementation Depends.Retrofit.converterMoshi
implementation Depends.Retrofit.adapterRxJava2

//==================== Structure ====================
implementation depends.kotshi.api
kapt depends.kotshi.compiler
implementation Depends.Kotshi.api
kapt Depends.Kotshi.compiler

implementation depends.rxjava2.core
implementation depends.rxjava2.android
implementation depends.rxjava2.kotlin
implementation Depends.Rx.RxJava
implementation Depends.Rx.RxAndroid
implementation Depends.Rx.RxKotlin

//==================== Debug ====================
implementation(depends.crashlytics) {
implementation(Depends.Crashlytics.core) {
transitive = true
}

//==================== Debug ====================
debugImplementation depends.stetho.core
debugImplementation depends.stetho.okhttp3
implementation Depends.Stetho.core
implementation Depends.Stetho.okhttp

//==================== Test ====================
testImplementation depends.junit
testImplementation depends.mockitoKotlin
testImplementation depends.robolectric.core
androidTestImplementation depends.supporttest.runner
androidTestImplementation depends.supporttest.espresso
androidTestImplementation depends.espresso.core
androidTestImplementation depends.espresso.intents
testImplementation Depends.Test.junit
testImplementation Depends.Test.mockitoKotlin
testImplementation Depends.Test.robolectric
androidTestImplementation Depends.Test.testRunner
androidTestImplementation Depends.Test.Espresso.core
androidTestImplementation Depends.Test.Espresso.intents
}

ktlint {
Expand Down
62 changes: 31 additions & 31 deletions example/src/main/java/co/kyash/vtl/example/MainActivity.kt
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package co.kyash.vtl.example

import android.databinding.DataBindingUtil
import android.os.Bundle
import android.support.v7.app.AppCompatActivity
import android.util.Log
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import co.kyash.vtl.ValidatableView
import co.kyash.vtl.example.api.MaterialDesignColorsApi
import co.kyash.vtl.example.databinding.ActivityMainBinding
Expand Down Expand Up @@ -42,12 +42,12 @@ class MainActivity : AppCompatActivity() {
private val compositeDisposable = CompositeDisposable()

private val api = Retrofit.Builder()
.baseUrl("https://raw.githubusercontent.com")
.addConverterFactory(MoshiConverterFactory.create(Moshi.Builder().build()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync())
.client(OkHttpClient.Builder().addNetworkInterceptor(StethoInterceptor()).build())
.build()
.create(MaterialDesignColorsApi::class.java)
.baseUrl("https://raw.githubusercontent.com")
.addConverterFactory(MoshiConverterFactory.create(Moshi.Builder().build()))
.addCallAdapterFactory(RxJava2CallAdapterFactory.createAsync())
.client(OkHttpClient.Builder().addNetworkInterceptor(StethoInterceptor()).build())
.build()
.create(MaterialDesignColorsApi::class.java)

override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Expand All @@ -65,33 +65,33 @@ class MainActivity : AppCompatActivity() {
private fun initValidators() {
// Example 1
validatableViewsForTriggerTextChanged.addAll(arrayOf(
binding.firstName.register(RequiredValidator(getString(R.string.validation_error_required))),
binding.lastName.register(RequiredValidator(getString(R.string.validation_error_required))),
binding.email.register(EmailValidator(getString(R.string.validation_error_email))),
binding.numberOnly.register(NumberOnlyValidator(getString(R.string.validation_error_number_only))),
binding.asciiOnly.register(AsciiOnlyValidator(getString(R.string.validation_error_ascii_only)))
binding.firstName.register(RequiredValidator(getString(R.string.validation_error_required))),
binding.lastName.register(RequiredValidator(getString(R.string.validation_error_required))),
binding.email.register(EmailValidator(getString(R.string.validation_error_email))),
binding.numberOnly.register(NumberOnlyValidator(getString(R.string.validation_error_number_only))),
binding.asciiOnly.register(AsciiOnlyValidator(getString(R.string.validation_error_ascii_only)))
))

// Example 2
validatableViewsForTriggerFocusChanged.addAll(arrayOf(
binding.email2.register(EmailValidator(getString(R.string.validation_error_email)))
binding.email2.register(EmailValidator(getString(R.string.validation_error_email)))
))

// Example 3
binding.colors.register(MaterialDesignColorsValidator(api, this))

// Example 4
validatableViewsForButtonEnable.addAll(arrayOf(
binding.firstName2.register(RequiredValidator(getString(R.string.validation_error_required))),
binding.lastName2.register(RequiredValidator(getString(R.string.validation_error_required)))
binding.firstName2.register(RequiredValidator(getString(R.string.validation_error_required))),
binding.lastName2.register(RequiredValidator(getString(R.string.validation_error_required)))
))
val validations: List<Flowable<Any>> = validatableViewsForButtonEnable.flatMap { it.validationFlowables }
Flowable.zip(validations) { Any() }
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.doOnError({ binding.submit3.isEnabled = false })
.retry() // non-terminated stream
.subscribe({ binding.submit3.isEnabled = true }, { })
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.doOnError({ binding.submit3.isEnabled = false })
.retry() // non-terminated stream
.subscribe({ binding.submit3.isEnabled = true }, { })
}


Expand All @@ -113,16 +113,16 @@ class MainActivity : AppCompatActivity() {
compositeDisposable.clear()

compositeDisposable.add(
Completable.mergeDelayError(validations)
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
Log.d("MainActivity", "Validation cleared.")
Toast.makeText(this, R.string.validation_success, Toast.LENGTH_SHORT).show()
}, { throwable ->
Log.e("MainActivity", "Validation error occurred.", throwable)
Toast.makeText(this, R.string.validation_error_occurred, Toast.LENGTH_SHORT).show()
})
Completable.mergeDelayError(validations)
.subscribeOn(Schedulers.computation())
.observeOn(AndroidSchedulers.mainThread())
.subscribe({
Log.d("MainActivity", "Validation cleared.")
Toast.makeText(this, R.string.validation_success, Toast.LENGTH_SHORT).show()
}, { throwable ->
Log.e("MainActivity", "Validation error occurred.", throwable)
Toast.makeText(this, R.string.validation_error_occurred, Toast.LENGTH_SHORT).show()
})
)
}

Expand Down
Loading

0 comments on commit da5c9fc

Please sign in to comment.