AuthenticationPresenter.kt 1.62 KB
Newer Older
1 2 3 4 5
package chat.rocket.android.authentication.presentation

import chat.rocket.android.server.domain.GetCurrentServerInteractor
import chat.rocket.android.server.domain.MultiServerTokenRepository
import chat.rocket.android.server.domain.SettingsRepository
6 7
import chat.rocket.android.server.infraestructure.ConnectionManager
import chat.rocket.android.server.infraestructure.ConnectionManagerFactory
8 9 10 11 12 13 14 15 16 17
import chat.rocket.common.model.Token
import chat.rocket.core.TokenRepository
import javax.inject.Inject

class AuthenticationPresenter @Inject constructor(private val navigator: AuthenticationNavigator,
                                                  private val getCurrentServerInteractor: GetCurrentServerInteractor,
                                                  private val multiServerRepository: MultiServerTokenRepository,
                                                  private val settingsRepository: SettingsRepository,
                                                  private val tokenRepository: TokenRepository) {

18
    fun loadCredentials(newServer: Boolean, callback: (authenticated: Boolean) -> Unit) {
19 20 21 22
        val currentServer = getCurrentServerInteractor.get()
        val serverToken = currentServer?.let { multiServerRepository.get(currentServer) }
        val settings = currentServer?.let { settingsRepository.get(currentServer) }

23
        if (newServer || currentServer == null || serverToken == null || settings == null) {
24 25 26 27 28 29 30 31
            callback(false)
        } else {
            tokenRepository.save(Token(serverToken.userId, serverToken.authToken))
            callback(true)
            navigator.toChatList()
        }
    }
}