Skip to content

Commit 488ac5b

Browse files
author
catch-pig
committed
调整网络请求的error到Flow的catch中
1 parent 134251c commit 488ac5b

File tree

14 files changed

+60
-58
lines changed

14 files changed

+60
-58
lines changed

app/src/main/java/com/catchpig/kmvvm/mvvm/child/ChildActivity.kt

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,6 @@ import com.catchpig.kmvvm.R
99
import com.catchpig.kmvvm.databinding.ActivityChildBinding
1010
import com.catchpig.mvvm.base.activity.BaseVMActivity
1111
import com.catchpig.mvvm.manager.SnackbarManager
12-
import kotlinx.coroutines.delay
13-
import kotlinx.coroutines.flow.flowOf
14-
import kotlinx.coroutines.flow.map
15-
import kotlinx.coroutines.runBlocking
1612

1713
@Title
1814
@StatusBar
@@ -45,11 +41,8 @@ class ChildActivity : BaseVMActivity<ActivityChildBinding, ChildViewModel>() {
4541
* dialog形式的loading
4642
*/
4743
fun loadingDialog(v: View) {
48-
launcherLoadingDialog(viewModel.loadingDialog().map {
49-
delay(2000)
50-
it
51-
}) {
52-
snackbar(this)
44+
launcherLoadingDialog(viewModel.loadingDialog()) {
45+
snackBar(this)
5346
}
5447

5548
}
@@ -58,11 +51,8 @@ class ChildActivity : BaseVMActivity<ActivityChildBinding, ChildViewModel>() {
5851
* 标题栏以下的loading
5952
*/
6053
fun loadingView(v: View) {
61-
launcherLoadingView(viewModel.loadingView().map {
62-
delay(2000)
63-
it
64-
}) {
65-
snackbar(this)
54+
launcherLoadingView(viewModel.loadingView()) {
55+
snackBar(this)
6656
}
6757
}
6858
}
Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,24 @@
11
package com.catchpig.kmvvm.mvvm.child
22

33
import com.catchpig.mvvm.base.viewmodel.BaseViewModel
4+
import kotlinx.coroutines.delay
45
import kotlinx.coroutines.flow.Flow
56
import kotlinx.coroutines.flow.flowOf
7+
import kotlinx.coroutines.flow.map
68

79
class ChildViewModel : BaseViewModel() {
810

911
fun loadingView(): Flow<String> {
10-
return flowOf("loadingView")
12+
return flowOf("loadingView").map {
13+
delay(2000)
14+
it
15+
}
1116
}
1217

1318
fun loadingDialog(): Flow<String> {
14-
return flowOf("loadingDialog")
19+
return flowOf("loadingDialog").map {
20+
delay(2000)
21+
it
22+
}
1523
}
1624
}

app/src/main/java/com/catchpig/kmvvm/mvvm/recycle/RecycleActivity.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@ import com.catchpig.mvvm.base.activity.BaseActivity
1212
import com.gyf.immersionbar.ktx.immersionBar
1313
import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers
1414
import io.reactivex.rxjava3.core.Flowable
15-
import io.reactivex.rxjava3.functions.Consumer
1615
import java.util.*
1716
import java.util.concurrent.TimeUnit
1817
import kotlin.collections.ArrayList
@@ -30,7 +29,7 @@ class RecycleActivity : BaseActivity<ActivityRecycleBinding>() {
3029
private fun initAdapter() {
3130
var userAdapter = UserAdapter(bodyBinding.refresh)
3231
userAdapter.setOnItemClickListener { _, m, _ ->
33-
snackbar(m.name)
32+
snackBar(m.name)
3433
}
3534
var linearLayoutManager = LinearLayoutManager(this)
3635
linearLayoutManager.orientation = LinearLayoutManager.VERTICAL

app/src/main/java/com/catchpig/kmvvm/mvvm/transparent/TransparentActivity.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,12 @@ class TransparentActivity : BaseVMActivity<ActivityTransparentBinding, Transpare
2020
viewModel.banner().flowOn(Dispatchers.IO).onStart {
2121
loadingView()
2222
}.catch { t: Throwable ->
23-
snackbar(t.message!!)
23+
snackBar(t.message!!)
2424
}.onCompletion {
2525
hideLoadingView()
2626
}.collect {
2727
Glide.with(this@TransparentActivity).load(it.imagePath).into(bodyBinding.banner)
28-
snackbar(it.title)
28+
snackBar(it.title)
2929
}
3030
}
3131
}
Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,24 @@
11
package com.catchpig.kmvvm.network
22

33
import com.catchpig.annotation.ObserverError
4-
import com.catchpig.mvvm.base.viewmodel.IBaseViewModel
4+
import com.catchpig.mvvm.base.activity.BaseActivity
5+
import com.catchpig.mvvm.base.fragment.BaseFragment
56
import com.catchpig.mvvm.interfaces.IObserverError
67

78
@ObserverError
89
class MessageObserverError : IObserverError {
9-
override fun onError(iBaseViewModel: IBaseViewModel, t: Throwable) {
10-
10+
override fun onError(any: Any, t: Throwable) {
11+
t.message?.let {
12+
when (any) {
13+
is BaseActivity<*> -> {
14+
any.snackBar(it)
15+
}
16+
is BaseFragment<*> -> {
17+
any.snackBar(it)
18+
}
19+
else -> {
20+
}
21+
}
22+
}
1123
}
1224
}
Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package com.catchpig.kmvvm.network
22

33
import com.catchpig.annotation.ObserverError
4-
import com.catchpig.mvvm.base.viewmodel.IBaseViewModel
4+
import com.catchpig.mvvm.base.activity.BaseActivity
5+
import com.catchpig.mvvm.base.fragment.BaseFragment
56
import com.catchpig.mvvm.interfaces.IObserverError
67

78
@ObserverError
89
class TokenObserverError : IObserverError {
9-
override fun onError(iBaseViewModel: IBaseViewModel, t: Throwable) {
10+
override fun onError(any: Any, t: Throwable) {
11+
12+
1013
}
1114
}

compiler/src/main/java/com/catchpig/compiler/KotlinMvvmProcessor.kt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,6 @@ class KotlinMvvmProcessor : BaseProcessor() {
3030
private val CLASS_NAME_LIST_OF_I_OBSERVER_ERROR =
3131
CLASS_NAME_LIST.parameterizedBy(CLASS_NAME_I_OBSERVER_ERROR)
3232
private val CLASS_NAME_MAP = ClassName("kotlin.collections", "HashMap")
33-
private val CLASS_NAME_I_BASE_VIEW_MODEL =
34-
ClassName("com.catchpig.mvvm.base.viewmodel", "IBaseViewModel")
3533
private val CLASS_NAME_SERVICE_PARAM =
3634
ClassName("com.catchpig.mvvm.entity", "ServiceParam")
3735
private val CLASS_NAME_INTERCEPTOR =
@@ -175,10 +173,10 @@ class KotlinMvvmProcessor : BaseProcessor() {
175173
var funSpecBuilder = FunSpec
176174
.builder("onError")
177175
.addModifiers(KModifier.PUBLIC, KModifier.OVERRIDE)
178-
.addParameter("iBaseViewModel", CLASS_NAME_I_BASE_VIEW_MODEL)
176+
.addParameter("any", ANY)
179177
.addParameter("t", Throwable::class)
180178
.addStatement("observerErrors.forEach {")
181-
.addStatement(" it.onError(iBaseViewModel, t)")
179+
.addStatement(" it.onError(any, t)")
182180
.addStatement("}")
183181
return funSpecBuilder.build()
184182
}

mvvm/src/main/java/com/catchpig/mvvm/apt/KotlinMvvmCompiler.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@ import android.view.ViewGroup
55
import com.catchpig.mvvm.apt.interfaces.ActivityCompiler
66
import com.catchpig.mvvm.apt.interfaces.GlobalCompiler
77
import com.catchpig.mvvm.apt.interfaces.RecyclerAdapterCompiler
8+
import com.catchpig.mvvm.base.activity.BaseActivity
89
import com.catchpig.mvvm.base.adapter.RecyclerAdapter
9-
import com.catchpig.mvvm.base.viewmodel.BaseViewModel
1010
import com.catchpig.mvvm.entity.AdapterBinding
1111
import com.catchpig.mvvm.entity.ServiceParam
1212
import com.catchpig.mvvm.exception.AptAdapterException
@@ -23,6 +23,7 @@ object KotlinMvvmCompiler {
2323
var compilerClass = Class.forName("com.catchpig.mvvm.apt.interfaces.Global_Compiler")
2424
compilerClass.newInstance() as GlobalCompiler
2525
}
26+
2627
fun inject(baseActivity: Activity) {
2728
val className = baseActivity.javaClass.name
2829
try {
@@ -36,8 +37,8 @@ object KotlinMvvmCompiler {
3637
}
3738
}
3839

39-
fun onError(baseViewModel: BaseViewModel, t: Throwable) {
40-
globalCompiler.onError(baseViewModel, t)
40+
fun onError(any: Any, t: Throwable) {
41+
globalCompiler.onError(any, t)
4142
}
4243

4344
fun viewBanding(recyclerAdapter: RecyclerAdapter<*, *>, parent: ViewGroup): AdapterBinding {
@@ -59,7 +60,7 @@ object KotlinMvvmCompiler {
5960
return globalCompiler.getGlobalConfig()
6061
}
6162

62-
fun getServiceParam(className:String):ServiceParam{
63+
fun getServiceParam(className: String): ServiceParam {
6364
return globalCompiler.getServiceParam(className)
6465
}
6566
}

mvvm/src/main/java/com/catchpig/mvvm/apt/interfaces/GlobalCompiler.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package com.catchpig.mvvm.apt.interfaces
22

3-
import com.catchpig.mvvm.base.viewmodel.IBaseViewModel
3+
import android.app.Activity
44
import com.catchpig.mvvm.entity.ServiceParam
55
import com.catchpig.mvvm.interfaces.IGlobalConfig
66

@@ -18,10 +18,10 @@ interface GlobalCompiler {
1818

1919
/**
2020
* 发送Rxjava的异常到被注解ObserverError修饰的接口实现类
21-
* @param iBaseViewModel IBaseViewModel
21+
* @param any Any
2222
* @param t Throwable
2323
*/
24-
fun onError(iBaseViewModel: IBaseViewModel, t: Throwable)
24+
fun onError(any: Any, t: Throwable)
2525

2626
fun getServiceParam(className: String): ServiceParam
2727
}

mvvm/src/main/java/com/catchpig/mvvm/base/activity/BaseActivity.kt

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,6 @@ open class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
8888
ViewGroup.LayoutParams.MATCH_PARENT
8989
)
9090
)
91-
// loadingViewController = LoadingViewController(this, rootBinding)
9291
}
9392
}
9493

@@ -108,11 +107,11 @@ open class BaseActivity<VB : ViewBinding> : AppCompatActivity() {
108107
titleText.setText(title)
109108
}
110109

111-
protected fun snackbar(text: CharSequence) {
110+
fun snackBar(text: CharSequence) {
112111
SnackbarManager.show(rootBinding.layoutBody, text)
113112
}
114113

115-
protected fun snackbar(@StringRes textRes: Int) {
114+
fun snackBar(@StringRes textRes: Int) {
116115
SnackbarManager.show(rootBinding.layoutBody, textRes)
117116
}
118117

0 commit comments

Comments
 (0)