Retrieve session in init method differently

This commit is contained in:
Maxime Naturel 2022-02-17 16:42:24 +01:00
parent 3ad7701ad7
commit cee5ea03ae
4 changed files with 22 additions and 10 deletions

View File

@ -51,6 +51,7 @@ class LoginWebFragment @Inject constructor(
private val assetReader: AssetReader
) : AbstractLoginFragment<FragmentLoginWebBinding>() {
// TODO confirm the need of this viewModel
val softLogoutViewModel: SoftLogoutViewModel by activityViewModel()
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginWebBinding {

View File

@ -56,6 +56,7 @@ class LoginWebFragment2 @Inject constructor(
return FragmentLoginWebBinding.inflate(inflater, container, false)
}
// TODO confirm the need of this viewModel
val softLogoutViewModel: SoftLogoutViewModel by activityViewModel()
private var isWebViewLoaded = false

View File

@ -56,6 +56,7 @@ class FtueAuthWebFragment @Inject constructor(
private val assetReader: AssetReader
) : AbstractFtueAuthFragment<FragmentLoginWebBinding>() {
// TODO confirm the need of this viewModel
val softLogoutViewModel: SoftLogoutViewModel by activityViewModel()
override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginWebBinding {

View File

@ -16,7 +16,6 @@
package im.vector.app.features.signout.soft
import com.airbnb.mvrx.ActivityViewModelContext
import com.airbnb.mvrx.Fail
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.MavericksViewModelFactory
@ -26,8 +25,10 @@ import com.airbnb.mvrx.ViewModelContext
import dagger.assisted.Assisted
import dagger.assisted.AssistedFactory
import dagger.assisted.AssistedInject
import dagger.hilt.EntryPoints
import im.vector.app.core.di.ActiveSessionHolder
import im.vector.app.core.di.MavericksAssistedViewModelFactory
import im.vector.app.core.di.SingletonEntryPoint
import im.vector.app.core.di.hiltMavericksViewModelFactory
import im.vector.app.core.extensions.hasUnsavedKeys
import im.vector.app.core.platform.VectorViewModel
@ -56,15 +57,23 @@ class SoftLogoutViewModel @AssistedInject constructor(
companion object : MavericksViewModelFactory<SoftLogoutViewModel, SoftLogoutViewState> by hiltMavericksViewModelFactory() {
override fun initialState(viewModelContext: ViewModelContext): SoftLogoutViewState? {
val activity: SoftLogoutActivity = (viewModelContext as ActivityViewModelContext).activity()
val userId = activity.session.myUserId
return SoftLogoutViewState(
homeServerUrl = activity.session.sessionParams.homeServerUrl,
userId = userId,
deviceId = activity.session.sessionParams.deviceId ?: "",
userDisplayName = activity.session.getUser(userId)?.displayName ?: userId,
hasUnsavedKeys = activity.session.hasUnsavedKeys()
)
val sessionHolder = EntryPoints.get(viewModelContext.app(), SingletonEntryPoint::class.java)
.activeSessionHolder()
return if (sessionHolder.hasActiveSession()) {
val session = sessionHolder.getActiveSession()
val userId = session.myUserId
SoftLogoutViewState(
homeServerUrl = session.sessionParams.homeServerUrl,
userId = userId,
deviceId = session.sessionParams.deviceId.orEmpty(),
userDisplayName = session.getUser(userId)?.displayName ?: userId,
hasUnsavedKeys = session.hasUnsavedKeys()
)
} else {
null
}
}
}