lmw
2024-07-09 b13afc751dbbce24753d008f1f87d2c5e133a4ad
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package com.dollearn.student.network
 
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.data.ResultData
import cn.sinata.xldutils.defaultScheduler
import cn.sinata.xldutils.fragment.BaseFragment
import cn.sinata.xldutils.rxutils.ResultDataSubscriber
import cn.sinata.xldutils.utils.SPUtils
import com.dollearn.student.DollearnApplication
import com.dollearn.student.ui.login.LoginActivity
import com.dollearn.student.utils.Const
import io.reactivex.Flowable
import org.jetbrains.anko.startActivity
import org.jetbrains.anko.support.v4.startActivity
 
/**
 * Created on 2018/4/12.
 */
 
inline fun <reified O, I : ResultData<O>> Flowable<I>.request(activity: BaseActivity, showToast: Boolean = true, crossinline success: (msg:String?, t: O?) -> Unit, crossinline error : (code: Int, msg: String) -> Unit) {
    this.defaultScheduler().subscribe(object : ResultDataSubscriber<O>(activity){
        override fun onSuccess(msg: String?, data: O?) {
            success(msg,data)
            activity.dismissDialog()
        }
        override fun isShowToast() = showToast
 
        override fun onError(code: Int, msg: String) {
            if (code == 700||code == 600){//token无效
                error(code,"登录已失效")
                SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).apply()
                (activity.application as DollearnApplication).exit()
                activity.startActivity<LoginActivity>()
            }else{
                super.onError(code, msg)
                error(code,msg)
            }
            activity.dismissDialog()
        }
    })
}
inline fun <reified O, I : ResultData<O>> Flowable<I>.request(activity: BaseActivity, showToast: Boolean = true, crossinline success: (msg:String?, t: O?) -> Unit) {
    request(activity,showToast,success){_,_->}
}
 
inline fun <reified O, I : ResultData<O>> Flowable<I>.requestByF(fragment: BaseFragment, showToast: Boolean = true, crossinline success: (msg:String?, t: O?) -> Unit, crossinline error : (code: Int, msg: String) -> Unit) {
    this.defaultScheduler().subscribe(object : ResultDataSubscriber<O>(fragment){
        override fun onSuccess(msg: String?, data: O?) {
            fragment.dismissDialog()
            success(msg,data)
        }
        override fun isShowToast() = showToast
 
        override fun onError(code: Int, msg: String) {
            if (code == 700||code == 600){//token无效
                error(code,"登录已失效")
                SPUtils.instance().remove(Const.User.TOKEN).remove(Const.User.USER_ID).apply()
                (fragment.activity!!.application as DollearnApplication).exit()
                fragment.startActivity<LoginActivity>()
            }else{
                super.onError(code, msg)
                error(code,msg)
            }
            fragment.dismissDialog()
        }
    })
}
inline fun <reified O, I : ResultData<O>> Flowable<I>.requestByF(fragment: BaseFragment, showToast: Boolean = true, crossinline success: (msg:String?, t: O?) -> Unit) {
    requestByF(fragment,showToast,success){_,_->}
}