From fad1bdc94b21f4fa89d3b4c899857eca4d45f000 Mon Sep 17 00:00:00 2001 From: dima Date: Mon, 16 Jul 2018 12:48:13 +0300 Subject: [PATCH 1/4] typo fix --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1a4a1f5..c31db08 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # RxBilling -Rx wrapper for Billing Library with connection managment +Rx wrapper for Billing Library with connection management # Download From c3eeb38ae3d4cbbab30ef1324a8fbe2dba879deb Mon Sep 17 00:00:00 2001 From: dima Date: Fri, 27 Jul 2018 15:17:04 +0300 Subject: [PATCH 2/4] android x support added --- README.md | 1 + .../com/gen/rxbilling/sample/MainActivity.kt | 4 +-- build.gradle | 2 +- dependencies.gradle | 36 ++++++++++++------- gradle.properties | 2 ++ rxbilling/build.gradle | 16 +++++---- .../com/gen/rxbilling/flow/FlowDelegate.kt | 36 ------------------- .../com/gen/rxbilling/flow/RxBillingFlow.kt | 1 + .../flow/delegate/ActivityFlowDelegate.kt | 13 +++++++ .../flow/delegate/ConductorFlowDelegate.kt | 13 +++++++ .../rxbilling/flow/delegate/FlowDelegate.kt | 9 +++++ .../delegate/androidx/FragmentFlowDelegate.kt | 13 +++++++ .../delegate/support/FragmentFlowDelegate.kt | 14 ++++++++ .../androidx/BillingConnectionManager.kt | 33 +++++++++++++++++ .../{ => arch}/BillingConnectionManager.kt | 8 +++-- 15 files changed, 141 insertions(+), 60 deletions(-) delete mode 100644 rxbilling/src/main/java/com/gen/rxbilling/flow/FlowDelegate.kt create mode 100644 rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ActivityFlowDelegate.kt create mode 100644 rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ConductorFlowDelegate.kt create mode 100644 rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/FlowDelegate.kt create mode 100644 rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/androidx/FragmentFlowDelegate.kt create mode 100644 rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/support/FragmentFlowDelegate.kt create mode 100644 rxbilling/src/main/java/com/gen/rxbilling/lifecycle/androidx/BillingConnectionManager.kt rename rxbilling/src/main/java/com/gen/rxbilling/lifecycle/{ => arch}/BillingConnectionManager.kt (79%) diff --git a/README.md b/README.md index 1a4a1f5..e3ec523 100644 --- a/README.md +++ b/README.md @@ -6,6 +6,7 @@ Rx wrapper for Billing Library with connection managment [ ![Download](https://api.bintray.com/packages/betterme/rxbilling/com.betterme%3Arxbilling/images/download.svg) ](https://bintray.com/betterme/rxbilling/com.betterme%3Arxbilling/_latestVersion) implementation 'com.betterme:rxbilling:$latestVersion' + implementation 'com.android.billingclient:billing:$billingClientVer' # How to use diff --git a/app/src/main/java/com/gen/rxbilling/sample/MainActivity.kt b/app/src/main/java/com/gen/rxbilling/sample/MainActivity.kt index 1abb6d1..2f64194 100644 --- a/app/src/main/java/com/gen/rxbilling/sample/MainActivity.kt +++ b/app/src/main/java/com/gen/rxbilling/sample/MainActivity.kt @@ -9,10 +9,10 @@ import com.gen.rxbilling.client.RxBilling import com.gen.rxbilling.client.RxBillingImpl import com.gen.rxbilling.connection.BillingClientFactory import com.gen.rxbilling.connection.BillingServiceFactory -import com.gen.rxbilling.flow.ActivityFlowDelegate +import com.gen.rxbilling.flow.delegate.ActivityFlowDelegate import com.gen.rxbilling.flow.BuyItemRequest import com.gen.rxbilling.flow.RxBillingFlow -import com.gen.rxbilling.lifecycle.BillingConnectionManager +import com.gen.rxbilling.lifecycle.arch.BillingConnectionManager import io.reactivex.disposables.CompositeDisposable import kotlinx.android.synthetic.main.activity_main.* import timber.log.Timber diff --git a/build.gradle b/build.gradle index f8452f2..06d0d7c 100644 --- a/build.gradle +++ b/build.gradle @@ -2,7 +2,7 @@ apply from: 'dependencies.gradle' buildscript { - ext.kotlin_version = '1.2.30' + ext.kotlin_version = '1.2.41' ext.maven_version = '1.5' ext.bintray_version = '1.7.2' ext.dokka_version = '0.9.16' diff --git a/dependencies.gradle b/dependencies.gradle index a0fa859..168ddc1 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -1,22 +1,27 @@ ext { - compileSdkVer = 27 + compileSdkVer = 28 minSdkVer = 14 - targetSdkVer = 27 + targetSdkVer = 28 versionCode = 1 versionName = '0.9.1' // Kotlin kotlinVer = '1.2.50' - androidKtxVer = '0.2' + androidKtxVer = '1.0.0-alpha1' // Support library - supportLibraryVer = '27.1.1' + supportLibraryVer = '28.0.0-alpha1' constraintLayout = '1.0.2' + // AndroidX + xAppCompatVer = '1.0.0-alpha1' + xLifecycleVer = '2.0.0-alpha1' + xFragmentVer = '1.0.0-alpha1' + // Architecture components archComponentsVer = '1.1.0' - lifecycleVer = "1.1.0" + lifecycleVer = "1.1.1" // Reactive Extensions rxJava2Ver = '2.1.10' @@ -44,9 +49,16 @@ ext { // Dependencies supportDependencies = [ - appCompat : "com.android.support:appcompat-v7:$supportLibraryVer", - support : "com.android.support:support-v4:$supportLibraryVer", - design : "com.android.support:design:$supportLibraryVer", + appCompat: "com.android.support:appcompat-v7:$supportLibraryVer", + design : "com.android.support:design:$supportLibraryVer", + ] + + androidXdependencies = [ + appCompat : "androidx.appcompat:appcompat:$xAppCompatVer", + fragment : "androidx.fragment:fragment:$xFragmentVer", + lifecycleRuntime : "androidx.lifecycle:lifecycle-runtime:$xLifecycleVer", + lifecycleCompiler : "androidx.lifecycle:lifecycle-compiler:$xLifecycleVer", + lifecycleExtensions: "androidx.lifecycle:lifecycle-extensions:$xLifecycleVer" ] kotlinDependencies = [ @@ -56,7 +68,7 @@ ext { ] developmentDependencies = [ - timber : "com.jakewharton.timber:timber:$timberVer", + timber: "com.jakewharton.timber:timber:$timberVer", ] presentationDependencies = [ @@ -68,9 +80,9 @@ ext { ] dataDependencies = [ - rxJava : "io.reactivex.rxjava2:rxjava:$rxJava2Ver", - rxAndroid : "io.reactivex.rxjava2:rxandroid:$rxAndroid2Ver", - billingClient : "com.android.billingclient:billing:$billingClientVer" + rxJava : "io.reactivex.rxjava2:rxjava:$rxJava2Ver", + rxAndroid : "io.reactivex.rxjava2:rxandroid:$rxAndroid2Ver", + billingClient: "com.android.billingclient:billing:$billingClientVer" ] testDependencies = [ diff --git a/gradle.properties b/gradle.properties index 0b36338..67295ad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,6 +11,8 @@ org.gradle.jvmargs=-Xmx1536m # This option should only be used with decoupled projects. More details, visit # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # org.gradle.parallel=true +android.useAndroidX = true +android.enableJetifier = false GROUP=com.betterme POM_NAME=rxbilling POM_PACKAGING=aar diff --git a/rxbilling/build.gradle b/rxbilling/build.gradle index ecb8d76..e24f067 100644 --- a/rxbilling/build.gradle +++ b/rxbilling/build.gradle @@ -41,15 +41,19 @@ dokka { dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) - implementation kotlinDependencies.kotlinStdLib - implementation dataDependencies.billingClient - implementation presentationDependencies.lifecycleExtensions - kapt presentationDependencies.lifecycleCompiler implementation developmentDependencies.timber implementation dataDependencies.rxJava implementation dataDependencies.rxAndroid + implementation dataDependencies.billingClient + implementation kotlinDependencies.kotlinStdLib + compileOnly presentationDependencies.conductor - implementation supportDependencies.appCompat + compileOnly presentationDependencies.lifecycleExtensions + compileOnly androidXdependencies.lifecycleRuntime + compileOnly androidXdependencies.lifecycleExtensions + + kapt presentationDependencies.lifecycleCompiler + kapt androidXdependencies.lifecycleCompiler testImplementation testDependencies.jUnit testImplementation testDependencies.mockito @@ -146,7 +150,7 @@ bintray { version { name = libraryVersionName desc = 'Billing library release $libraryVersionName' - released = new Date() + released = new Date() vcsTag = libraryVersionName } } diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/FlowDelegate.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/FlowDelegate.kt deleted file mode 100644 index 4aa17f4..0000000 --- a/rxbilling/src/main/java/com/gen/rxbilling/flow/FlowDelegate.kt +++ /dev/null @@ -1,36 +0,0 @@ -package com.gen.rxbilling.flow - -import android.app.PendingIntent -import android.content.Intent -import android.support.v4.app.Fragment -import android.support.v7.app.AppCompatActivity -import com.bluelinelabs.conductor.Controller - -interface FlowDelegate { - - fun startFlow(pendingIntent: PendingIntent, requestCode: Int) -} - -class ActivityFlowDelegate(private val activity: AppCompatActivity) : FlowDelegate { - - override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { - activity.startIntentSenderForResult( - pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0) - } -} - -class FragmentFlowDelegate(private val fragment: Fragment) : FlowDelegate { - - override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { - fragment.startIntentSenderForResult( - pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0, null) - } -} - -class ConductorFlowDelegate(private val controller: Controller) : FlowDelegate { - - override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { - controller.startIntentSenderForResult( - pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0, null) - } -} \ No newline at end of file diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/RxBillingFlow.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/RxBillingFlow.kt index 0b6b766..c2c0e2d 100644 --- a/rxbilling/src/main/java/com/gen/rxbilling/flow/RxBillingFlow.kt +++ b/rxbilling/src/main/java/com/gen/rxbilling/flow/RxBillingFlow.kt @@ -10,6 +10,7 @@ import com.android.billingclient.util.BillingHelper.RESPONSE_BUY_INTENT import com.android.vending.billing.IInAppBillingService import com.gen.rxbilling.connection.BillingServiceFactory import com.gen.rxbilling.exception.BillingException +import com.gen.rxbilling.flow.delegate.FlowDelegate import com.gen.rxbilling.lifecycle.Connectable import io.reactivex.Completable import io.reactivex.Flowable diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ActivityFlowDelegate.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ActivityFlowDelegate.kt new file mode 100644 index 0000000..6a11e0f --- /dev/null +++ b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ActivityFlowDelegate.kt @@ -0,0 +1,13 @@ +package com.gen.rxbilling.flow.delegate + +import android.app.Activity +import android.app.PendingIntent +import android.content.Intent + +class ActivityFlowDelegate(private val activity: Activity) : FlowDelegate { + + override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { + activity.startIntentSenderForResult( + pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0) + } +} \ No newline at end of file diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ConductorFlowDelegate.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ConductorFlowDelegate.kt new file mode 100644 index 0000000..1b62fba --- /dev/null +++ b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/ConductorFlowDelegate.kt @@ -0,0 +1,13 @@ +package com.gen.rxbilling.flow.delegate + +import android.app.PendingIntent +import android.content.Intent +import com.bluelinelabs.conductor.Controller + +class ConductorFlowDelegate(private val controller: Controller) : FlowDelegate { + + override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { + controller.startIntentSenderForResult( + pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0, null) + } +} \ No newline at end of file diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/FlowDelegate.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/FlowDelegate.kt new file mode 100644 index 0000000..4f7a844 --- /dev/null +++ b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/FlowDelegate.kt @@ -0,0 +1,9 @@ +package com.gen.rxbilling.flow.delegate + +import android.app.PendingIntent + +interface FlowDelegate { + + fun startFlow(pendingIntent: PendingIntent, requestCode: Int) +} + diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/androidx/FragmentFlowDelegate.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/androidx/FragmentFlowDelegate.kt new file mode 100644 index 0000000..6c96cea --- /dev/null +++ b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/androidx/FragmentFlowDelegate.kt @@ -0,0 +1,13 @@ +package com.gen.rxbilling.flow.delegate.androidx + +import android.app.PendingIntent +import android.content.Intent +import com.gen.rxbilling.flow.delegate.FlowDelegate + +class FragmentFlowDelegate(private val fragment: androidx.fragment.app.Fragment) : FlowDelegate { + + override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { + fragment.startIntentSenderForResult( + pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0, null) + } +} \ No newline at end of file diff --git a/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/support/FragmentFlowDelegate.kt b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/support/FragmentFlowDelegate.kt new file mode 100644 index 0000000..de7c7e8 --- /dev/null +++ b/rxbilling/src/main/java/com/gen/rxbilling/flow/delegate/support/FragmentFlowDelegate.kt @@ -0,0 +1,14 @@ +package com.gen.rxbilling.flow.delegate.support + +import android.app.PendingIntent +import android.content.Intent +import android.support.v4.app.Fragment +import com.gen.rxbilling.flow.delegate.FlowDelegate + +class FragmentFlowDelegate(private val fragment: Fragment) : FlowDelegate { + + override fun startFlow(pendingIntent: PendingIntent, requestCode: Int) { + fragment.startIntentSenderForResult( + pendingIntent.intentSender, requestCode, Intent(), 0, 0, 0, null) + } +} \ No newline at end of file diff --git a/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/androidx/BillingConnectionManager.kt b/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/androidx/BillingConnectionManager.kt new file mode 100644 index 0000000..44b8e4e --- /dev/null +++ b/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/androidx/BillingConnectionManager.kt @@ -0,0 +1,33 @@ +package com.gen.rxbilling.lifecycle.androidx + +import androidx.lifecycle.Lifecycle +import androidx.lifecycle.LifecycleObserver +import androidx.lifecycle.OnLifecycleEvent +import com.gen.rxbilling.lifecycle.Connectable +import io.reactivex.disposables.Disposable +import timber.log.Timber + +class BillingConnectionManager( + private val connectable: Connectable +) : LifecycleObserver { + private var disposable: Disposable? = null + + @OnLifecycleEvent(Lifecycle.Event.ON_START) + fun connect() { + Timber.d("connect") + disposable = connectable.connect() + .subscribe({ + Timber.d("$it") + }, { + Timber.e(it) + }, { + Timber.d("onComplete") + }) + } + + @OnLifecycleEvent(Lifecycle.Event.ON_STOP) + fun disconnect() { + Timber.d("disconnect") + disposable?.dispose() + } +} \ No newline at end of file diff --git a/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/BillingConnectionManager.kt b/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/arch/BillingConnectionManager.kt similarity index 79% rename from rxbilling/src/main/java/com/gen/rxbilling/lifecycle/BillingConnectionManager.kt rename to rxbilling/src/main/java/com/gen/rxbilling/lifecycle/arch/BillingConnectionManager.kt index 8b9736a..8fe152c 100644 --- a/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/BillingConnectionManager.kt +++ b/rxbilling/src/main/java/com/gen/rxbilling/lifecycle/arch/BillingConnectionManager.kt @@ -1,13 +1,15 @@ -package com.gen.rxbilling.lifecycle +package com.gen.rxbilling.lifecycle.arch import android.arch.lifecycle.Lifecycle import android.arch.lifecycle.LifecycleObserver import android.arch.lifecycle.OnLifecycleEvent +import com.gen.rxbilling.lifecycle.Connectable import io.reactivex.disposables.Disposable import timber.log.Timber -class BillingConnectionManager(private val connectable: Connectable) - : LifecycleObserver { +class BillingConnectionManager( + private val connectable: Connectable +) : LifecycleObserver { private var disposable: Disposable? = null @OnLifecycleEvent(Lifecycle.Event.ON_START) From 1e169426849107a53f125ed1a287f84beee8ad15 Mon Sep 17 00:00:00 2001 From: dima Date: Fri, 27 Jul 2018 16:21:26 +0300 Subject: [PATCH 3/4] version --- dependencies.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dependencies.gradle b/dependencies.gradle index 168ddc1..1723bb7 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -4,7 +4,7 @@ ext { targetSdkVer = 28 versionCode = 1 - versionName = '0.9.1' + versionName = '0.9.2' // Kotlin kotlinVer = '1.2.50' From 75e702e535ba4828b57b9539733fbb19c1fc24b6 Mon Sep 17 00:00:00 2001 From: dima Date: Fri, 27 Jul 2018 16:36:03 +0300 Subject: [PATCH 4/4] readme: androidx added --- README.md | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index e3ec523..67874f0 100644 --- a/README.md +++ b/README.md @@ -189,4 +189,14 @@ updates observer will not be triggered }, { //handle error })) - } \ No newline at end of file + } + +## AndroidX + +If you are going to migrate on AndroidX, please use + + com.gen.rxbilling.lifecycle.androidx.BillingConnectionManager + +and + + com.gen.rxbilling.flow.delegate.androidx.FragmentFlowDelegate \ No newline at end of file