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.matrix.android.api.session.room.model.RoomHistoryVisibility
|
||||||
import im.vector.riotx.core.platform.VectorViewModelAction
|
import im.vector.riotx.core.platform.VectorViewModelAction
|
||||||
import im.vector.riotx.multipicker.entity.MultiPickerImageType
|
|
||||||
|
|
||||||
sealed class RoomSettingsAction : VectorViewModelAction {
|
sealed class RoomSettingsAction : VectorViewModelAction {
|
||||||
data class SetRoomName(val newName: String) : RoomSettingsAction()
|
data class SetRoomName(val newName: String) : RoomSettingsAction()
|
||||||
data class SetRoomTopic(val newTopic: 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 SetRoomHistoryVisibility(val visibility: RoomHistoryVisibility) : RoomSettingsAction()
|
||||||
data class SetRoomAlias(val alias: String) : RoomSettingsAction()
|
data class SetRoomAlias(val alias: String) : RoomSettingsAction()
|
||||||
object EnableEncryption : 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.events.model.toModel
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomHistoryVisibility
|
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.session.room.model.RoomHistoryVisibilityContent
|
||||||
import im.vector.matrix.android.api.util.toMatrixItem
|
|
||||||
import im.vector.riotx.R
|
import im.vector.riotx.R
|
||||||
import im.vector.riotx.core.epoxy.profiles.buildProfileAction
|
import im.vector.riotx.core.epoxy.profiles.buildProfileAction
|
||||||
import im.vector.riotx.core.epoxy.profiles.buildProfileSection
|
import im.vector.riotx.core.epoxy.profiles.buildProfileSection
|
||||||
import im.vector.riotx.core.resources.ColorProvider
|
import im.vector.riotx.core.resources.ColorProvider
|
||||||
import im.vector.riotx.core.resources.StringProvider
|
import im.vector.riotx.core.resources.StringProvider
|
||||||
import im.vector.riotx.features.form.formEditTextItem
|
import im.vector.riotx.features.form.formEditTextItem
|
||||||
import im.vector.riotx.features.home.AvatarRenderer
|
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
|
|
||||||
// TODO Add other feature here (waiting for design)
|
// TODO Add other feature here (waiting for design)
|
||||||
class RoomSettingsController @Inject constructor(
|
class RoomSettingsController @Inject constructor(
|
||||||
private val avatarRenderer: AvatarRenderer,
|
|
||||||
private val stringProvider: StringProvider,
|
private val stringProvider: StringProvider,
|
||||||
colorProvider: ColorProvider
|
colorProvider: ColorProvider
|
||||||
) : TypedEpoxyController<RoomSettingsViewState>() {
|
) : TypedEpoxyController<RoomSettingsViewState>() {
|
||||||
@ -42,7 +39,6 @@ class RoomSettingsController @Inject constructor(
|
|||||||
fun onEnableEncryptionClicked()
|
fun onEnableEncryptionClicked()
|
||||||
fun onNameChanged(name: String)
|
fun onNameChanged(name: String)
|
||||||
fun onTopicChanged(topic: String)
|
fun onTopicChanged(topic: String)
|
||||||
fun onPhotoClicked()
|
|
||||||
fun onHistoryVisibilityClicked()
|
fun onHistoryVisibilityClicked()
|
||||||
fun onAliasChanged(alias: String)
|
fun onAliasChanged(alias: String)
|
||||||
}
|
}
|
||||||
@ -108,18 +104,6 @@ class RoomSettingsController @Inject constructor(
|
|||||||
action = { callback?.onHistoryVisibilityClicked() }
|
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) {
|
if (roomSummary.isEncrypted) {
|
||||||
buildProfileAction(
|
buildProfileAction(
|
||||||
id = "encryption",
|
id = "encryption",
|
||||||
|
@ -16,8 +16,6 @@
|
|||||||
|
|
||||||
package im.vector.riotx.features.roomprofile.settings
|
package im.vector.riotx.features.roomprofile.settings
|
||||||
|
|
||||||
import android.app.Activity
|
|
||||||
import android.content.Intent
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.Menu
|
import android.view.Menu
|
||||||
import android.view.MenuItem
|
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.core.utils.toast
|
||||||
import im.vector.riotx.features.home.AvatarRenderer
|
import im.vector.riotx.features.home.AvatarRenderer
|
||||||
import im.vector.riotx.features.roomprofile.RoomProfileArgs
|
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.fragment_room_setting_generic.*
|
||||||
import kotlinx.android.synthetic.main.merge_overlay_waiting_view.*
|
import kotlinx.android.synthetic.main.merge_overlay_waiting_view.*
|
||||||
import javax.inject.Inject
|
import javax.inject.Inject
|
||||||
@ -134,30 +130,6 @@ class RoomSettingsFragment @Inject constructor(
|
|||||||
viewModel.handle(RoomSettingsAction.SetRoomTopic(topic))
|
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 ->
|
override fun onHistoryVisibilityClicked() = withState(viewModel) { state ->
|
||||||
val historyVisibilities = arrayOf(
|
val historyVisibilities = arrayOf(
|
||||||
RoomHistoryVisibility.SHARED,
|
RoomHistoryVisibility.SHARED,
|
||||||
|
@ -32,7 +32,6 @@ import im.vector.riotx.features.powerlevel.PowerLevelsObservableFactory
|
|||||||
import io.reactivex.Completable
|
import io.reactivex.Completable
|
||||||
import io.reactivex.Observable
|
import io.reactivex.Observable
|
||||||
import java.util.Locale
|
import java.util.Locale
|
||||||
import java.util.UUID
|
|
||||||
|
|
||||||
class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState: RoomSettingsViewState,
|
class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState: RoomSettingsViewState,
|
||||||
private val session: Session)
|
private val session: Session)
|
||||||
@ -79,7 +78,6 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
|||||||
canChangeName = powerLevelsHelper.isUserAbleToChangeRoomName(session.myUserId),
|
canChangeName = powerLevelsHelper.isUserAbleToChangeRoomName(session.myUserId),
|
||||||
canChangeTopic = powerLevelsHelper.isUserAbleToChangeRoomTopic(session.myUserId),
|
canChangeTopic = powerLevelsHelper.isUserAbleToChangeRoomTopic(session.myUserId),
|
||||||
canChangeCanonicalAlias = powerLevelsHelper.isUserAbleToChangeRoomCanonicalAlias(session.myUserId),
|
canChangeCanonicalAlias = powerLevelsHelper.isUserAbleToChangeRoomCanonicalAlias(session.myUserId),
|
||||||
canChangeAvatar = powerLevelsHelper.isUserAbleToChangeRoomAvatar(session.myUserId),
|
|
||||||
canChangeHistoryReadability = powerLevelsHelper.isUserAbleToChangeRoomHistoryReadability(session.myUserId)
|
canChangeHistoryReadability = powerLevelsHelper.isUserAbleToChangeRoomHistoryReadability(session.myUserId)
|
||||||
)
|
)
|
||||||
setState { copy(actionPermissions = permissions) }
|
setState { copy(actionPermissions = permissions) }
|
||||||
@ -97,10 +95,6 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
|||||||
setState { copy(newTopic = action.newTopic) }
|
setState { copy(newTopic = action.newTopic) }
|
||||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||||
}
|
}
|
||||||
is RoomSettingsAction.SetRoomAvatar -> {
|
|
||||||
setState { copy(newAvatar = action.image) }
|
|
||||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
|
||||||
}
|
|
||||||
is RoomSettingsAction.SetRoomHistoryVisibility -> {
|
is RoomSettingsAction.SetRoomHistoryVisibility -> {
|
||||||
setState { copy(newHistoryVisibility = action.visibility) }
|
setState { copy(newHistoryVisibility = action.visibility) }
|
||||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||||
@ -118,8 +112,7 @@ class RoomSettingsViewModel @AssistedInject constructor(@Assisted initialState:
|
|||||||
return summary?.displayName != state.newName ||
|
return summary?.displayName != state.newName ||
|
||||||
summary?.topic != state.newTopic ||
|
summary?.topic != state.newTopic ||
|
||||||
summary?.canonicalAlias != state.newAlias ||
|
summary?.canonicalAlias != state.newAlias ||
|
||||||
state.newHistoryVisibility != null ||
|
state.newHistoryVisibility != null
|
||||||
state.newAvatar != null
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun saveSettings() = withState { state ->
|
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)))
|
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
|
Observable
|
||||||
.fromIterable(operationList)
|
.fromIterable(operationList)
|
||||||
.flatMapCompletable { it }
|
.flatMapCompletable { it }
|
||||||
.subscribe(
|
.subscribe(
|
||||||
{
|
{
|
||||||
postLoading(false)
|
postLoading(false)
|
||||||
setState { copy(newAvatar = null, newHistoryVisibility = null) }
|
setState { copy(newHistoryVisibility = null) }
|
||||||
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
setState { copy(showSaveAction = shouldShowSaveAction(this)) }
|
||||||
_viewEvents.post(RoomSettingsViewEvents.Success)
|
_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.RoomHistoryVisibility
|
||||||
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
import im.vector.matrix.android.api.session.room.model.RoomSummary
|
||||||
import im.vector.riotx.features.roomprofile.RoomProfileArgs
|
import im.vector.riotx.features.roomprofile.RoomProfileArgs
|
||||||
import im.vector.riotx.multipicker.entity.MultiPickerImageType
|
|
||||||
|
|
||||||
data class RoomSettingsViewState(
|
data class RoomSettingsViewState(
|
||||||
val roomId: String,
|
val roomId: String,
|
||||||
@ -32,7 +31,6 @@ data class RoomSettingsViewState(
|
|||||||
val isLoading: Boolean = false,
|
val isLoading: Boolean = false,
|
||||||
val newName: String? = null,
|
val newName: String? = null,
|
||||||
val newTopic: String? = null,
|
val newTopic: String? = null,
|
||||||
val newAvatar: MultiPickerImageType? = null,
|
|
||||||
val newHistoryVisibility: RoomHistoryVisibility? = null,
|
val newHistoryVisibility: RoomHistoryVisibility? = null,
|
||||||
val newAlias: String? = null,
|
val newAlias: String? = null,
|
||||||
val showSaveAction: Boolean = false,
|
val showSaveAction: Boolean = false,
|
||||||
@ -45,7 +43,6 @@ data class RoomSettingsViewState(
|
|||||||
val canChangeName: Boolean = false,
|
val canChangeName: Boolean = false,
|
||||||
val canChangeTopic: Boolean = false,
|
val canChangeTopic: Boolean = false,
|
||||||
val canChangeCanonicalAlias: Boolean = false,
|
val canChangeCanonicalAlias: Boolean = false,
|
||||||
val canChangeAvatar: Boolean = false,
|
|
||||||
val canChangeHistoryReadability: Boolean = false
|
val canChangeHistoryReadability: Boolean = false
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user