diff --git a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt index 8960ddcd02..5607ddcd5d 100644 --- a/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt +++ b/vector/src/main/java/im/vector/app/features/form/FormEditTextItem.kt @@ -17,6 +17,7 @@ package im.vector.app.features.form import android.text.Editable +import android.view.View import android.view.inputmethod.EditorInfo import android.widget.TextView import com.airbnb.epoxy.EpoxyAttribute diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt index 61b34a1499..3ac61f1803 100644 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt +++ b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/CreateRoomController.kt @@ -99,11 +99,13 @@ class CreateRoomController @Inject constructor( } if (viewState.roomVisibilityType is CreateRoomViewState.RoomVisibilityType.Public) { // Room alias for public room - roomAliasEditItem { + formEditTextItem { id("alias") enabled(enableFormElement) value(viewState.roomVisibilityType.aliasLocalPart) - homeServer(":" + viewState.homeServerName) + inputSuffix(":" + viewState.homeServerName) + inputPrefix("#") + hint(host.stringProvider.getString(R.string.room_alias_address_hint)) errorMessage( host.roomAliasErrorFormatter.format( (((viewState.asyncCreateRoomRequest as? Fail)?.error) as? CreateRoomFailure.AliasError)?.aliasError) diff --git a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/RoomAliasEditItem.kt b/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/RoomAliasEditItem.kt deleted file mode 100644 index 9cb6f79a56..0000000000 --- a/vector/src/main/java/im/vector/app/features/roomdirectory/createroom/RoomAliasEditItem.kt +++ /dev/null @@ -1,82 +0,0 @@ -/* - * Copyright 2019 New Vector Ltd - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package im.vector.app.features.roomdirectory.createroom - -import android.text.Editable -import android.widget.TextView -import com.airbnb.epoxy.EpoxyAttribute -import com.airbnb.epoxy.EpoxyModelClass -import com.google.android.material.textfield.TextInputEditText -import com.google.android.material.textfield.TextInputLayout -import im.vector.app.R -import im.vector.app.core.epoxy.TextListener -import im.vector.app.core.epoxy.VectorEpoxyHolder -import im.vector.app.core.epoxy.VectorEpoxyModel -import im.vector.app.core.epoxy.addTextChangedListenerOnce -import im.vector.app.core.epoxy.setValueOnce -import im.vector.app.core.platform.SimpleTextWatcher - -@EpoxyModelClass(layout = R.layout.item_room_alias_text_input) -abstract class RoomAliasEditItem : VectorEpoxyModel() { - - @EpoxyAttribute - var value: String? = null - - @EpoxyAttribute - var errorMessage: String? = null - - @EpoxyAttribute - var homeServer: String? = null - - @EpoxyAttribute - var enabled: Boolean = true - - @EpoxyAttribute(EpoxyAttribute.Option.DoNotHash) - var onTextChange: TextListener? = null - - private val onTextChangeListener = object : SimpleTextWatcher() { - override fun afterTextChanged(s: Editable) { - onTextChange?.invoke(s.toString()) - } - } - - override fun bind(holder: Holder) { - super.bind(holder) - holder.textInputLayout.isEnabled = enabled - holder.textInputLayout.error = errorMessage - - holder.setValueOnce(holder.textInputEditText, value) - holder.textInputEditText.isEnabled = enabled - holder.textInputEditText.addTextChangedListenerOnce(onTextChangeListener) - holder.homeServerText.text = homeServer - } - - override fun shouldSaveViewState(): Boolean { - return false - } - - override fun unbind(holder: Holder) { - super.unbind(holder) - holder.textInputEditText.removeTextChangedListener(onTextChangeListener) - } - - class Holder : VectorEpoxyHolder() { - val textInputLayout by bind(R.id.itemRoomAliasTextInputLayout) - val textInputEditText by bind(R.id.itemRoomAliasTextInputEditText) - val homeServerText by bind(R.id.itemRoomAliasHomeServer) - } -} diff --git a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt index 0689cf2f56..50bc3d1e5c 100644 --- a/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt +++ b/vector/src/main/java/im/vector/app/features/roomprofile/alias/RoomAliasController.kt @@ -36,7 +36,6 @@ import im.vector.app.features.discovery.settingsInfoItem import im.vector.app.features.form.formEditTextItem import im.vector.app.features.form.formSwitchItem import im.vector.app.features.roomdirectory.createroom.RoomAliasErrorFormatter -import im.vector.app.features.roomdirectory.createroom.roomAliasEditItem import org.matrix.android.sdk.api.session.room.alias.RoomAliasError import org.matrix.android.sdk.api.session.room.model.RoomDirectoryVisibility import org.matrix.android.sdk.api.session.room.model.RoomType @@ -246,10 +245,12 @@ class RoomAliasController @Inject constructor( } } is RoomAliasViewState.AddAliasState.Editing -> { - roomAliasEditItem { + formEditTextItem { id("newLocalAlias") value(data.newLocalAliasState.value) - homeServer(":" + data.homeServerName) + inputSuffix(":" + data.homeServerName) + inputPrefix("#") + hint(host.stringProvider.getString(R.string.room_alias_address_hint)) errorMessage(host.roomAliasErrorFormatter.format((data.newLocalAliasState.asyncRequest as? Fail)?.error as? RoomAliasError)) onTextChange { value -> host.callback?.setNewLocalAliasLocalPart(value) diff --git a/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt b/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt index 36a04ef6fa..ad544e2648 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/create/SpaceDetailEpoxyController.kt @@ -102,7 +102,6 @@ class SpaceDetailEpoxyController @Inject constructor( (((data.aliasVerificationTask as? Fail)?.error) as? RoomAliasError)) ) onTextChange(host.aliasTextWatcher) - showBottomSeparator(false) } } diff --git a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt index 10dd11527d..11a4a982a0 100644 --- a/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt +++ b/vector/src/main/java/im/vector/app/features/spaces/manage/SpaceSettingsController.kt @@ -104,6 +104,7 @@ class SpaceSettingsController @Inject constructor( } } + val isPublic = (data.newRoomJoinRules.newJoinRules ?: data.currentRoomJoinRules) == RoomJoinRules.PUBLIC if (vectorPreferences.labsUseExperimentalRestricted()) { buildProfileAction( id = "joinRule", @@ -114,7 +115,6 @@ class SpaceSettingsController @Inject constructor( action = { if (data.actionPermissions.canChangeJoinRule) callback?.onJoinRuleClicked() } ) } else { - val isPublic = (data.newRoomJoinRules.newJoinRules ?: data.currentRoomJoinRules) == RoomJoinRules.PUBLIC formSwitchItem { id("isPublic") enabled(data.actionPermissions.canChangeJoinRule) @@ -134,18 +134,18 @@ class SpaceSettingsController @Inject constructor( id = "manage_rooms", title = stringProvider.getString(R.string.space_settings_manage_rooms), // subtitle = data.getJoinRuleWording(stringProvider), - divider = vectorPreferences.developerMode(), + divider = true, editable = data.actionPermissions.canAddChildren, action = { if (data.actionPermissions.canAddChildren) callback?.onManageRooms() } ) - if (roomSummary.isPublic) { + + if (isPublic) { buildProfileAction( id = "alias", title = stringProvider.getString(R.string.space_settings_alias_title), subtitle = stringProvider.getString(R.string.space_settings_alias_subtitle), - dividerColor = dividerColor, divider = true, editable = true, action = { callback?.onRoomAliasesClicked() } diff --git a/vector/src/main/res/layout/item_room_alias_text_input.xml b/vector/src/main/res/layout/item_room_alias_text_input.xml deleted file mode 100644 index 1cac4763c4..0000000000 --- a/vector/src/main/res/layout/item_room_alias_text_input.xml +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - - - - - - - - -