Avoid using ActiveSessionHolder in a Fragment. Move the userId to state.personalizationState
This commit is contained in:
parent
36e5166051
commit
b5eb15c7e3
@ -641,6 +641,7 @@ class OnboardingViewModel @AssistedInject constructor(
|
||||
val homeServerCapabilities = session.homeServerCapabilitiesService().getHomeServerCapabilities()
|
||||
val capabilityOverrides = vectorOverrides.forceHomeserverCapabilities?.firstOrNull()
|
||||
state.personalizationState.copy(
|
||||
userId = session.myUserId,
|
||||
displayName = state.registrationState.selectedMatrixId?.let { MatrixPatterns.extractUserNameFromId(it) },
|
||||
supportsChangingDisplayName = capabilityOverrides?.canChangeDisplayName ?: homeServerCapabilities.canChangeDisplayName,
|
||||
supportsChangingProfilePicture = capabilityOverrides?.canChangeAvatar ?: homeServerCapabilities.canChangeAvatar
|
||||
|
@ -78,10 +78,11 @@ data class SelectedHomeserverState(
|
||||
|
||||
@Parcelize
|
||||
data class PersonalizationState(
|
||||
val userId: String = "",
|
||||
val supportsChangingDisplayName: Boolean = false,
|
||||
val supportsChangingProfilePicture: Boolean = false,
|
||||
val displayName: String? = null,
|
||||
val selectedPictureUri: Uri? = null
|
||||
val selectedPictureUri: Uri? = null,
|
||||
) : Parcelable {
|
||||
|
||||
fun supportsPersonalization() = supportsChangingDisplayName || supportsChangingProfilePicture
|
||||
|
@ -26,7 +26,6 @@ import androidx.core.view.isInvisible
|
||||
import com.airbnb.mvrx.withState
|
||||
import dagger.hilt.android.AndroidEntryPoint
|
||||
import im.vector.app.R
|
||||
import im.vector.app.core.di.ActiveSessionHolder
|
||||
import im.vector.app.core.dialogs.GalleryOrCameraDialogHelper
|
||||
import im.vector.app.core.dialogs.GalleryOrCameraDialogHelperFactory
|
||||
import im.vector.app.databinding.FragmentFtueProfilePictureBinding
|
||||
@ -42,7 +41,6 @@ class FtueAuthChooseProfilePictureFragment :
|
||||
AbstractFtueAuthFragment<FragmentFtueProfilePictureBinding>(),
|
||||
GalleryOrCameraDialogHelper.Listener {
|
||||
|
||||
@Inject lateinit var activeSessionHolder: ActiveSessionHolder
|
||||
@Inject lateinit var galleryOrCameraDialogHelperFactory: GalleryOrCameraDialogHelperFactory
|
||||
@Inject lateinit var avatarRenderer: AvatarRenderer
|
||||
|
||||
@ -85,10 +83,9 @@ class FtueAuthChooseProfilePictureFragment :
|
||||
views.profilePictureSubmit.isEnabled = hasSetPicture
|
||||
views.changeProfilePictureIcon.setImageResource(if (hasSetPicture) R.drawable.ic_edit else R.drawable.ic_camera_plain)
|
||||
|
||||
val session = activeSessionHolder.getActiveSession()
|
||||
val matrixItem = MatrixItem.UserItem(
|
||||
id = session.myUserId,
|
||||
displayName = state.personalizationState.displayName ?: ""
|
||||
id = state.personalizationState.userId,
|
||||
displayName = state.personalizationState.displayName.orEmpty()
|
||||
)
|
||||
avatarRenderer.render(matrixItem, localUri = state.personalizationState.selectedPictureUri, imageView = views.profilePictureView)
|
||||
}
|
||||
|
@ -687,7 +687,7 @@ class OnboardingViewModelTest {
|
||||
.assertStatesChanges(
|
||||
initialState,
|
||||
{ copy(isLoading = true) },
|
||||
{ copy(isLoading = false, personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState(A_USERNAME)) }
|
||||
{ copy(isLoading = false, personalizationState = A_HOMESERVER_CAPABILITIES.toPersonalisationState(A_MATRIX_ID, A_USERNAME)) }
|
||||
)
|
||||
.assertEvents(OnboardingViewEvents.OnAccountCreated)
|
||||
.finish()
|
||||
@ -1196,7 +1196,8 @@ class OnboardingViewModelTest {
|
||||
}
|
||||
}
|
||||
|
||||
private fun HomeServerCapabilities.toPersonalisationState(displayName: String? = null) = PersonalizationState(
|
||||
private fun HomeServerCapabilities.toPersonalisationState(userId: String, displayName: String? = null) = PersonalizationState(
|
||||
userId = userId,
|
||||
supportsChangingDisplayName = canChangeDisplayName,
|
||||
supportsChangingProfilePicture = canChangeAvatar,
|
||||
displayName = displayName,
|
||||
|
Loading…
x
Reference in New Issue
Block a user