вызов currentUser внутри другого репо - PullRequest
0 голосов
/ 03 апреля 2019

Имеет ли это смысл?AssetRepoImpl сначала проверяет базу данных и назначает currentUser, затем проверяет сервер (при необходимости) и обновляет currentUser на наблюдателе.Мне нужен доступ к currentUser внутри AssetRepo, чтобы получить активы.Так что я смотрю, чтобы увидеть, если это лучший путь / правильный путь?

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)
        }
    }

Я должен отметить, что это работает, исправление (на самом деле это не так, если вы удаляете базу данных, она дает сбой :(Так что не правильный ответ. Надеюсь, у кого-то есть какое-то предложение). Однако то, что что-то работает, не всегда означает, что это правильно, и да, я знаю, что для правильного понимания многое не хватает. Надеюсь, большинство сможет понять, кто япытаюсь сделать. По сути, мне нужен способ доступа к пользователю внутри хранилища активов.

...