From cee5ea03aeaa28a9c999a40f44ac2601d8bb7fb4 Mon Sep 17 00:00:00 2001 From: Maxime Naturel Date: Thu, 17 Feb 2022 16:42:24 +0100 Subject: [PATCH] Retrieve session in init method differently --- .../app/features/login/LoginWebFragment.kt | 1 + .../app/features/login2/LoginWebFragment2.kt | 1 + .../ftueauth/FtueAuthWebFragment.kt | 1 + .../signout/soft/SoftLogoutViewModel.kt | 29 ++++++++++++------- 4 files changed, 22 insertions(+), 10 deletions(-) diff --git a/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt b/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt index ca21e96d20..fc3392df09 100644 --- a/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt +++ b/vector/src/main/java/im/vector/app/features/login/LoginWebFragment.kt @@ -51,6 +51,7 @@ class LoginWebFragment @Inject constructor( private val assetReader: AssetReader ) : AbstractLoginFragment() { + // TODO confirm the need of this viewModel val softLogoutViewModel: SoftLogoutViewModel by activityViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginWebBinding { diff --git a/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt b/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt index ebe59ee1b9..6996cb552a 100644 --- a/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt +++ b/vector/src/main/java/im/vector/app/features/login2/LoginWebFragment2.kt @@ -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 diff --git a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt index 879830a1c0..b1f6de9d49 100644 --- a/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt +++ b/vector/src/main/java/im/vector/app/features/onboarding/ftueauth/FtueAuthWebFragment.kt @@ -56,6 +56,7 @@ class FtueAuthWebFragment @Inject constructor( private val assetReader: AssetReader ) : AbstractFtueAuthFragment() { + // TODO confirm the need of this viewModel val softLogoutViewModel: SoftLogoutViewModel by activityViewModel() override fun getBinding(inflater: LayoutInflater, container: ViewGroup?): FragmentLoginWebBinding { diff --git a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt index 52986a1f3b..84b443a60f 100644 --- a/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt +++ b/vector/src/main/java/im/vector/app/features/signout/soft/SoftLogoutViewModel.kt @@ -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 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 + } } }