这有意义吗? assetRepoImpl首先检查数据库,然后分配currentUser,然后检查服务器(如果适用),并在观察者上更新currentUser。我需要访问AssetRepo中的currentUser才能获取资产。所以我想看看这是最好的方法还是正确的方法?
class AssetRepositoryImpl(private val assetDao: AssetDao,
private val assetAPIDataSource: AssetAPIDataSource,
userAPIDataSource: UserAPIDataSource,
userDao: UserDao
) : AssetRepository {
private lateinit var currentUser: User
init {
//Check the database first
userDao.getCurrentUserLiveData().observeOnce {
println("ObserverOnce In AssetRepo Impl ${it.token}")
currentUser = it
}
//When there is an update then update here
userAPIDataSource.downloadedCurrentUser.observeForever {
currentUser = createUser(it)
}
assetAPIDataSource.downloadedCurrentAssets.observeForever { newCurrentAssets ->
persistFetchedCurrentAssets(newCurrentAssets)
}
}
我应该注意它确实可以正常工作(更正)(实际上不起作用,如果您删除数据库,它会崩溃:(因此,答案不正确。希望有人提出建议)。但是,仅仅因为某些工作并不总是意味着是的,是的,我知道有很多东西需要适当的理解。希望大多数人能够理解我要做什么。本质上,我需要一种在资产回购中访问用户的方法。>