Remove NavigationState.Space.
We do not have the concept of current space.
This commit is contained in:
parent
5065b4c988
commit
83fee6d9ba
10 changed files with 22 additions and 210 deletions
|
|
@ -79,7 +79,6 @@ import io.element.android.libraries.di.SessionScope
|
||||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.MatrixClient
|
import io.element.android.libraries.matrix.api.MatrixClient
|
||||||
import io.element.android.libraries.matrix.api.core.EventId
|
import io.element.android.libraries.matrix.api.core.EventId
|
||||||
import io.element.android.libraries.matrix.api.core.MAIN_SPACE
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
|
import io.element.android.libraries.matrix.api.core.RoomIdOrAlias
|
||||||
import io.element.android.libraries.matrix.api.core.UserId
|
import io.element.android.libraries.matrix.api.core.UserId
|
||||||
|
|
@ -211,8 +210,6 @@ class LoggedInFlowNode(
|
||||||
onCreate = {
|
onCreate = {
|
||||||
analyticsRoomListStateWatcher.start()
|
analyticsRoomListStateWatcher.start()
|
||||||
appNavigationStateService.onNavigateToSession(id, matrixClient.sessionId)
|
appNavigationStateService.onNavigateToSession(id, matrixClient.sessionId)
|
||||||
// TODO We do not support Space yet, so directly navigate to main space
|
|
||||||
appNavigationStateService.onNavigateToSpace(id, MAIN_SPACE)
|
|
||||||
loggedInFlowProcessor.observeEvents(sessionCoroutineScope)
|
loggedInFlowProcessor.observeEvents(sessionCoroutineScope)
|
||||||
matrixClient.sessionVerificationService.setListener(verificationListener)
|
matrixClient.sessionVerificationService.setListener(verificationListener)
|
||||||
mediaPreviewConfigMigration()
|
mediaPreviewConfigMigration()
|
||||||
|
|
@ -242,7 +239,6 @@ class LoggedInFlowNode(
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
onDestroy = {
|
onDestroy = {
|
||||||
appNavigationStateService.onLeavingSpace(id)
|
|
||||||
appNavigationStateService.onLeavingSession(id)
|
appNavigationStateService.onLeavingSession(id)
|
||||||
loggedInFlowProcessor.stopObserving()
|
loggedInFlowProcessor.stopObserving()
|
||||||
matrixClient.sessionVerificationService.setListener(null)
|
matrixClient.sessionVerificationService.setListener(null)
|
||||||
|
|
|
||||||
|
|
@ -9,8 +9,3 @@
|
||||||
package io.element.android.libraries.matrix.api.core
|
package io.element.android.libraries.matrix.api.core
|
||||||
|
|
||||||
typealias SpaceId = RoomId
|
typealias SpaceId = RoomId
|
||||||
|
|
||||||
/**
|
|
||||||
* Value to use when no space is selected by the user.
|
|
||||||
*/
|
|
||||||
val MAIN_SPACE = SpaceId("!mainSpace:local")
|
|
||||||
|
|
|
||||||
|
|
@ -72,17 +72,16 @@ class DefaultNotificationDrawerManager(
|
||||||
when (navigationState) {
|
when (navigationState) {
|
||||||
NavigationState.Root -> {}
|
NavigationState.Root -> {}
|
||||||
is NavigationState.Session -> {}
|
is NavigationState.Session -> {}
|
||||||
is NavigationState.Space -> {}
|
|
||||||
is NavigationState.Room -> {
|
is NavigationState.Room -> {
|
||||||
// Cleanup notification for current room
|
// Cleanup notification for current room
|
||||||
clearMessagesForRoom(
|
clearMessagesForRoom(
|
||||||
sessionId = navigationState.parentSpace.parentSession.sessionId,
|
sessionId = navigationState.parentSession.sessionId,
|
||||||
roomId = navigationState.roomId,
|
roomId = navigationState.roomId,
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
is NavigationState.Thread -> {
|
is NavigationState.Thread -> {
|
||||||
clearMessagesForThread(
|
clearMessagesForThread(
|
||||||
sessionId = navigationState.parentRoom.parentSpace.parentSession.sessionId,
|
sessionId = navigationState.parentRoom.parentSession.sessionId,
|
||||||
roomId = navigationState.parentRoom.roomId,
|
roomId = navigationState.parentRoom.roomId,
|
||||||
threadId = navigationState.threadId,
|
threadId = navigationState.threadId,
|
||||||
)
|
)
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ package io.element.android.services.appnavstate.api
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
|
||||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
import kotlinx.coroutines.flow.StateFlow
|
import kotlinx.coroutines.flow.StateFlow
|
||||||
|
|
||||||
|
|
@ -23,9 +22,6 @@ interface AppNavigationStateService {
|
||||||
fun onNavigateToSession(owner: String, sessionId: SessionId)
|
fun onNavigateToSession(owner: String, sessionId: SessionId)
|
||||||
fun onLeavingSession(owner: String)
|
fun onLeavingSession(owner: String)
|
||||||
|
|
||||||
fun onNavigateToSpace(owner: String, spaceId: SpaceId)
|
|
||||||
fun onLeavingSpace(owner: String)
|
|
||||||
|
|
||||||
fun onNavigateToRoom(owner: String, roomId: RoomId)
|
fun onNavigateToRoom(owner: String, roomId: RoomId)
|
||||||
fun onLeavingRoom(owner: String)
|
fun onLeavingRoom(owner: String)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ package io.element.android.services.appnavstate.api
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
|
||||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -29,17 +28,10 @@ sealed class NavigationState(open val owner: String) {
|
||||||
val sessionId: SessionId,
|
val sessionId: SessionId,
|
||||||
) : NavigationState(owner)
|
) : NavigationState(owner)
|
||||||
|
|
||||||
data class Space(
|
|
||||||
override val owner: String,
|
|
||||||
// Can be fake value, if no space is selected
|
|
||||||
val spaceId: SpaceId,
|
|
||||||
val parentSession: Session,
|
|
||||||
) : NavigationState(owner)
|
|
||||||
|
|
||||||
data class Room(
|
data class Room(
|
||||||
override val owner: String,
|
override val owner: String,
|
||||||
val roomId: RoomId,
|
val roomId: RoomId,
|
||||||
val parentSpace: Space,
|
val parentSession: Session,
|
||||||
) : NavigationState(owner)
|
) : NavigationState(owner)
|
||||||
|
|
||||||
data class Thread(
|
data class Thread(
|
||||||
|
|
|
||||||
|
|
@ -10,26 +10,14 @@ package io.element.android.services.appnavstate.api
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
|
||||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
|
|
||||||
fun NavigationState.currentSessionId(): SessionId? {
|
fun NavigationState.currentSessionId(): SessionId? {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
NavigationState.Root -> null
|
NavigationState.Root -> null
|
||||||
is NavigationState.Session -> sessionId
|
is NavigationState.Session -> sessionId
|
||||||
is NavigationState.Space -> parentSession.sessionId
|
is NavigationState.Room -> parentSession.sessionId
|
||||||
is NavigationState.Room -> parentSpace.parentSession.sessionId
|
is NavigationState.Thread -> parentRoom.parentSession.sessionId
|
||||||
is NavigationState.Thread -> parentRoom.parentSpace.parentSession.sessionId
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun NavigationState.currentSpaceId(): SpaceId? {
|
|
||||||
return when (this) {
|
|
||||||
NavigationState.Root -> null
|
|
||||||
is NavigationState.Session -> null
|
|
||||||
is NavigationState.Space -> spaceId
|
|
||||||
is NavigationState.Room -> parentSpace.spaceId
|
|
||||||
is NavigationState.Thread -> parentRoom.parentSpace.spaceId
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -37,7 +25,6 @@ fun NavigationState.currentRoomId(): RoomId? {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
NavigationState.Root -> null
|
NavigationState.Root -> null
|
||||||
is NavigationState.Session -> null
|
is NavigationState.Session -> null
|
||||||
is NavigationState.Space -> null
|
|
||||||
is NavigationState.Room -> roomId
|
is NavigationState.Room -> roomId
|
||||||
is NavigationState.Thread -> parentRoom.roomId
|
is NavigationState.Thread -> parentRoom.roomId
|
||||||
}
|
}
|
||||||
|
|
@ -47,7 +34,6 @@ fun NavigationState.currentThreadId(): ThreadId? {
|
||||||
return when (this) {
|
return when (this) {
|
||||||
NavigationState.Root -> null
|
NavigationState.Root -> null
|
||||||
is NavigationState.Session -> null
|
is NavigationState.Session -> null
|
||||||
is NavigationState.Space -> null
|
|
||||||
is NavigationState.Room -> null
|
is NavigationState.Room -> null
|
||||||
is NavigationState.Thread -> threadId
|
is NavigationState.Thread -> threadId
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,7 +15,6 @@ import io.element.android.libraries.core.log.logger.LoggerTag
|
||||||
import io.element.android.libraries.di.annotations.AppCoroutineScope
|
import io.element.android.libraries.di.annotations.AppCoroutineScope
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
|
||||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
import io.element.android.services.appnavstate.api.AppForegroundStateService
|
import io.element.android.services.appnavstate.api.AppForegroundStateService
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationState
|
import io.element.android.services.appnavstate.api.AppNavigationState
|
||||||
|
|
@ -62,7 +61,6 @@ class DefaultAppNavigationStateService(
|
||||||
Timber.tag(loggerTag.value).d("Navigating to session $sessionId. Current state: $currentValue")
|
Timber.tag(loggerTag.value).d("Navigating to session $sessionId. Current state: $currentValue")
|
||||||
val newValue: NavigationState.Session = when (currentValue) {
|
val newValue: NavigationState.Session = when (currentValue) {
|
||||||
is NavigationState.Session,
|
is NavigationState.Session,
|
||||||
is NavigationState.Space,
|
|
||||||
is NavigationState.Room,
|
is NavigationState.Room,
|
||||||
is NavigationState.Thread,
|
is NavigationState.Thread,
|
||||||
is NavigationState.Root -> NavigationState.Session(owner, sessionId)
|
is NavigationState.Root -> NavigationState.Session(owner, sessionId)
|
||||||
|
|
@ -70,28 +68,14 @@ class DefaultAppNavigationStateService(
|
||||||
state.getAndUpdate { it.copy(navigationState = newValue) }
|
state.getAndUpdate { it.copy(navigationState = newValue) }
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onNavigateToSpace(owner: String, spaceId: SpaceId) {
|
|
||||||
val currentValue = state.value.navigationState
|
|
||||||
Timber.tag(loggerTag.value).d("Navigating to space $spaceId. Current state: $currentValue")
|
|
||||||
val newValue: NavigationState.Space = when (currentValue) {
|
|
||||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
|
||||||
is NavigationState.Session -> NavigationState.Space(owner, spaceId, currentValue)
|
|
||||||
is NavigationState.Space -> NavigationState.Space(owner, spaceId, currentValue.parentSession)
|
|
||||||
is NavigationState.Room -> NavigationState.Space(owner, spaceId, currentValue.parentSpace.parentSession)
|
|
||||||
is NavigationState.Thread -> NavigationState.Space(owner, spaceId, currentValue.parentRoom.parentSpace.parentSession)
|
|
||||||
}
|
|
||||||
state.getAndUpdate { it.copy(navigationState = newValue) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onNavigateToRoom(owner: String, roomId: RoomId) {
|
override fun onNavigateToRoom(owner: String, roomId: RoomId) {
|
||||||
val currentValue = state.value.navigationState
|
val currentValue = state.value.navigationState
|
||||||
Timber.tag(loggerTag.value).d("Navigating to room $roomId. Current state: $currentValue")
|
Timber.tag(loggerTag.value).d("Navigating to room $roomId. Current state: $currentValue")
|
||||||
val newValue: NavigationState.Room = when (currentValue) {
|
val newValue: NavigationState.Room = when (currentValue) {
|
||||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
is NavigationState.Session -> NavigationState.Room(owner, roomId, currentValue)
|
||||||
is NavigationState.Space -> NavigationState.Room(owner, roomId, currentValue)
|
is NavigationState.Room -> NavigationState.Room(owner, roomId, currentValue.parentSession)
|
||||||
is NavigationState.Room -> NavigationState.Room(owner, roomId, currentValue.parentSpace)
|
is NavigationState.Thread -> NavigationState.Room(owner, roomId, currentValue.parentRoom.parentSession)
|
||||||
is NavigationState.Thread -> NavigationState.Room(owner, roomId, currentValue.parentRoom.parentSpace)
|
|
||||||
}
|
}
|
||||||
state.getAndUpdate { it.copy(navigationState = newValue) }
|
state.getAndUpdate { it.copy(navigationState = newValue) }
|
||||||
}
|
}
|
||||||
|
|
@ -101,8 +85,7 @@ class DefaultAppNavigationStateService(
|
||||||
Timber.tag(loggerTag.value).d("Navigating to thread $threadId. Current state: $currentValue")
|
Timber.tag(loggerTag.value).d("Navigating to thread $threadId. Current state: $currentValue")
|
||||||
val newValue: NavigationState.Thread = when (currentValue) {
|
val newValue: NavigationState.Thread = when (currentValue) {
|
||||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
is NavigationState.Session -> return logError("onNavigateToRoom()")
|
||||||
is NavigationState.Space -> return logError("onNavigateToRoom()")
|
|
||||||
is NavigationState.Room -> NavigationState.Thread(owner, threadId, currentValue)
|
is NavigationState.Room -> NavigationState.Thread(owner, threadId, currentValue)
|
||||||
is NavigationState.Thread -> NavigationState.Thread(owner, threadId, currentValue.parentRoom)
|
is NavigationState.Thread -> NavigationState.Thread(owner, threadId, currentValue.parentRoom)
|
||||||
}
|
}
|
||||||
|
|
@ -115,8 +98,7 @@ class DefaultAppNavigationStateService(
|
||||||
if (!currentValue.assertOwner(owner)) return
|
if (!currentValue.assertOwner(owner)) return
|
||||||
val newValue: NavigationState.Room = when (currentValue) {
|
val newValue: NavigationState.Room = when (currentValue) {
|
||||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
is NavigationState.Session -> return logError("onNavigateToRoom()")
|
||||||
is NavigationState.Space -> return logError("onNavigateToRoom()")
|
|
||||||
is NavigationState.Room -> return logError("onNavigateToThread()")
|
is NavigationState.Room -> return logError("onNavigateToThread()")
|
||||||
is NavigationState.Thread -> currentValue.parentRoom
|
is NavigationState.Thread -> currentValue.parentRoom
|
||||||
}
|
}
|
||||||
|
|
@ -127,26 +109,11 @@ class DefaultAppNavigationStateService(
|
||||||
val currentValue = state.value.navigationState
|
val currentValue = state.value.navigationState
|
||||||
Timber.tag(loggerTag.value).d("Leaving room. Current state: $currentValue")
|
Timber.tag(loggerTag.value).d("Leaving room. Current state: $currentValue")
|
||||||
if (!currentValue.assertOwner(owner)) return
|
if (!currentValue.assertOwner(owner)) return
|
||||||
val newValue: NavigationState.Space = when (currentValue) {
|
|
||||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
|
||||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
|
||||||
is NavigationState.Space -> return logError("onNavigateToRoom()")
|
|
||||||
is NavigationState.Room -> currentValue.parentSpace
|
|
||||||
is NavigationState.Thread -> currentValue.parentRoom.parentSpace
|
|
||||||
}
|
|
||||||
state.getAndUpdate { it.copy(navigationState = newValue) }
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun onLeavingSpace(owner: String) {
|
|
||||||
val currentValue = state.value.navigationState
|
|
||||||
Timber.tag(loggerTag.value).d("Leaving space. Current state: $currentValue")
|
|
||||||
if (!currentValue.assertOwner(owner)) return
|
|
||||||
val newValue: NavigationState.Session = when (currentValue) {
|
val newValue: NavigationState.Session = when (currentValue) {
|
||||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
is NavigationState.Session -> return logError("onNavigateToRoom()")
|
||||||
is NavigationState.Space -> currentValue.parentSession
|
is NavigationState.Room -> currentValue.parentSession
|
||||||
is NavigationState.Room -> currentValue.parentSpace.parentSession
|
is NavigationState.Thread -> currentValue.parentRoom.parentSession
|
||||||
is NavigationState.Thread -> currentValue.parentRoom.parentSpace.parentSession
|
|
||||||
}
|
}
|
||||||
state.getAndUpdate { it.copy(navigationState = newValue) }
|
state.getAndUpdate { it.copy(navigationState = newValue) }
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,15 +13,12 @@ import io.element.android.libraries.matrix.test.A_ROOM_ID
|
||||||
import io.element.android.libraries.matrix.test.A_ROOM_ID_2
|
import io.element.android.libraries.matrix.test.A_ROOM_ID_2
|
||||||
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
import io.element.android.libraries.matrix.test.A_SESSION_ID
|
||||||
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
|
import io.element.android.libraries.matrix.test.A_SESSION_ID_2
|
||||||
import io.element.android.libraries.matrix.test.A_SPACE_ID
|
|
||||||
import io.element.android.libraries.matrix.test.A_SPACE_ID_2
|
|
||||||
import io.element.android.libraries.matrix.test.A_THREAD_ID
|
import io.element.android.libraries.matrix.test.A_THREAD_ID
|
||||||
import io.element.android.libraries.matrix.test.A_THREAD_ID_2
|
import io.element.android.libraries.matrix.test.A_THREAD_ID_2
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
||||||
import io.element.android.services.appnavstate.api.NavigationState
|
import io.element.android.services.appnavstate.api.NavigationState
|
||||||
import io.element.android.services.appnavstate.test.A_ROOM_OWNER
|
import io.element.android.services.appnavstate.test.A_ROOM_OWNER
|
||||||
import io.element.android.services.appnavstate.test.A_SESSION_OWNER
|
import io.element.android.services.appnavstate.test.A_SESSION_OWNER
|
||||||
import io.element.android.services.appnavstate.test.A_SPACE_OWNER
|
|
||||||
import io.element.android.services.appnavstate.test.A_THREAD_OWNER
|
import io.element.android.services.appnavstate.test.A_THREAD_OWNER
|
||||||
import io.element.android.services.appnavstate.test.FakeAppForegroundStateService
|
import io.element.android.services.appnavstate.test.FakeAppForegroundStateService
|
||||||
import kotlinx.coroutines.flow.first
|
import kotlinx.coroutines.flow.first
|
||||||
|
|
@ -33,22 +30,17 @@ class DefaultNavigationStateServiceTest {
|
||||||
private val navigationStateRoot = NavigationState.Root
|
private val navigationStateRoot = NavigationState.Root
|
||||||
private val navigationStateSession = NavigationState.Session(
|
private val navigationStateSession = NavigationState.Session(
|
||||||
owner = A_SESSION_OWNER,
|
owner = A_SESSION_OWNER,
|
||||||
sessionId = A_SESSION_ID
|
sessionId = A_SESSION_ID,
|
||||||
)
|
|
||||||
private val navigationStateSpace = NavigationState.Space(
|
|
||||||
owner = A_SPACE_OWNER,
|
|
||||||
spaceId = A_SPACE_ID,
|
|
||||||
parentSession = navigationStateSession
|
|
||||||
)
|
)
|
||||||
private val navigationStateRoom = NavigationState.Room(
|
private val navigationStateRoom = NavigationState.Room(
|
||||||
owner = A_ROOM_OWNER,
|
owner = A_ROOM_OWNER,
|
||||||
roomId = A_ROOM_ID,
|
roomId = A_ROOM_ID,
|
||||||
parentSpace = navigationStateSpace
|
parentSession = navigationStateSession,
|
||||||
)
|
)
|
||||||
private val navigationStateThread = NavigationState.Thread(
|
private val navigationStateThread = NavigationState.Thread(
|
||||||
owner = A_THREAD_OWNER,
|
owner = A_THREAD_OWNER,
|
||||||
threadId = A_THREAD_ID,
|
threadId = A_THREAD_ID,
|
||||||
parentRoom = navigationStateRoom
|
parentRoom = navigationStateRoom,
|
||||||
)
|
)
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|
@ -57,8 +49,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||||
service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
||||||
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
||||||
|
|
@ -67,8 +57,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
service.onLeavingThread(A_THREAD_OWNER)
|
service.onLeavingThread(A_THREAD_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
||||||
service.onLeavingRoom(A_ROOM_OWNER)
|
service.onLeavingRoom(A_ROOM_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
service.onLeavingSpace(A_SPACE_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||||
service.onLeavingSession(A_SESSION_OWNER)
|
service.onLeavingSession(A_SESSION_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||||
|
|
@ -77,7 +65,7 @@ class DefaultNavigationStateServiceTest {
|
||||||
@Test
|
@Test
|
||||||
fun testFailure() = runTest {
|
fun testFailure() = runTest {
|
||||||
val service = createStateService()
|
val service = createStateService()
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||||
assertThat(service.appNavigationState.value.navigationState).isEqualTo(NavigationState.Root)
|
assertThat(service.appNavigationState.value.navigationState).isEqualTo(NavigationState.Root)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -92,11 +80,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
service.navigateToSession()
|
service.navigateToSession()
|
||||||
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||||
// From space (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
// From room
|
// From room
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToRoom()
|
service.navigateToRoom()
|
||||||
|
|
@ -116,15 +99,10 @@ class DefaultNavigationStateServiceTest {
|
||||||
// From root (no effect)
|
// From root (no effect)
|
||||||
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||||
// From session (no effect)
|
// From session
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToSession()
|
service.navigateToSession()
|
||||||
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
|
||||||
// From space
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
||||||
// From room
|
// From room
|
||||||
service.reset()
|
service.reset()
|
||||||
|
|
@ -139,35 +117,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testOnNavigateToSpace() = runTest {
|
|
||||||
val service = createStateService()
|
|
||||||
// From root (no effect)
|
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
|
||||||
// From session
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSession()
|
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
// From space
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
// Navigate to another space
|
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID_2)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace.copy(spaceId = A_SPACE_ID_2))
|
|
||||||
// From room (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToRoom()
|
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
// From thread (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToThread()
|
|
||||||
service.onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testOnNavigateToSession() = runTest {
|
fun testOnNavigateToSession() = runTest {
|
||||||
val service = createStateService()
|
val service = createStateService()
|
||||||
|
|
@ -180,11 +129,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
// Navigate to another session
|
// Navigate to another session
|
||||||
service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID_2)
|
service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID_2)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession.copy(sessionId = A_SESSION_ID_2))
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession.copy(sessionId = A_SESSION_ID_2))
|
||||||
// From space
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
|
||||||
// From room
|
// From room
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToRoom()
|
service.navigateToRoom()
|
||||||
|
|
@ -208,11 +152,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
service.navigateToSession()
|
service.navigateToSession()
|
||||||
service.onLeavingThread(A_THREAD_OWNER)
|
service.onLeavingThread(A_THREAD_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||||
// From space (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onLeavingThread(A_THREAD_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
// From room (no effect)
|
// From room (no effect)
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToRoom()
|
service.navigateToRoom()
|
||||||
|
|
@ -236,16 +175,11 @@ class DefaultNavigationStateServiceTest {
|
||||||
service.navigateToSession()
|
service.navigateToSession()
|
||||||
service.onLeavingRoom(A_ROOM_OWNER)
|
service.onLeavingRoom(A_ROOM_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||||
// From space (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onLeavingRoom(A_ROOM_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
// From room
|
// From room
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToRoom()
|
service.navigateToRoom()
|
||||||
service.onLeavingRoom(A_ROOM_OWNER)
|
service.onLeavingRoom(A_ROOM_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||||
// From thread (no effect)
|
// From thread (no effect)
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToThread()
|
service.navigateToThread()
|
||||||
|
|
@ -253,34 +187,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateThread)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateThread)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
fun testOnLeavingSpace() = runTest {
|
|
||||||
val service = createStateService()
|
|
||||||
// From root (no effect)
|
|
||||||
service.onLeavingSpace(A_SPACE_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
|
||||||
// From session (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSession()
|
|
||||||
service.onLeavingSpace(A_SPACE_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
|
||||||
// From space
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onLeavingSpace(A_SPACE_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
|
||||||
// From room (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToRoom()
|
|
||||||
service.onLeavingSpace(A_SPACE_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
|
||||||
// From thread (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToThread()
|
|
||||||
service.onLeavingSpace(A_SPACE_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateThread)
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testOnLeavingSession() = runTest {
|
fun testOnLeavingSession() = runTest {
|
||||||
val service = createStateService()
|
val service = createStateService()
|
||||||
|
|
@ -292,11 +198,6 @@ class DefaultNavigationStateServiceTest {
|
||||||
service.navigateToSession()
|
service.navigateToSession()
|
||||||
service.onLeavingSession(A_SESSION_OWNER)
|
service.onLeavingSession(A_SESSION_OWNER)
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||||
// From space (no effect)
|
|
||||||
service.reset()
|
|
||||||
service.navigateToSpace()
|
|
||||||
service.onLeavingSession(A_SESSION_OWNER)
|
|
||||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
|
||||||
// From room (no effect)
|
// From room (no effect)
|
||||||
service.reset()
|
service.reset()
|
||||||
service.navigateToRoom()
|
service.navigateToRoom()
|
||||||
|
|
@ -318,13 +219,8 @@ class DefaultNavigationStateServiceTest {
|
||||||
onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun AppNavigationStateService.navigateToSpace() {
|
|
||||||
navigateToSession()
|
|
||||||
onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun AppNavigationStateService.navigateToRoom() {
|
private fun AppNavigationStateService.navigateToRoom() {
|
||||||
navigateToSpace()
|
navigateToSession()
|
||||||
onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -8,21 +8,17 @@
|
||||||
|
|
||||||
package io.element.android.services.appnavstate.test
|
package io.element.android.services.appnavstate.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.MAIN_SPACE
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
|
||||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
import io.element.android.services.appnavstate.api.NavigationState
|
import io.element.android.services.appnavstate.api.NavigationState
|
||||||
|
|
||||||
const val A_SESSION_OWNER = "aSessionOwner"
|
const val A_SESSION_OWNER = "aSessionOwner"
|
||||||
const val A_SPACE_OWNER = "aSpaceOwner"
|
|
||||||
const val A_ROOM_OWNER = "aRoomOwner"
|
const val A_ROOM_OWNER = "aRoomOwner"
|
||||||
const val A_THREAD_OWNER = "aThreadOwner"
|
const val A_THREAD_OWNER = "aThreadOwner"
|
||||||
|
|
||||||
fun aNavigationState(
|
fun aNavigationState(
|
||||||
sessionId: SessionId? = null,
|
sessionId: SessionId? = null,
|
||||||
spaceId: SpaceId? = MAIN_SPACE,
|
|
||||||
roomId: RoomId? = null,
|
roomId: RoomId? = null,
|
||||||
threadId: ThreadId? = null,
|
threadId: ThreadId? = null,
|
||||||
): NavigationState {
|
): NavigationState {
|
||||||
|
|
@ -30,14 +26,10 @@ fun aNavigationState(
|
||||||
return NavigationState.Root
|
return NavigationState.Root
|
||||||
}
|
}
|
||||||
val session = NavigationState.Session(A_SESSION_OWNER, sessionId)
|
val session = NavigationState.Session(A_SESSION_OWNER, sessionId)
|
||||||
if (spaceId == null) {
|
if (roomId == null) {
|
||||||
return session
|
return session
|
||||||
}
|
}
|
||||||
val space = NavigationState.Space(A_SPACE_OWNER, spaceId, session)
|
val room = NavigationState.Room(A_ROOM_OWNER, roomId, session)
|
||||||
if (roomId == null) {
|
|
||||||
return space
|
|
||||||
}
|
|
||||||
val room = NavigationState.Room(A_ROOM_OWNER, roomId, space)
|
|
||||||
if (threadId == null) {
|
if (threadId == null) {
|
||||||
return room
|
return room
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ package io.element.android.services.appnavstate.test
|
||||||
|
|
||||||
import io.element.android.libraries.matrix.api.core.RoomId
|
import io.element.android.libraries.matrix.api.core.RoomId
|
||||||
import io.element.android.libraries.matrix.api.core.SessionId
|
import io.element.android.libraries.matrix.api.core.SessionId
|
||||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
|
||||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationState
|
import io.element.android.services.appnavstate.api.AppNavigationState
|
||||||
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
||||||
|
|
@ -28,15 +27,9 @@ class FakeAppNavigationStateService(
|
||||||
override fun onNavigateToSession(owner: String, sessionId: SessionId) = Unit
|
override fun onNavigateToSession(owner: String, sessionId: SessionId) = Unit
|
||||||
override fun onLeavingSession(owner: String) = Unit
|
override fun onLeavingSession(owner: String) = Unit
|
||||||
|
|
||||||
override fun onNavigateToSpace(owner: String, spaceId: SpaceId) = Unit
|
|
||||||
|
|
||||||
override fun onLeavingSpace(owner: String) = Unit
|
|
||||||
|
|
||||||
override fun onNavigateToRoom(owner: String, roomId: RoomId) = Unit
|
override fun onNavigateToRoom(owner: String, roomId: RoomId) = Unit
|
||||||
|
|
||||||
override fun onLeavingRoom(owner: String) = Unit
|
override fun onLeavingRoom(owner: String) = Unit
|
||||||
|
|
||||||
override fun onNavigateToThread(owner: String, threadId: ThreadId) = Unit
|
override fun onNavigateToThread(owner: String, threadId: ThreadId) = Unit
|
||||||
|
|
||||||
override fun onLeavingThread(owner: String) = Unit
|
override fun onLeavingThread(owner: String) = Unit
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue