使用RxKotlin和Koin的干净架构-我的逻辑放在哪里?

问题描述

我对Kotlin的Clean Architecture真的很陌生,我有一些疑问。 我按照本教程https://android.jlelse.eu/mvp-with-rxjava2-room-koin-6f9492b94500进行了学习,在很多新概念上都很清楚。

但是我不确定用例(交互器是别的名字吗?)

我正在使用Room,Retrofit,RxKotlin和Koin进行MVP开发。 我从API提取了一些数据,并且想将这些数据插入BDD后再进行处理。

UserResponseDAO.kt

@Dao
interface UserResponseDAO {

    @Insert
    fun insertUser(vararg user: UserResponse) : Completable
}

UserResponsePresenter.kt

class UserResponsePresenter(private val iUserResponseInteractor: IUserResponseInteractor): IUserResponsePresenter,viewmodel() {

    override fun insertUserResponse(userResponse: UserResponse) {
        iUserResponseInteractor.insertUserResponse(userResponse)
    }
} 

UserResponseInteractor.kt

class UserResponseInteractor(private val iUserResponseRepository: IUserResponseRepository) :
    IUserResponseInteractor {

    override fun insertUserResponse(userResponse: UserResponse) {
        iUserResponseRepository.insertUserResponse(userResponse)
    }
}

UserResponseRepository.kt

class UserResponseRepository(private val userResponseDAO: UserResponseDAO) :
    IUserResponseRepository {

    private val appUtility: AppUtility by inject()

    @SuppressLint("CheckResult")
    override fun insertUserResponse(userResponse: UserResponse) {

        userResponseDAO.insertUser(userResponse)
            .subscribeOn(Schedulers.io())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(
                {
                    when (userResponse.profilePOJO.role) {
                        Role.CLIENT -> appUtility.redirectToMainPage(MainClientPageActivity())
                        Role.TATTOOIST -> appUtility.redirectToMainPage(MainTattooistActivity())
                        else -> return@subscribe
                    }
                },{ Log.d("RxJava","Insert Error") }
            )

    }
}

AppUtility.kt

class AppUtility(var context: Context) {

    fun redirectToMainPage(activity: Activity) {
        val intent: Intent = Intent(context,activity.javaClass)
        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK
        context.startActivity(intent)
    }
}

我不知道我UserResponseRepository.kt中subscription()中的代码是否在正确的位置。考虑到我需要Context来启动新的Activity,是否以正确的方式注入它?

谢谢您的任何建议!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)