在另一个仓库中调用currentUser

时间:2019-04-03 01:37:27

标签: android mvvm observable

这有意义吗? 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)
        }
    }

我应该注意它确实可以正常工作(更正)(实际上不起作用,如果您删除数据库,它会崩溃:(因此,答案不正确。希望有人提出建议)。但是,仅仅因为某些工作并不总是意味着是的,是的,我知道有很多东西需要适当的理解。希望大多数人能够理解我要做什么。本质上,我需要一种在资产回购中访问用户的方法。

0 个答案:

没有答案