浏览代码

- PageError改成StateError
- 缺省页也可以监听错误

drake 5 年之前
父节点
当前提交
9625aa3c2c

+ 1 - 1
README.md

@@ -54,7 +54,7 @@ allprojects {
 module 的 build.gradle
 
 ```groovy
-implementation 'com.github.liangjingkanji:Net:1.2.2'
+implementation 'com.github.liangjingkanji:Net:1.2.4'
 ```
 
 

+ 5 - 4
net/src/main/java/com/drake/net/NetConfig.kt

@@ -14,9 +14,9 @@ import android.app.Dialog
 import android.content.Context
 import android.os.Handler
 import android.os.Looper
+import android.view.View
 import android.widget.Toast
 import androidx.fragment.app.FragmentActivity
-import com.drake.brv.PageRefreshLayout
 import com.drake.net.error.RequestParamsException
 import com.drake.net.error.ResponseException
 import com.drake.net.error.ServerResponseException
@@ -63,7 +63,7 @@ object NetConfig {
         app.toast(message)
     }
 
-    internal var onPageError: Throwable.(pageRefreshLayout: PageRefreshLayout) -> Unit = {
+    internal var onStateError: Throwable.(view: View) -> Unit = {
 
         val message = when (this) {
             is NetworkError -> app.getString(R.string.network_error)
@@ -79,6 +79,7 @@ object NetConfig {
             is ParseError -> app.getString(R.string.parse_error)
             is RequestParamsException -> app.getString(R.string.request_error)
             is ServerResponseException -> app.getString(R.string.server_error)
+            is ExecutionException -> app.getString(R.string.image_error)
             is ResponseException -> msg
             else -> {
                 app.getString(R.string.other_error)
@@ -137,8 +138,8 @@ fun KalleConfig.Builder.onError(block: Throwable.() -> Unit) {
  * @receiver KalleConfig.Builder
  * @param block [@kotlin.ExtensionFunctionType] Function2<Throwable, [@kotlin.ParameterName] PageRefreshLayout, Unit>
  */
-fun KalleConfig.Builder.onPageError(block: Throwable.(pageRefreshLayout: PageRefreshLayout) -> Unit) {
-    NetConfig.onPageError = block
+fun KalleConfig.Builder.onStateError(block: Throwable.(view: View) -> Unit) {
+    NetConfig.onStateError = block
 }
 
 

+ 13 - 14
net/src/main/java/com/drake/net/ObserverUtils.kt → net/src/main/java/com/drake/net/observer/ObserverUtils.kt

@@ -2,10 +2,10 @@
  * Copyright (C) 2018, Umbrella CompanyLimited All rights reserved.
  * Project:Net
  * Author:Drake
- * Date:11/19/19 9:23 PM
+ * Date:11/20/19 10:37 PM
  */
 
-package com.drake.net
+package com.drake.net.observer
 
 import android.app.Dialog
 import android.view.View
@@ -13,7 +13,6 @@ import androidx.fragment.app.Fragment
 import androidx.fragment.app.FragmentActivity
 import androidx.lifecycle.LifecycleOwner
 import com.drake.brv.PageRefreshLayout
-import com.drake.net.observer.*
 import com.drake.statelayout.StateLayout
 import io.reactivex.Observable
 
@@ -26,12 +25,12 @@ import io.reactivex.Observable
  */
 fun <M> Observable<M>.net(
     lifecycleOwner: LifecycleOwner? = null,
-    block: (NetObserver<M>.(M) -> Unit)? = null
+    block: (NetObserver<M>.(M) -> Unit) = {}
 ) {
 
     subscribe(object : NetObserver<M>(lifecycleOwner) {
         override fun onNext(t: M) {
-            block?.invoke(this, t)
+            block(t)
         }
     })
 }
@@ -42,7 +41,7 @@ fun <M> Observable<M>.net(
  * @param stateLayout StateLayout
  * @param block (M) -> UnitUtils
  */
-fun <M> Observable<M>.state(stateLayout: StateLayout, block: StateObserver<M>.(M) -> Unit) {
+fun <M> Observable<M>.state(stateLayout: StateLayout, block: StateObserver<M>.(M) -> Unit = {}) {
     subscribe(object : StateObserver<M>(stateLayout) {
         override fun onNext(t: M) {
             block(t)
@@ -50,7 +49,7 @@ fun <M> Observable<M>.state(stateLayout: StateLayout, block: StateObserver<M>.(M
     })
 }
 
-fun <M> Observable<M>.state(view: View, block: StateObserver<M>.(M) -> Unit) {
+fun <M> Observable<M>.state(view: View, block: StateObserver<M>.(M) -> Unit = {}) {
     subscribe(object : StateObserver<M>(view) {
         override fun onNext(t: M) {
             block(t)
@@ -66,7 +65,7 @@ fun <M> Observable<M>.state(activity: FragmentActivity, block: StateObserver<M>.
     })
 }
 
-fun <M> Observable<M>.state(fragment: Fragment, block: StateObserver<M>.(M) -> Unit) {
+fun <M> Observable<M>.state(fragment: Fragment, block: StateObserver<M>.(M) -> Unit = {}) {
     subscribe(object : StateObserver<M>(fragment) {
         override fun onNext(t: M) {
             block(t)
@@ -85,11 +84,11 @@ fun <M> Observable<M>.dialog(
     activity: FragmentActivity?,
     dialog: Dialog? = null,
     cancelable: Boolean = true,
-    block: (DialogObserver<M>.(M) -> Unit)? = null
+    block: (DialogObserver<M>.(M) -> Unit) = {}
 ) {
     subscribe(object : DialogObserver<M>(activity, dialog, cancelable) {
         override fun onNext(t: M) {
-            block?.invoke(this, t)
+            block(t)
         }
     })
 }
@@ -99,11 +98,11 @@ fun <M> Observable<M>.dialog(
     fragment: Fragment,
     dialog: Dialog? = null,
     cancelable: Boolean = true,
-    block: (DialogObserver<M>.(M) -> Unit)? = null
+    block: (DialogObserver<M>.(M) -> Unit) = {}
 ) {
     subscribe(object : DialogObserver<M>(fragment, dialog, cancelable) {
         override fun onNext(t: M) {
-            block?.invoke(this, t)
+            block(t)
         }
     })
 }
@@ -118,7 +117,7 @@ fun <M> Observable<M>.dialog(
 fun <M> Observable<M>.refresh(
     pageRefreshLayout: PageRefreshLayout,
     loadMore: Boolean = false,
-    block: RefreshObserver<M>.(M) -> Unit
+    block: RefreshObserver<M>.(M) -> Unit = {}
 ) {
     subscribe(object : RefreshObserver<M>(pageRefreshLayout, loadMore) {
         override fun onNext(t: M) {
@@ -136,7 +135,7 @@ fun <M> Observable<M>.refresh(
  */
 fun <M> Observable<M>.page(
     pageRefreshLayout: PageRefreshLayout,
-    block: PageObserver<M>.(M) -> Unit
+    block: PageObserver<M>.(M) -> Unit = {}
 ) {
     subscribe(object : PageObserver<M>(pageRefreshLayout) {
         override fun onNext(t: M) {

+ 10 - 2
net/src/main/java/com/drake/net/observer/PageObserver.kt

@@ -11,7 +11,7 @@ import android.view.View
 import android.view.View.OnAttachStateChangeListener
 import com.drake.brv.BindingAdapter
 import com.drake.brv.PageRefreshLayout
-import com.drake.net.NetConfig.onPageError
+import com.drake.net.NetConfig.onStateError
 import io.reactivex.observers.DefaultObserver
 
 /**
@@ -42,7 +42,7 @@ abstract class PageObserver<M>(val page: PageRefreshLayout) : DefaultObserver<M>
      */
     override fun onError(e: Throwable) {
         page.showError()
-        onPageError.invoke(e, page)
+        onStateError.invoke(e, page)
     }
 
     override fun onComplete() {
@@ -61,4 +61,12 @@ abstract class PageObserver<M>(val page: PageRefreshLayout) : DefaultObserver<M>
     fun showEmpty() {
         page.showEmpty()
     }
+
+    fun showContent() {
+        page.showContent()
+    }
+
+    fun finish(success: Boolean = true) {
+        page.finish(success)
+    }
 }

+ 2 - 0
net/src/main/java/com/drake/net/observer/StateObserver.kt

@@ -11,6 +11,7 @@ import android.app.Activity
 import android.view.View
 import android.view.View.OnAttachStateChangeListener
 import androidx.fragment.app.Fragment
+import com.drake.net.NetConfig
 import com.drake.statelayout.StateLayout
 import com.drake.statelayout.state
 import io.reactivex.observers.DefaultObserver
@@ -59,6 +60,7 @@ abstract class StateObserver<M> : DefaultObserver<M> {
 
     override fun onError(e: Throwable) {
         stateLayout.showError()
+        NetConfig.onStateError(e, stateLayout)
     }
 
     override fun onComplete() {

+ 1 - 1
sample/src/main/java/com/drake/net/sample/MainActivity.kt

@@ -2,8 +2,8 @@ package com.drake.net.sample
 
 import android.os.Bundle
 import androidx.appcompat.app.AppCompatActivity
-import com.drake.net.dialog
 import com.drake.net.downloadImg
+import com.drake.net.observer.dialog
 
 class MainActivity : AppCompatActivity() {