Room profile: BigImageViewerActivity now only display the image. Use the room setting to change or delete the room Avatar - fix bugs
This commit is contained in:
parent
b78dac20c0
commit
7a37db84d8
@ -63,7 +63,7 @@ abstract class FormEditableAvatarItem : EpoxyModelWithHolder<FormEditableAvatarI
|
|||||||
.apply(RequestOptions.circleCropTransform())
|
.apply(RequestOptions.circleCropTransform())
|
||||||
.into(holder.image)
|
.into(holder.image)
|
||||||
}
|
}
|
||||||
holder.delete.isVisible = imageUri != null || matrixItem?.avatarUrl != null
|
holder.delete.isVisible = enabled && (imageUri != null || matrixItem?.avatarUrl?.isNotEmpty() == true)
|
||||||
holder.delete.onClick(deleteListener?.takeIf { enabled })
|
holder.delete.onClick(deleteListener?.takeIf { enabled })
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -72,7 +72,8 @@ class RoomSettingsController @Inject constructor(
|
|||||||
RoomSettingsViewState.AvatarAction.None -> {
|
RoomSettingsViewState.AvatarAction.None -> {
|
||||||
// Use the current value
|
// Use the current value
|
||||||
avatarRenderer(avatarRenderer)
|
avatarRenderer(avatarRenderer)
|
||||||
matrixItem(roomSummary.toMatrixItem())
|
// We do not want to use the fallback avatar url, which can be the other user avatar, or the current user avatar.
|
||||||
|
matrixItem(roomSummary.toMatrixItem().copy(avatarUrl = data.currentRoomAvatarUrl))
|
||||||
}
|
}
|
||||||
RoomSettingsViewState.AvatarAction.DeleteAvatar ->
|
RoomSettingsViewState.AvatarAction.DeleteAvatar ->
|
||||||
imageUri(null)
|
imageUri(null)
|
||||||
|
@ -27,9 +27,13 @@ import im.vector.app.features.powerlevel.PowerLevelsObservableFactory
|
|||||||
import io.reactivex.Completable
|
import io.reactivex.Completable
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import org.matrix.android.sdk.api.MatrixCallback
|
import org.matrix.android.sdk.api.MatrixCallback
|
||||||
|
import org.matrix.android.sdk.api.query.QueryStringValue
|
||||||
import org.matrix.android.sdk.api.session.Session
|
import org.matrix.android.sdk.api.session.Session
|
||||||
import org.matrix.android.sdk.api.session.events.model.EventType
|
import org.matrix.android.sdk.api.session.events.model.EventType
|
||||||
|
import org.matrix.android.sdk.api.session.events.model.toModel
|
||||||
|
import org.matrix.android.sdk.api.session.room.model.RoomAvatarContent
|
||||||
import org.matrix.android.sdk.api.session.room.powerlevels.PowerLevelsHelper
|
import org.matrix.android.sdk.api.session.room.powerlevels.PowerLevelsHelper
|
||||||
|
import org.matrix.android.sdk.rx.mapOptional
|
||||||
import org.matrix.android.sdk.rx.rx
|
import org.matrix.android.sdk.rx.rx
|
||||||
import org.matrix.android.sdk.rx.unwrap
|
import org.matrix.android.sdk.rx.unwrap
|
||||||
|
|
||||||
@ -55,6 +59,7 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
|||||||
|
|
||||||
init {
|
init {
|
||||||
observeRoomSummary()
|
observeRoomSummary()
|
||||||
|
observeRoomAvatar()
|
||||||
observeState()
|
observeState()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -118,6 +123,20 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
|||||||
.disposeOnClear()
|
.disposeOnClear()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* We do not want to use the fallback avatar url, which can be the other user avatar, or the current user avatar.
|
||||||
|
*/
|
||||||
|
private fun observeRoomAvatar() {
|
||||||
|
room.rx()
|
||||||
|
.liveStateEvent(EventType.STATE_ROOM_AVATAR, QueryStringValue.NoCondition)
|
||||||
|
.mapOptional { it.content.toModel<RoomAvatarContent>() }
|
||||||
|
.unwrap()
|
||||||
|
.subscribe {
|
||||||
|
setState { copy(currentRoomAvatarUrl = it.avatarUrl) }
|
||||||
|
}
|
||||||
|
.disposeOnClear()
|
||||||
|
}
|
||||||
|
|
||||||
override fun handle(action: RoomSettingsAction) {
|
override fun handle(action: RoomSettingsAction) {
|
||||||
when (action) {
|
when (action) {
|
||||||
is RoomSettingsAction.EnableEncryption -> handleEnableEncryption()
|
is RoomSettingsAction.EnableEncryption -> handleEnableEncryption()
|
||||||
|
@ -30,6 +30,7 @@ data class RoomSettingsViewState(
|
|||||||
val historyVisibilityEvent: Event? = null,
|
val historyVisibilityEvent: Event? = null,
|
||||||
val roomSummary: Async<RoomSummary> = Uninitialized,
|
val roomSummary: Async<RoomSummary> = Uninitialized,
|
||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
|
val currentRoomAvatarUrl: String? = null,
|
||||||
val avatarAction: AvatarAction = AvatarAction.None,
|
val avatarAction: AvatarAction = AvatarAction.None,
|
||||||
val newName: String? = null,
|
val newName: String? = null,
|
||||||
val newTopic: String? = null,
|
val newTopic: String? = null,
|
||||||
|
Loading…
Reference in New Issue
Block a user