Design review changes

This commit is contained in:
Valere 2021-03-24 14:37:45 +01:00
parent ea5e48b940
commit 55083a5602
21 changed files with 166 additions and 62 deletions

View File

@ -59,9 +59,10 @@ internal class RoomChildRelationInfo(private val realm: Realm,
*/
fun getDirectChildrenDescriptions(): List<SpaceChildInfo> {
return CurrentStateEventEntity.whereType(realm, roomId, EventType.STATE_SPACE_CHILD)
.findAll().also {
Timber.v("## Space: Found ${it.count()} m.space.child state events for $roomId")
}
.findAll()
// .also {
// Timber.v("## Space: Found ${it.count()} m.space.child state events for $roomId")
// }
.mapNotNull {
ContentMapper.map(it.root?.content).toModel<SpaceChildContent>()?.let { scc ->
Timber.v("## Space child desc state event $scc")
@ -81,12 +82,13 @@ internal class RoomChildRelationInfo(private val realm: Realm,
fun getParentDescriptions(): List<SpaceParentInfo> {
return CurrentStateEventEntity.whereType(realm, roomId, EventType.STATE_SPACE_PARENT)
.findAll().also {
Timber.v("## Space: Found ${it.count()} m.space.parent state events for $roomId")
}
.findAll()
// .also {
// Timber.v("## Space: Found ${it.count()} m.space.parent state events for $roomId")
// }
.mapNotNull {
ContentMapper.map(it.root?.content).toModel<SpaceParentContent>()?.let { scc ->
Timber.v("## Space parent desc state event $scc")
// Timber.v("## Space parent desc state event $scc")
// Parent where via is not present are ignored.
scc.via?.let { via ->
SpaceParentInfo(

View File

@ -15,6 +15,7 @@
*/
package im.vector.app.core.ui.list
import android.graphics.Typeface
import android.view.Gravity
import android.widget.TextView
import androidx.annotation.ColorInt
@ -36,7 +37,7 @@ import im.vector.app.features.themes.ThemeUtils
abstract class GenericFooterItem : VectorEpoxyModel<GenericFooterItem.Holder>() {
@EpoxyAttribute
var text: String? = null
var text: CharSequence? = null
@EpoxyAttribute
var style: GenericItem.STYLE = GenericItem.STYLE.NORMAL_TEXT
@ -53,10 +54,17 @@ abstract class GenericFooterItem : VectorEpoxyModel<GenericFooterItem.Holder>()
override fun bind(holder: Holder) {
super.bind(holder)
holder.text.setTextOrHide(text)
holder.text.typeface = Typeface.DEFAULT
when (style) {
GenericItem.STYLE.BIG_TEXT -> holder.text.textSize = 18f
GenericItem.STYLE.NORMAL_TEXT -> holder.text.textSize = 14f
GenericItem.STYLE.SUBHEADER -> holder.text.textSize = 16f
GenericItem.STYLE.TITLE -> {
holder.text.textSize = 20f
holder.text.typeface = Typeface.DEFAULT_BOLD
}
}
holder.text.gravity = if (centered) Gravity.CENTER_HORIZONTAL else Gravity.START

View File

@ -40,7 +40,9 @@ abstract class GenericItem : VectorEpoxyModel<GenericItem.Holder>() {
enum class STYLE {
BIG_TEXT,
NORMAL_TEXT
NORMAL_TEXT,
TITLE,
SUBHEADER
}
class Action(var title: String) {

View File

@ -73,7 +73,7 @@ abstract class FormMultiLineEditTextItem : VectorEpoxyModel<FormMultiLineEditTex
holder.textInputLayout.error = errorMessage
holder.textInputEditText.typeface = typeFace
holder.textInputEditText.textSize = textSizeSp?.toFloat() ?: 12f
holder.textInputEditText.textSize = textSizeSp?.toFloat() ?: 14f
holder.textInputEditText.minLines = minLines
// Update only if text is different and value is not null

View File

@ -27,6 +27,8 @@ import com.airbnb.mvrx.ViewModelContext
import im.vector.app.R
import im.vector.app.core.extensions.exhaustive
import im.vector.app.core.platform.VectorViewModel
import im.vector.app.core.utils.DataSource
import im.vector.app.features.grouplist.SelectedSpaceDataSource
import im.vector.app.core.resources.StringProvider
import im.vector.app.features.home.RoomListDisplayMode
import io.reactivex.schedulers.Schedulers

View File

@ -24,6 +24,8 @@ data class RoomListViewState(
val displayMode: RoomListDisplayMode,
val roomFilter: String = "",
val roomMembershipChanges: Map<String, ChangeMembershipState> = emptyMap()
val asyncSuggestedRooms: Async<List<SpaceChildInfo>> = Uninitialized,
val suggestedRoomJoiningState: Map<String, Async<Unit>> = emptyMap()
) : MvRxState {
constructor(args: RoomListParams) : this(displayMode = args.displayMode)

View File

@ -21,6 +21,7 @@ import android.os.Parcelable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.fragment.app.FragmentManager
import im.vector.app.R
import im.vector.app.core.di.ActiveSessionHolder
@ -64,6 +65,8 @@ class ShareSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetSpa
val spaceName = summary?.name
views.descriptionText.text = getString(R.string.invite_people_to_your_space_desc, spaceName)
// XXX enable back when supported
views.inviteByMailButton.isVisible = false
views.inviteByMailButton.debouncedClicks {
}
@ -84,9 +87,9 @@ class ShareSpaceBottomSheet : VectorBaseBottomSheetDialogFragment<BottomSheetSpa
}
}
views.skipButton.debouncedClicks {
dismiss()
}
// views.skipButton.debouncedClicks {
// dismiss()
// }
}
companion object {

View File

@ -66,6 +66,7 @@ class SpaceCreationActivity : SimpleFragmentActivity(), CreateSpaceViewModel.Fac
override fun initUiAndData() {
super.initUiAndData()
viewModel.subscribe(this) {
renderState(it)
}

View File

@ -89,7 +89,9 @@ class SpaceSettingsMenuBottomSheet : VectorBaseBottomSheetDialogFragment<BottomS
}.disposeOnDestroyView()
views.invitePeople.views.bottomSheetActionClickableZone.debouncedClicks {
navigator.openInviteUsersToRoom(requireContext(), spaceArgs.spaceId)
// navigator.openInviteUsersToRoom(requireContext(), spaceArgs.spaceId)
dismiss()
ShareSpaceBottomSheet.show(requireFragmentManager(), spaceArgs.spaceId)
}
views.showMemberList.views.bottomSheetActionClickableZone.debouncedClicks {

View File

@ -22,13 +22,17 @@ import android.view.View
import android.view.ViewGroup
import com.airbnb.mvrx.activityViewModel
import im.vector.app.core.extensions.configureWith
import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.platform.OnBackPressed
import im.vector.app.core.platform.VectorBaseFragment
import im.vector.app.databinding.FragmentSpaceCreateGenericEpoxyFormBinding
import javax.inject.Inject
class CreateSpaceDefaultRoomsFragment @Inject constructor(
private val epoxyController: SpaceDefaultRoomEpoxyController
) : VectorBaseFragment<FragmentSpaceCreateGenericEpoxyFormBinding>(), SpaceDefaultRoomEpoxyController.Listener {
) : VectorBaseFragment<FragmentSpaceCreateGenericEpoxyFormBinding>(),
SpaceDefaultRoomEpoxyController.Listener,
OnBackPressed {
private val sharedViewModel: CreateSpaceViewModel by activityViewModel()
@ -46,6 +50,7 @@ class CreateSpaceDefaultRoomsFragment @Inject constructor(
}
views.nextButton.debouncedClicks {
view.hideKeyboard()
sharedViewModel.handle(CreateSpaceAction.NextFromDefaultRooms)
}
}
@ -54,7 +59,8 @@ class CreateSpaceDefaultRoomsFragment @Inject constructor(
sharedViewModel.handle(CreateSpaceAction.DefaultRoomNameChanged(index, newName))
}
// -----------------------------
// Epoxy controller listener methods
// -----------------------------
override fun onBackPressed(toolbarButton: Boolean): Boolean {
sharedViewModel.handle(CreateSpaceAction.OnBackPressed)
return true
}
}

View File

@ -24,6 +24,8 @@ import android.view.ViewGroup
import com.airbnb.mvrx.activityViewModel
import im.vector.app.core.dialogs.GalleryOrCameraDialogHelper
import im.vector.app.core.extensions.configureWith
import im.vector.app.core.extensions.hideKeyboard
import im.vector.app.core.platform.OnBackPressed
import im.vector.app.core.platform.VectorBaseFragment
import im.vector.app.core.resources.ColorProvider
import im.vector.app.databinding.FragmentSpaceCreateGenericEpoxyFormBinding
@ -33,7 +35,7 @@ class CreateSpaceDetailsFragment @Inject constructor(
private val epoxyController: SpaceDetailEpoxyController,
private val colorProvider: ColorProvider
) : VectorBaseFragment<FragmentSpaceCreateGenericEpoxyFormBinding>(), SpaceDetailEpoxyController.Listener,
GalleryOrCameraDialogHelper.Listener {
GalleryOrCameraDialogHelper.Listener, OnBackPressed {
private val sharedViewModel: CreateSpaceViewModel by activityViewModel()
@ -53,6 +55,7 @@ class CreateSpaceDetailsFragment @Inject constructor(
}
views.nextButton.debouncedClicks {
view.hideKeyboard()
sharedViewModel.handle(CreateSpaceAction.NextFromDetails)
}
}
@ -60,6 +63,7 @@ class CreateSpaceDetailsFragment @Inject constructor(
override fun onImageReady(uri: Uri?) {
sharedViewModel.handle(CreateSpaceAction.SetAvatar(uri))
}
// -----------------------------
// Epoxy controller listener methods
// -----------------------------
@ -79,4 +83,9 @@ class CreateSpaceDetailsFragment @Inject constructor(
override fun onTopicChange(newTopic: String) {
sharedViewModel.handle(CreateSpaceAction.TopicChanged(newTopic))
}
override fun onBackPressed(toolbarButton: Boolean): Boolean {
sharedViewModel.handle(CreateSpaceAction.OnBackPressed)
return true
}
}

View File

@ -33,10 +33,12 @@ class SpaceDefaultRoomEpoxyController @Inject constructor(
var listener: Listener? = null
// var shouldForceFocusOnce = true
override fun buildModels(data: CreateSpaceState?) {
genericFooterItem {
id("info_help_header")
style(GenericItem.STYLE.BIG_TEXT)
style(GenericItem.STYLE.TITLE)
text(stringProvider.getString(R.string.create_spaces_room_public_header, data?.name))
textColor(colorProvider.getColorFromAttribute(R.attr.riot_primary_text_color))
}
@ -47,10 +49,12 @@ class SpaceDefaultRoomEpoxyController @Inject constructor(
textColor(colorProvider.getColorFromAttribute(R.attr.riotx_text_secondary))
}
val firstRoomName = data?.defaultRooms?.get(0)
formEditTextItem {
id("roomName1")
enabled(true)
value(data?.defaultRooms?.get(0))
value(firstRoomName)
singleLine(true)
hint(stringProvider.getString(R.string.create_room_name_section))
endIconMode(TextInputLayout.END_ICON_CLEAR_TEXT)
showBottomSeparator(false)
@ -59,10 +63,12 @@ class SpaceDefaultRoomEpoxyController @Inject constructor(
}
}
val secondRoomName = data?.defaultRooms?.get(1)
formEditTextItem {
id("roomName2")
enabled(true)
value(data?.defaultRooms?.get(1))
value(secondRoomName)
singleLine(true)
hint(stringProvider.getString(R.string.create_room_name_section))
endIconMode(TextInputLayout.END_ICON_CLEAR_TEXT)
showBottomSeparator(false)
@ -71,23 +77,35 @@ class SpaceDefaultRoomEpoxyController @Inject constructor(
}
}
val thirdRoomName = data?.defaultRooms?.get(2)
formEditTextItem {
id("roomName3")
enabled(true)
value(data?.defaultRooms?.get(2))
value(thirdRoomName)
singleLine(true)
hint(stringProvider.getString(R.string.create_room_name_section))
endIconMode(TextInputLayout.END_ICON_CLEAR_TEXT)
showBottomSeparator(false)
onTextChange { text ->
listener?.onNameChange(2, text)
}
// onBind { _, view, _ ->
// if (shouldForceFocusOnce
// && thirdRoomName.isNullOrBlank()
// && firstRoomName.isNullOrBlank().not()
// && secondRoomName.isNullOrBlank().not()
// ) {
// shouldForceFocusOnce = false
// // sad face :(
// view.textInputEditText.post {
// view.textInputEditText.showKeyboard(true)
// }
// }
// }
}
}
interface Listener {
// fun onAvatarDelete()
// fun onAvatarChange()
fun onNameChange(index: Int, newName: String)
// fun onTopicChange(newTopic: String)
}
}

View File

@ -34,6 +34,8 @@ class SpaceDetailEpoxyController @Inject constructor(
var listener: Listener? = null
// var shouldForceFocusOnce = true
override fun buildModels(data: CreateSpaceState?) {
genericFooterItem {
id("info_help")
@ -61,8 +63,18 @@ class SpaceDetailEpoxyController @Inject constructor(
enabled(true)
value(data?.name)
hint(stringProvider.getString(R.string.create_room_name_hint))
singleLine(true)
showBottomSeparator(false)
errorMessage(data?.nameInlineError)
// onBind { _, view, _ ->
// if (shouldForceFocusOnce && data?.name.isNullOrBlank()) {
// shouldForceFocusOnce = false
// // sad face :(
// view.textInputEditText.post {
// view.textInputEditText.showKeyboard(true)
// }
// }
// }
onTextChange { text ->
listener?.onNameChange(text)
}
@ -72,9 +84,9 @@ class SpaceDetailEpoxyController @Inject constructor(
id("topic")
enabled(true)
value(data?.topic)
hint(stringProvider.getString(R.string.create_room_topic_hint))
hint(stringProvider.getString(R.string.create_space_topic_hint))
showBottomSeparator(false)
textSizeSp(15)
textSizeSp(16)
onTextChange { text ->
listener?.onTopicChange(text)
}

View File

@ -69,8 +69,8 @@ class WizardButtonView @JvmOverloads constructor(context: Context, attrs: Attrib
// var action: (() -> Unit)? = null
init {
inflate(context, R.layout.view_space_type_button, this)
views = ViewSpaceTypeButtonBinding.bind(this)
val content = inflate(context, R.layout.view_space_type_button, this)
views = ViewSpaceTypeButtonBinding.bind(content)
views.subTitle.setTextOrHide(null)

View File

@ -0,0 +1,11 @@
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<size android:width="40dp" android:height="40dp"/>
<solid android:color="?vctr_list_header_background_color" />
<corners android:radius="16dp" />
</shape>

View File

@ -14,11 +14,11 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:layout_marginBottom="12dp"
android:gravity="center"
android:text="@string/invite_people_to_your_space"
android:textColor="?riotx_text_primary"
android:textSize="18sp"
android:textSize="16sp"
android:textStyle="bold"
app:layout_constraintTop_toTopOf="parent" />
@ -26,10 +26,10 @@
android:id="@+id/descriptionText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:layout_marginBottom="20dp"
android:gravity="center"
android:textColor="?riotx_text_secondary"
android:textSize="18sp"
android:textSize="16sp"
app:layout_constraintBottom_toTopOf="@id/joinInfoHelpText"
app:layout_constraintTop_toBottomOf="@id/headerText"
app:layout_constraintVertical_bias="1"
@ -40,40 +40,50 @@
android:id="@+id/inviteByMailButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:icon="@drawable/ic_mail"
app:iconTint="?riotx_text_secondary"
app:title="@string/invite_by_email" />
<Space
android:layout_width="match_parent"
android:layout_height="16dp" />
<im.vector.app.features.spaces.create.WizardButtonView
android:id="@+id/inviteByMxidButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
app:icon="@drawable/ic_add_people"
app:iconTint="?riotx_text_secondary"
app:title="@string/invite_by_mxid" />
<Space
android:layout_width="match_parent"
android:layout_height="16dp" />
<im.vector.app.features.spaces.create.WizardButtonView
android:id="@+id/inviteByLinkButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
app:icon="@drawable/ic_share_link"
app:iconTint="?riotx_text_secondary"
app:title="@string/invite_by_link">
</im.vector.app.features.spaces.create.WizardButtonView>
<com.google.android.material.button.MaterialButton
android:id="@+id/skipButton"
style="@style/VectorButtonStyleOutlined"
android:textAllCaps="true"
<Space
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/layout_vertical_margin"
android:textColor="?colorAccent"
android:text="@string/skip_for_now"/>
android:layout_height="20dp" />
<!-- <com.google.android.material.button.MaterialButton-->
<!-- android:id="@+id/skipButton"-->
<!-- style="@style/VectorButtonStyleOutlined"-->
<!-- android:layout_width="match_parent"-->
<!-- android:layout_height="wrap_content"-->
<!-- android:layout_marginTop="@dimen/layout_vertical_margin"-->
<!-- android:text="@string/skip_for_now"-->
<!-- android:textAllCaps="true"-->
<!-- android:textColor="?colorAccent" />-->
</LinearLayout>

View File

@ -17,17 +17,17 @@
android:gravity="center"
android:text="@string/create_spaces_type_header"
android:textColor="?riotx_text_secondary"
android:textSize="18sp"
android:textSize="16sp"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="2dp"
android:gravity="start"
android:layout_marginBottom="16dp"
android:gravity="center"
android:text="@string/create_spaces_choose_type_label"
android:textColor="?riotx_text_primary"
android:textSize="18sp"
android:textSize="20sp"
android:textStyle="bold"
app:layout_constraintBottom_toTopOf="@id/joinInfoHelpText"
app:layout_constraintTop_toBottomOf="@id/headerText"
@ -37,18 +37,18 @@
android:id="@+id/joinInfoHelpText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:gravity="start"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="@string/create_spaces_join_info_help"
android:textColor="?riotx_text_secondary"
android:textSize="16sp"
android:textSize="14sp"
app:layout_constraintBottom_toTopOf="@id/publicButton" />
<im.vector.app.features.spaces.create.WizardButtonView
android:id="@+id/publicButton"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginBottom="16dp"
app:icon="@drawable/ic_public_room"
app:layout_constraintBottom_toTopOf="@id/privateButton"
app:layout_constraintEnd_toEndOf="parent"
@ -61,11 +61,23 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:icon="@drawable/ic_room_private"
app:layout_constraintBottom_toBottomOf="parent"
android:layout_marginBottom="16dp"
app:layout_constraintBottom_toTopOf="@id/changeLaterText"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:subTitle="@string/space_type_private_desc"
app:title="@string/space_type_private" />
<TextView
android:id="@+id/changeLaterText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="24dp"
android:gravity="center"
android:text="@string/create_spaces_you_can_change_later"
android:textColor="?riotx_text_secondary"
android:textSize="14sp"
app:layout_constraintBottom_toBottomOf="parent"/>
</androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

View File

@ -21,7 +21,6 @@
android:layout_height="wrap_content"
android:background="?riotx_background"
android:elevation="2dp"
android:padding="8dp"
app:layout_constraintBottom_toBottomOf="parent">
<com.google.android.material.button.MaterialButton
@ -29,6 +28,9 @@
style="@style/VectorButtonStyle"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginEnd="14dp"
android:layout_marginBottom="16dp"
android:text="@string/next_pf" />
</FrameLayout>

View File

@ -13,7 +13,7 @@
android:id="@+id/itemEditableAvatarImageContainer"
android:layout_width="80dp"
android:layout_height="80dp"
android:background="@drawable/rounded_rect_shape_8"
android:background="@drawable/rounded_rect_shape_16"
android:contentDescription="@string/a11y_change_avatar"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View File

@ -6,12 +6,13 @@
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rounded_rect_shape_8"
android:padding="4dp">
android:padding="8dp">
<ImageView
android:id="@+id/buttonImageView"
android:layout_width="24dp"
android:layout_height="24dp"
android:minHeight="56dp"
android:layout_margin="8dp"
android:importantForAccessibility="no"
android:src="@drawable/ic_public_room"
@ -24,9 +25,7 @@
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="8dp"
android:gravity="start"
android:textColor="?riotx_text_primary"
android:textSize="16sp"
@ -34,6 +33,7 @@
app:layout_constraintEnd_toStartOf="@id/rightChevron"
app:layout_constraintStart_toEndOf="@id/buttonImageView"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toTopOf="@id/subTitle"
app:layout_goneMarginBottom="0dp"
tools:text="Public" />
@ -44,7 +44,6 @@
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="4dp"
android:layout_marginBottom="8dp"
android:gravity="start"
android:textColor="?riotx_text_secondary"
android:textSize="12sp"
@ -53,7 +52,6 @@
app:layout_constraintEnd_toStartOf="@id/rightChevron"
app:layout_constraintStart_toEndOf="@id/buttonImageView"
app:layout_constraintTop_toBottomOf="@id/title"
app:layout_goneMarginBottom="8dp"
tools:text="Open to anyone, best for communities"
tools:visibility="visible" />

View File

@ -3266,6 +3266,7 @@
<string name="your_public_space">Your public space</string>
<string name="create_spaces_type_header">Spaces are a new way to group rooms and people</string>
<string name="create_spaces_choose_type_label">What type of space do you want to create?</string>
<string name="create_spaces_you_can_change_later">You can change this later</string>
<string name="create_spaces_join_info_help">To join an existing space, you need an invite.</string>
<string name="space_type_public">Public</string>
<string name="space_type_public_desc">Open to anyone, best for communities</string>
@ -3276,10 +3277,11 @@
<string name="create_spaces_details_private_header">Add some details to help people identify it. You can change these at any point.</string>
<string name="create_space_error_empty_field_space_name">Give it a name to continue.</string>
<string name="create_spaces_room_public_header">What are some discussions you want to have in %s?</string>
<string name="create_spaces_room_public_header_desc">Well create rooms for them, and auto-join everyone. You can add more later too.</string>
<string name="create_spaces_room_public_header_desc">Well create rooms for them. You can add more later too.</string>
<string name="create_spaces_default_public_room_name">General</string>
<string name="create_spaces_default_public_random_room_name">Random</string>
<string name="create_spaces_loading_message">Creating Space…</string>
<string name="create_space_topic_hint">Description</string>
<string name="invite_people_to_your_space">Invite people to your space</string>
<string name="invite_people_menu">Invite people</string>
<string name="invite_people_to_your_space_desc">Its just you at the moment. %s will be even better with others.</string>
@ -3294,6 +3296,8 @@
<string name="room_alias_preview_not_found">This alias is not accessible at this time.\nTry again later, or ask a room admin to check if you have access.</string>
<string name="suggested_rooms_pills_on_empty_text">Youre not in any rooms yet. Below are some suggested rooms, but you can see more with the green button bottom right.</string>
<!-- First one is the space name, and the second one is user name -->
<string name="suggested_rooms_pills_on_empty_header">Welcome to %1$s, %2$s.</string>
<string name="space_explore_activity_title">Explore rooms</string>
<string name="leave_space">Leave Space</string>