diff --git a/changelog.d/6754.bugfix b/changelog.d/6754.bugfix
new file mode 100644
index 0000000000..e9f6960595
--- /dev/null
+++ b/changelog.d/6754.bugfix
@@ -0,0 +1 @@
+[App Layout] - space switcher now has empty state
diff --git a/library/ui-strings/src/main/res/values/strings.xml b/library/ui-strings/src/main/res/values/strings.xml
index df0e10627a..6b44377b79 100644
--- a/library/ui-strings/src/main/res/values/strings.xml
+++ b/library/ui-strings/src/main/res/values/strings.xml
@@ -442,6 +442,10 @@
"System Alerts"
Suggested Rooms
+
+ No spaces yet.
+ Spaces are a new way to group rooms and people. Create a space to get started.
+
Invites
diff --git a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt
index ca9279cb37..0153d64df7 100644
--- a/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt
+++ b/vector/src/main/java/im/vector/app/features/spaces/SpaceListFragment.kt
@@ -21,6 +21,7 @@ import android.view.HapticFeedbackConstants
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import androidx.core.view.isVisible
import com.airbnb.epoxy.EpoxyTouchHelper
import com.airbnb.mvrx.Loading
import com.airbnb.mvrx.Success
@@ -28,6 +29,7 @@ import com.airbnb.mvrx.Uninitialized
import com.airbnb.mvrx.fragmentViewModel
import com.airbnb.mvrx.withState
import dagger.hilt.android.AndroidEntryPoint
+import im.vector.app.core.epoxy.onClick
import im.vector.app.core.extensions.cleanup
import im.vector.app.core.extensions.configureWith
import im.vector.app.core.platform.StateView
@@ -71,6 +73,7 @@ class SpaceListFragment :
homeActivitySharedActionViewModel = activityViewModelProvider[HomeSharedActionViewModel::class.java]
roomListSharedActionViewModel = activityViewModelProvider[RoomListSharedActionViewModel::class.java]
views.stateView.contentView = views.groupListView
+ views.spacesEmptyButton.onClick { onAddSpaceSelected() }
setupSpaceController()
observeViewEvents()
}
@@ -147,13 +150,22 @@ class SpaceListFragment :
}
override fun invalidate() = withState(viewModel) { state ->
- when (state.asyncSpaces) {
+ when (val spaces = state.asyncSpaces) {
Uninitialized,
is Loading -> {
views.stateView.state = StateView.State.Loading
return@withState
}
- is Success -> views.stateView.state = StateView.State.Content
+ is Success -> {
+ views.stateView.state = StateView.State.Content
+ if (spaces.invoke().isEmpty()) {
+ views.spacesEmptyGroup.isVisible = true
+ views.groupListView.isVisible = false
+ } else {
+ views.spacesEmptyGroup.isVisible = false
+ views.groupListView.isVisible = true
+ }
+ }
else -> Unit
}
diff --git a/vector/src/main/res/layout/fragment_space_list.xml b/vector/src/main/res/layout/fragment_space_list.xml
index d54ffa7155..8dfbb4a9c6 100644
--- a/vector/src/main/res/layout/fragment_space_list.xml
+++ b/vector/src/main/res/layout/fragment_space_list.xml
@@ -12,4 +12,48 @@
android:overScrollMode="always"
tools:listitem="@layout/item_space" />
+
+
+
+
+
+
+
+
+
+
+