Fixes space header showing "Empty Space" after switching to newly created space
This commit is contained in:
parent
fc301c8a2e
commit
2fb794dd59
@ -42,12 +42,14 @@ interface SpaceStateHandler : DefaultLifecycleObserver {
|
|||||||
* @param session the current active session
|
* @param session the current active session
|
||||||
* @param persistNow if true, the current space will immediately be persisted in shared prefs
|
* @param persistNow if true, the current space will immediately be persisted in shared prefs
|
||||||
* @param isForwardNavigation whether this navigation is a forward action to properly handle backstack
|
* @param isForwardNavigation whether this navigation is a forward action to properly handle backstack
|
||||||
|
* @param overriddenSpaceName overrides the display name of the space being set
|
||||||
*/
|
*/
|
||||||
fun setCurrentSpace(
|
fun setCurrentSpace(
|
||||||
spaceId: String?,
|
spaceId: String?,
|
||||||
session: Session? = null,
|
session: Session? = null,
|
||||||
persistNow: Boolean = false,
|
persistNow: Boolean = false,
|
||||||
isForwardNavigation: Boolean = true,
|
isForwardNavigation: Boolean = true,
|
||||||
|
overriddenSpaceName: String? = null,
|
||||||
)
|
)
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -72,10 +72,13 @@ class SpaceStateHandlerImpl @Inject constructor(
|
|||||||
session: Session?,
|
session: Session?,
|
||||||
persistNow: Boolean,
|
persistNow: Boolean,
|
||||||
isForwardNavigation: Boolean,
|
isForwardNavigation: Boolean,
|
||||||
|
overriddenSpaceName: String?,
|
||||||
) {
|
) {
|
||||||
val activeSession = session ?: activeSessionHolder.getSafeActiveSession() ?: return
|
val activeSession = session ?: activeSessionHolder.getSafeActiveSession() ?: return
|
||||||
val spaceToLeave = selectedSpaceDataSource.currentValue?.orNull()
|
val spaceToLeave = selectedSpaceDataSource.currentValue?.orNull()
|
||||||
val spaceToSet = spaceId?.let { activeSession.getRoomSummary(spaceId) }
|
val spaceToSet = spaceId?.let { activeSession.getRoomSummary(spaceId) }?.let {
|
||||||
|
if (overriddenSpaceName != null) it.copy(displayName = overriddenSpaceName) else it
|
||||||
|
}
|
||||||
val sameSpaceSelected = spaceId == spaceToLeave?.roomId
|
val sameSpaceSelected = spaceId == spaceToLeave?.roomId
|
||||||
|
|
||||||
if (sameSpaceSelected) {
|
if (sameSpaceSelected) {
|
||||||
|
|||||||
@ -55,6 +55,8 @@ import im.vector.app.features.analytics.plan.MobileScreen
|
|||||||
import im.vector.app.features.analytics.plan.ViewRoom
|
import im.vector.app.features.analytics.plan.ViewRoom
|
||||||
import im.vector.app.features.crypto.recover.SetupMode
|
import im.vector.app.features.crypto.recover.SetupMode
|
||||||
import im.vector.app.features.disclaimer.showDisclaimerDialog
|
import im.vector.app.features.disclaimer.showDisclaimerDialog
|
||||||
|
import im.vector.app.features.home.room.list.actions.RoomListSharedAction
|
||||||
|
import im.vector.app.features.home.room.list.actions.RoomListSharedActionViewModel
|
||||||
import im.vector.app.features.matrixto.MatrixToBottomSheet
|
import im.vector.app.features.matrixto.MatrixToBottomSheet
|
||||||
import im.vector.app.features.matrixto.OriginOfMatrixTo
|
import im.vector.app.features.matrixto.OriginOfMatrixTo
|
||||||
import im.vector.app.features.navigation.Navigator
|
import im.vector.app.features.navigation.Navigator
|
||||||
@ -110,6 +112,7 @@ class HomeActivity :
|
|||||||
VectorMenuProvider {
|
VectorMenuProvider {
|
||||||
|
|
||||||
private lateinit var sharedActionViewModel: HomeSharedActionViewModel
|
private lateinit var sharedActionViewModel: HomeSharedActionViewModel
|
||||||
|
private lateinit var roomListSharedActionViewModel: RoomListSharedActionViewModel
|
||||||
|
|
||||||
private val homeActivityViewModel: HomeActivityViewModel by viewModel()
|
private val homeActivityViewModel: HomeActivityViewModel by viewModel()
|
||||||
|
|
||||||
@ -139,6 +142,7 @@ class HomeActivity :
|
|||||||
private val createSpaceResultLauncher = registerStartForActivityResult { activityResult ->
|
private val createSpaceResultLauncher = registerStartForActivityResult { activityResult ->
|
||||||
if (activityResult.resultCode == Activity.RESULT_OK) {
|
if (activityResult.resultCode == Activity.RESULT_OK) {
|
||||||
val spaceId = SpaceCreationActivity.getCreatedSpaceId(activityResult.data)
|
val spaceId = SpaceCreationActivity.getCreatedSpaceId(activityResult.data)
|
||||||
|
val spaceName = SpaceCreationActivity.getCreatedSpaceName(activityResult.data)
|
||||||
val defaultRoomId = SpaceCreationActivity.getDefaultRoomId(activityResult.data)
|
val defaultRoomId = SpaceCreationActivity.getDefaultRoomId(activityResult.data)
|
||||||
val isJustMe = SpaceCreationActivity.isJustMeSpace(activityResult.data)
|
val isJustMe = SpaceCreationActivity.isJustMeSpace(activityResult.data)
|
||||||
views.drawerLayout.closeDrawer(GravityCompat.START)
|
views.drawerLayout.closeDrawer(GravityCompat.START)
|
||||||
@ -155,8 +159,10 @@ class HomeActivity :
|
|||||||
navigator.switchToSpace(
|
navigator.switchToSpace(
|
||||||
context = this,
|
context = this,
|
||||||
spaceId = spaceId,
|
spaceId = spaceId,
|
||||||
postSwitchOption
|
postSwitchOption,
|
||||||
|
overriddenSpaceName = spaceName,
|
||||||
)
|
)
|
||||||
|
roomListSharedActionViewModel.post(RoomListSharedAction.CloseBottomSheet)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -205,6 +211,7 @@ class HomeActivity :
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
sharedActionViewModel = viewModelProvider[HomeSharedActionViewModel::class.java]
|
sharedActionViewModel = viewModelProvider[HomeSharedActionViewModel::class.java]
|
||||||
|
roomListSharedActionViewModel = viewModelProvider[RoomListSharedActionViewModel::class.java]
|
||||||
views.drawerLayout.addDrawerListener(drawerListener)
|
views.drawerLayout.addDrawerListener(drawerListener)
|
||||||
if (isFirstCreation()) {
|
if (isFirstCreation()) {
|
||||||
if (vectorFeatures.isNewAppLayoutEnabled()) {
|
if (vectorFeatures.isNewAppLayoutEnabled()) {
|
||||||
|
|||||||
@ -177,12 +177,17 @@ class DefaultNavigator @Inject constructor(
|
|||||||
startActivity(context, intent, buildTask)
|
startActivity(context, intent, buildTask)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun switchToSpace(context: Context, spaceId: String, postSwitchSpaceAction: Navigator.PostSwitchSpaceAction) {
|
override fun switchToSpace(
|
||||||
|
context: Context,
|
||||||
|
spaceId: String,
|
||||||
|
postSwitchSpaceAction: Navigator.PostSwitchSpaceAction,
|
||||||
|
overriddenSpaceName: String?,
|
||||||
|
) {
|
||||||
if (sessionHolder.getSafeActiveSession()?.getRoomSummary(spaceId) == null) {
|
if (sessionHolder.getSafeActiveSession()?.getRoomSummary(spaceId) == null) {
|
||||||
fatalError("Trying to open an unknown space $spaceId", vectorPreferences.failFast())
|
fatalError("Trying to open an unknown space $spaceId", vectorPreferences.failFast())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
spaceStateHandler.setCurrentSpace(spaceId)
|
spaceStateHandler.setCurrentSpace(spaceId, overriddenSpaceName = overriddenSpaceName)
|
||||||
when (postSwitchSpaceAction) {
|
when (postSwitchSpaceAction) {
|
||||||
Navigator.PostSwitchSpaceAction.None -> {
|
Navigator.PostSwitchSpaceAction.None -> {
|
||||||
// go back to home if we are showing room details?
|
// go back to home if we are showing room details?
|
||||||
|
|||||||
@ -68,7 +68,12 @@ interface Navigator {
|
|||||||
data class OpenDefaultRoom(val roomId: String, val showShareSheet: Boolean) : PostSwitchSpaceAction()
|
data class OpenDefaultRoom(val roomId: String, val showShareSheet: Boolean) : PostSwitchSpaceAction()
|
||||||
}
|
}
|
||||||
|
|
||||||
fun switchToSpace(context: Context, spaceId: String, postSwitchSpaceAction: PostSwitchSpaceAction)
|
fun switchToSpace(
|
||||||
|
context: Context,
|
||||||
|
spaceId: String,
|
||||||
|
postSwitchSpaceAction: PostSwitchSpaceAction,
|
||||||
|
overriddenSpaceName: String? = null,
|
||||||
|
)
|
||||||
|
|
||||||
fun openSpacePreview(context: Context, spaceId: String)
|
fun openSpacePreview(context: Context, spaceId: String)
|
||||||
|
|
||||||
|
|||||||
@ -104,6 +104,7 @@ class SpaceCreationActivity : SimpleFragmentActivity() {
|
|||||||
is CreateSpaceEvents.FinishSuccess -> {
|
is CreateSpaceEvents.FinishSuccess -> {
|
||||||
setResult(RESULT_OK, Intent().apply {
|
setResult(RESULT_OK, Intent().apply {
|
||||||
putExtra(RESULT_DATA_CREATED_SPACE_ID, it.spaceId)
|
putExtra(RESULT_DATA_CREATED_SPACE_ID, it.spaceId)
|
||||||
|
putExtra(RESULT_DATA_CREATED_SPACE_NAME, it.spaceName)
|
||||||
putExtra(RESULT_DATA_DEFAULT_ROOM_ID, it.defaultRoomId)
|
putExtra(RESULT_DATA_DEFAULT_ROOM_ID, it.defaultRoomId)
|
||||||
putExtra(RESULT_DATA_CREATED_SPACE_IS_JUST_ME, it.topology == SpaceTopology.JustMe)
|
putExtra(RESULT_DATA_CREATED_SPACE_IS_JUST_ME, it.topology == SpaceTopology.JustMe)
|
||||||
})
|
})
|
||||||
@ -159,6 +160,7 @@ class SpaceCreationActivity : SimpleFragmentActivity() {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
private const val RESULT_DATA_CREATED_SPACE_ID = "RESULT_DATA_CREATED_SPACE_ID"
|
private const val RESULT_DATA_CREATED_SPACE_ID = "RESULT_DATA_CREATED_SPACE_ID"
|
||||||
|
private const val RESULT_DATA_CREATED_SPACE_NAME = "RESULT_DATA_CREATED_SPACE_NAME"
|
||||||
private const val RESULT_DATA_DEFAULT_ROOM_ID = "RESULT_DATA_DEFAULT_ROOM_ID"
|
private const val RESULT_DATA_DEFAULT_ROOM_ID = "RESULT_DATA_DEFAULT_ROOM_ID"
|
||||||
private const val RESULT_DATA_CREATED_SPACE_IS_JUST_ME = "RESULT_DATA_CREATED_SPACE_IS_JUST_ME"
|
private const val RESULT_DATA_CREATED_SPACE_IS_JUST_ME = "RESULT_DATA_CREATED_SPACE_IS_JUST_ME"
|
||||||
|
|
||||||
@ -172,6 +174,10 @@ class SpaceCreationActivity : SimpleFragmentActivity() {
|
|||||||
return data?.extras?.getString(RESULT_DATA_CREATED_SPACE_ID)
|
return data?.extras?.getString(RESULT_DATA_CREATED_SPACE_ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getCreatedSpaceName(data: Intent?): String? {
|
||||||
|
return data?.extras?.getString(RESULT_DATA_CREATED_SPACE_NAME)
|
||||||
|
}
|
||||||
|
|
||||||
fun getDefaultRoomId(data: Intent?): String? {
|
fun getDefaultRoomId(data: Intent?): String? {
|
||||||
return data?.extras?.getString(RESULT_DATA_DEFAULT_ROOM_ID)
|
return data?.extras?.getString(RESULT_DATA_DEFAULT_ROOM_ID)
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,7 +25,7 @@ sealed class CreateSpaceEvents : VectorViewEvents {
|
|||||||
object NavigateToAdd3Pid : CreateSpaceEvents()
|
object NavigateToAdd3Pid : CreateSpaceEvents()
|
||||||
object NavigateToChoosePrivateType : CreateSpaceEvents()
|
object NavigateToChoosePrivateType : CreateSpaceEvents()
|
||||||
object Dismiss : CreateSpaceEvents()
|
object Dismiss : CreateSpaceEvents()
|
||||||
data class FinishSuccess(val spaceId: String, val defaultRoomId: String?, val topology: SpaceTopology?) : CreateSpaceEvents()
|
data class FinishSuccess(val spaceId: String, val spaceName: String, val defaultRoomId: String?, val topology: SpaceTopology?) : CreateSpaceEvents()
|
||||||
data class ShowModalError(val errorMessage: String) : CreateSpaceEvents()
|
data class ShowModalError(val errorMessage: String) : CreateSpaceEvents()
|
||||||
object HideModalLoading : CreateSpaceEvents()
|
object HideModalLoading : CreateSpaceEvents()
|
||||||
data class ShowModalLoading(val message: String?) : CreateSpaceEvents()
|
data class ShowModalLoading(val message: String?) : CreateSpaceEvents()
|
||||||
|
|||||||
@ -380,6 +380,7 @@ class CreateSpaceViewModel @AssistedInject constructor(
|
|||||||
_viewEvents.post(
|
_viewEvents.post(
|
||||||
CreateSpaceEvents.FinishSuccess(
|
CreateSpaceEvents.FinishSuccess(
|
||||||
result.spaceId,
|
result.spaceId,
|
||||||
|
spaceName,
|
||||||
result.childIds.firstOrNull(),
|
result.childIds.firstOrNull(),
|
||||||
state.spaceTopology
|
state.spaceTopology
|
||||||
)
|
)
|
||||||
@ -393,6 +394,7 @@ class CreateSpaceViewModel @AssistedInject constructor(
|
|||||||
_viewEvents.post(
|
_viewEvents.post(
|
||||||
CreateSpaceEvents.FinishSuccess(
|
CreateSpaceEvents.FinishSuccess(
|
||||||
result.spaceId,
|
result.spaceId,
|
||||||
|
spaceName,
|
||||||
result.childIds.firstOrNull(),
|
result.childIds.firstOrNull(),
|
||||||
state.spaceTopology
|
state.spaceTopology
|
||||||
)
|
)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user