Skip to content

sun-MooN778/WanAndroid

Repository files navigation

🥑 WanAndroid基础款(MVVM+Kotlin+Jetpack+组件化)

首页 项目 导航
登录 个人 收藏

🍓 项目介绍

项目采用组件化,架构如下:

- - app
module
- -
用户
kb_user
module
首页
kb_home
module
项目
kb_project
module
导航
kb_navigation
module
个人
kb_me
module
- - 公共
kb_common
module
- -

BaseViewModel.kt

typealias vmBLOCK = suspend () -> Unit
open class BaseViewModel : ViewModel() {

    protected fun launch(block: vmBLOCK) {
        viewModelScope.launch {
            try {
                block.invoke()
            } catch (e: Exception) {
                onError(e)
            }
        }
    }
    
    private fun onError(e: Exception) {
        Log.d("onError", "onError: $e")
    }
}

BaseRepository.kt

open class BaseRepository {
    suspend fun <T> dealResp(
        block: suspend () -> BaseResp<T>,liveData: RespStateData<T>,) {

        var result = BaseResp<T>()
        result.responseState = BaseResp.ResponseState.REQUEST_START
        liveData.value = result

        try {
            result = block.invoke()
            when (result.errorCode) {
                Constants.HTTP_SUCCESS -> {
                    result.responseState = BaseResp.ResponseState.REQUEST_SUCCESS
                }
                Constants.HTTP_AUTH_INVALID -> {
                    result.responseState = BaseResp.ResponseState.REQUEST_FAILED
                    ToastUtil.showMsg("认证过期,请重新登录!")
                    ARouter.getInstance().build(Constants.PATH_LOGIN).navigation()
                }
                else -> {
                    result.responseState = BaseResp.ResponseState.REQUEST_FAILED
                    ToastUtil.showMsg("code:" + result.errorCode.toString() + " / msg:" + result.errorMsg)
                }
            }

        } catch (e: Exception) {
            when (e) {
                is UnknownHostException,
                is HttpException,
                is ConnectException,
                -> {
                    //网络error
                    ToastUtil.showMsg("网络错误!")
                }
                else -> {
                    ToastUtil.showMsg("未知错误!")
                }
            }
            result.responseState = BaseResp.ResponseState.REQUEST_ERROR
        } finally {
            liveData.value = result
        }
    }
}

About

玩安卓组件化项目

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages