Remove room avatar item from room settings.
This commit is contained in:
parent
ef1ae4105b
commit
8787f5d920
@ -18,12 +18,10 @@ package im.vector.riotx.features.roomprofile.settings
|
||||
|
||||
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibility
|
||||
import im.vector.riotx.core.platform.VectorViewModelAction
|
||||
import im.vector.riotx.multipicker.entity.MultiPickerImageType
|
||||
|
||||
sealed class RoomSettingsAction : VectorViewModelAction {
|
||||
data class SetRoomName(val newName: String) : RoomSettingsAction()
|
||||
data class SetRoomTopic(val newTopic: String) : RoomSettingsAction()
|
||||
data class SetRoomAvatar(val image: MultiPickerImageType) : RoomSettingsAction()
|
||||
data class SetRoomHistoryVisibility(val visibility: RoomHistoryVisibility) : RoomSettingsAction()
|
||||
data class SetRoomAlias(val alias: String) : RoomSettingsAction()
|
||||
object EnableEncryption : RoomSettingsAction()
|
||||
|
@ -21,19 +21,16 @@ import im.vector.matrix.android.api.session.events.model.Event
|
||||
import im.vector.matrix.android.api.session.events.model.toModel
|
||||
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibility
|
||||
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibilityContent
|
||||
import im.vector.matrix.android.api.util.toMatrixItem
|
||||
import im.vector.riotx.R
|
||||
import im.vector.riotx.core.epoxy.profiles.buildProfileAction
|
||||
import im.vector.riotx.core.epoxy.profiles.buildProfileSection
|
||||
import im.vector.riotx.core.resources.ColorProvider
|
||||
import im.vector.riotx.core.resources.StringProvider
|
||||
import im.vector.riotx.features.form.formEditTextItem
|
||||
import im.vector.riotx.features.home.AvatarRenderer
|
||||
import javax.inject.Inject
|
||||
|
||||
// TODO Add other feature here (waiting for design)
|
||||
class RoomSettingsController @Inject constructor(
|
||||
private val avatarRenderer: AvatarRenderer,
|
||||
private val stringProvider: StringProvider,
|
||||
colorProvider: ColorProvider
|
||||
) : TypedEpoxyController<RoomSettingsViewState>() {
|
||||
@ -42,7 +39,6 @@ class RoomSettingsController @Inject constructor(
|
||||
fun onEnableEncryptionClicked()
|
||||
fun onNameChanged(name: String)
|
||||
fun onTopicChanged(topic: String)
|
||||
fun onPhotoClicked()
|
||||
fun onHistoryVisibilityClicked()
|
||||
fun onAliasChanged(alias: String)
|
||||
}
|
||||
@ -108,18 +104,6 @@ class RoomSettingsController @Inject constructor(
|
||||
action = { callback?.onHistoryVisibilityClicked() }
|
||||
)
|
||||
|
||||
buildProfileAction(
|
||||
id = "photo",
|
||||
title = stringProvider.getString(R.string.room_settings_room_photo),
|
||||
subtitle = "",
|
||||
dividerColor = dividerColor,
|
||||
divider = true,
|
||||
editable = data.actionPermissions.canChangeAvatar,
|
||||
accessoryMatrixItem = roomSummary.toMatrixItem(),
|
||||
avatarRenderer = avatarRenderer,
|
||||
action = { callback?.onPhotoClicked() }
|
||||
)
|
||||
|
||||
if (roomSummary.isEncrypted) {
|
||||
buildProfileAction(
|
||||
id = "encryption",
|
||||
|
@ -16,8 +16,6 @@
|
||||
|
||||
package im.vector.riotx.features.roomprofile.settings
|
||||
|
||||
import android.app.Activity
|
||||
import android.content.Intent
|
||||
import android.os.Bundle
|
||||
import android.view.Menu
|
||||
import android.view.MenuItem
|
||||
@ -40,8 +38,6 @@ import im.vector.riotx.core.resources.StringProvider
|
||||
import im.vector.riotx.core.utils.toast
|
||||
import im.vector.riotx.features.home.AvatarRenderer
|
||||
import im.vector.riotx.features.roomprofile.RoomProfileArgs
|
||||
import im.vector.riotx.multipicker.MultiPicker
|
||||
import im.vector.riotx.multipicker.entity.MultiPickerImageType
|
||||
import kotlinx.android.synthetic.main.fragment_room_setting_generic.*
|
||||
import kotlinx.android.synthetic.main.merge_overlay_waiting_view.*
|
||||
import javax.inject.Inject
|
||||
@ -134,30 +130,6 @@ class RoomSettingsFragment @Inject constructor(
|
||||
viewModel.handle(RoomSettingsAction.SetRoomTopic(topic))
|
||||
}
|
||||
|
||||
override fun onPhotoClicked() {
|
||||
MultiPicker.get(MultiPicker.IMAGE).single().startWith(this)
|
||||
}
|
||||
|
||||
private fun onRoomPhotoSelected(selectedImage: MultiPickerImageType) {
|
||||
viewModel.handle(RoomSettingsAction.SetRoomAvatar(selectedImage))
|
||||
}
|
||||
|
||||
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
|
||||
if (resultCode == Activity.RESULT_OK) {
|
||||
when (requestCode) {
|
||||
MultiPicker.REQUEST_CODE_PICK_IMAGE -> {
|
||||
MultiPicker
|
||||
.get(MultiPicker.IMAGE)
|
||||
.getSelectedFiles(requireContext(), requestCode, resultCode, data)
|
||||
.firstOrNull()?.let {
|
||||
onRoomPhotoSelected(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
super.onActivityResult(requestCode, resultCode, data)
|
||||
}
|
||||
|
||||
override fun onHistoryVisibilityClicked() = withState(viewModel) { state ->
|
||||
val historyVisibilities = arrayOf(
|
||||
RoomHistoryVisibility.SHARED,
|
||||
|
@ -32,7 +32,6 @@ import im.vector.riotx.features.powerlevel.PowerLevelsObservableFactory
|
||||
import io.reactivex.Completable
|
||||
import io.reactivex.Observable
|
||||
import java.util.Locale
|
||||
import java.util.UUID
|
||||
|
||||
class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState: RoomSettingsViewState,
|
||||
private val session: Session)
|
||||
@ -79,7 +78,6 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
||||
canChangeName = powerLevelsHelper.isUserAbleToChangeRoomName(session.myUserId),
|
||||
canChangeTopic = powerLevelsHelper.isUserAbleToChangeRoomTopic(session.myUserId),
|
||||
canChangeCanonicalAlias = powerLevelsHelper.isUserAbleToChangeRoomCanonicalAlias(session.myUserId),
|
||||
canChangeAvatar = powerLevelsHelper.isUserAbleToChangeRoomAvatar(session.myUserId),
|
||||
canChangeHistoryReadability = powerLevelsHelper.isUserAbleToChangeRoomHistoryReadability(session.myUserId)
|
||||
)
|
||||
setState { copy(actionPermissions = permissions) }
|
||||
@ -97,10 +95,6 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
||||
setState { copy(newTopic = action.newTopic) }
|
||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||
}
|
||||
is RoomSettingsAction.SetRoomAvatar -> {
|
||||
setState { copy(newAvatar = action.image) }
|
||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||
}
|
||||
is RoomSettingsAction.SetRoomHistoryVisibility -> {
|
||||
setState { copy(newHistoryVisibility = action.visibility) }
|
||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||
@ -118,8 +112,7 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
||||
return summary?.displayName != state.newName ||
|
||||
summary?.topic != state.newTopic ||
|
||||
summary?.canonicalAlias != state.newAlias ||
|
||||
state.newHistoryVisibility != null ||
|
||||
state.newAvatar != null
|
||||
state.newHistoryVisibility != null
|
||||
}
|
||||
|
||||
private fun saveSettings() = withState { state ->
|
||||
@ -144,17 +137,13 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
||||
operationList.add(room.rx().updateHistoryReadability(state.newHistoryVisibility.name.toLowerCase(Locale.ROOT)))
|
||||
}
|
||||
|
||||
if (state.newAvatar != null) {
|
||||
operationList.add(room.rx().updateAvatar(state.newAvatar.contentUri, state.newAvatar.displayName ?: UUID.randomUUID().toString()))
|
||||
}
|
||||
|
||||
Observable
|
||||
.fromIterable(operationList)
|
||||
.flatMapCompletable { it }
|
||||
.subscribe(
|
||||
{
|
||||
postLoading(false)
|
||||
setState { copy(newAvatar = null, newHistoryVisibility = null) }
|
||||
setState { copy(newHistoryVisibility = null) }
|
||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||
_viewEvents.post(RoomSettingsViewEvents.Success)
|
||||
},
|
||||
|
@ -23,7 +23,6 @@ import im.vector.matrix.android.api.session.events.model.Event
|
||||
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibility
|
||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||
import im.vector.riotx.features.roomprofile.RoomProfileArgs
|
||||
import im.vector.riotx.multipicker.entity.MultiPickerImageType
|
||||
|
||||
data class RoomSettingsViewState(
|
||||
val roomId: String,
|
||||
@ -32,7 +31,6 @@ data class RoomSettingsViewState(
|
||||
val isLoading: Boolean = false,
|
||||
val newName: String? = null,
|
||||
val newTopic: String? = null,
|
||||
val newAvatar: MultiPickerImageType? = null,
|
||||
val newHistoryVisibility: RoomHistoryVisibility? = null,
|
||||
val newAlias: String? = null,
|
||||
val showSaveAction: Boolean = false,
|
||||
@ -45,7 +43,6 @@ data class RoomSettingsViewState(
|
||||
val canChangeName: Boolean = false,
|
||||
val canChangeTopic: Boolean = false,
|
||||
val canChangeCanonicalAlias: Boolean = false,
|
||||
val canChangeAvatar: Boolean = false,
|
||||
val canChangeHistoryReadability: Boolean = false
|
||||
)
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user