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||code == 505||code == 401){//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||code == 505||code == 401){//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){_,_->}
|
}
|