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