Remove NavigationState.Space.
We do not have the concept of current space.
This commit is contained in:
@@ -79,7 +79,6 @@ import io.element.android.libraries.di.SessionScope
|
||||
import io.element.android.libraries.di.annotations.SessionCoroutineScope
|
||||
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.MAIN_SPACE
|
||||
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.UserId
|
||||
@@ -211,8 +210,6 @@ class LoggedInFlowNode(
|
||||
onCreate = {
|
||||
analyticsRoomListStateWatcher.start()
|
||||
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)
|
||||
matrixClient.sessionVerificationService.setListener(verificationListener)
|
||||
mediaPreviewConfigMigration()
|
||||
@@ -242,7 +239,6 @@ class LoggedInFlowNode(
|
||||
}
|
||||
},
|
||||
onDestroy = {
|
||||
appNavigationStateService.onLeavingSpace(id)
|
||||
appNavigationStateService.onLeavingSession(id)
|
||||
loggedInFlowProcessor.stopObserving()
|
||||
matrixClient.sessionVerificationService.setListener(null)
|
||||
|
||||
@@ -9,8 +9,3 @@
|
||||
package io.element.android.libraries.matrix.api.core
|
||||
|
||||
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) {
|
||||
NavigationState.Root -> {}
|
||||
is NavigationState.Session -> {}
|
||||
is NavigationState.Space -> {}
|
||||
is NavigationState.Room -> {
|
||||
// Cleanup notification for current room
|
||||
clearMessagesForRoom(
|
||||
sessionId = navigationState.parentSpace.parentSession.sessionId,
|
||||
sessionId = navigationState.parentSession.sessionId,
|
||||
roomId = navigationState.roomId,
|
||||
)
|
||||
}
|
||||
is NavigationState.Thread -> {
|
||||
clearMessagesForThread(
|
||||
sessionId = navigationState.parentRoom.parentSpace.parentSession.sessionId,
|
||||
sessionId = navigationState.parentRoom.parentSession.sessionId,
|
||||
roomId = navigationState.parentRoom.roomId,
|
||||
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.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
import kotlinx.coroutines.flow.StateFlow
|
||||
|
||||
@@ -23,9 +22,6 @@ interface AppNavigationStateService {
|
||||
fun onNavigateToSession(owner: String, sessionId: SessionId)
|
||||
fun onLeavingSession(owner: String)
|
||||
|
||||
fun onNavigateToSpace(owner: String, spaceId: SpaceId)
|
||||
fun onLeavingSpace(owner: String)
|
||||
|
||||
fun onNavigateToRoom(owner: String, roomId: RoomId)
|
||||
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.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
|
||||
/**
|
||||
@@ -29,17 +28,10 @@ sealed class NavigationState(open val owner: String) {
|
||||
val sessionId: SessionId,
|
||||
) : 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(
|
||||
override val owner: String,
|
||||
val roomId: RoomId,
|
||||
val parentSpace: Space,
|
||||
val parentSession: Session,
|
||||
) : NavigationState(owner)
|
||||
|
||||
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.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
|
||||
fun NavigationState.currentSessionId(): SessionId? {
|
||||
return when (this) {
|
||||
NavigationState.Root -> null
|
||||
is NavigationState.Session -> sessionId
|
||||
is NavigationState.Space -> parentSession.sessionId
|
||||
is NavigationState.Room -> parentSpace.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
|
||||
is NavigationState.Room -> parentSession.sessionId
|
||||
is NavigationState.Thread -> parentRoom.parentSession.sessionId
|
||||
}
|
||||
}
|
||||
|
||||
@@ -37,7 +25,6 @@ fun NavigationState.currentRoomId(): RoomId? {
|
||||
return when (this) {
|
||||
NavigationState.Root -> null
|
||||
is NavigationState.Session -> null
|
||||
is NavigationState.Space -> null
|
||||
is NavigationState.Room -> roomId
|
||||
is NavigationState.Thread -> parentRoom.roomId
|
||||
}
|
||||
@@ -47,7 +34,6 @@ fun NavigationState.currentThreadId(): ThreadId? {
|
||||
return when (this) {
|
||||
NavigationState.Root -> null
|
||||
is NavigationState.Session -> null
|
||||
is NavigationState.Space -> null
|
||||
is NavigationState.Room -> null
|
||||
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.matrix.api.core.RoomId
|
||||
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.services.appnavstate.api.AppForegroundStateService
|
||||
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")
|
||||
val newValue: NavigationState.Session = when (currentValue) {
|
||||
is NavigationState.Session,
|
||||
is NavigationState.Space,
|
||||
is NavigationState.Room,
|
||||
is NavigationState.Thread,
|
||||
is NavigationState.Root -> NavigationState.Session(owner, sessionId)
|
||||
@@ -70,28 +68,14 @@ class DefaultAppNavigationStateService(
|
||||
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) {
|
||||
val currentValue = state.value.navigationState
|
||||
Timber.tag(loggerTag.value).d("Navigating to room $roomId. Current state: $currentValue")
|
||||
val newValue: NavigationState.Room = when (currentValue) {
|
||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
||||
is NavigationState.Space -> NavigationState.Room(owner, roomId, currentValue)
|
||||
is NavigationState.Room -> NavigationState.Room(owner, roomId, currentValue.parentSpace)
|
||||
is NavigationState.Thread -> NavigationState.Room(owner, roomId, currentValue.parentRoom.parentSpace)
|
||||
is NavigationState.Session -> NavigationState.Room(owner, roomId, currentValue)
|
||||
is NavigationState.Room -> NavigationState.Room(owner, roomId, currentValue.parentSession)
|
||||
is NavigationState.Thread -> NavigationState.Room(owner, roomId, currentValue.parentRoom.parentSession)
|
||||
}
|
||||
state.getAndUpdate { it.copy(navigationState = newValue) }
|
||||
}
|
||||
@@ -101,8 +85,7 @@ class DefaultAppNavigationStateService(
|
||||
Timber.tag(loggerTag.value).d("Navigating to thread $threadId. Current state: $currentValue")
|
||||
val newValue: NavigationState.Thread = when (currentValue) {
|
||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
||||
is NavigationState.Space -> return logError("onNavigateToRoom()")
|
||||
is NavigationState.Session -> return logError("onNavigateToRoom()")
|
||||
is NavigationState.Room -> NavigationState.Thread(owner, threadId, currentValue)
|
||||
is NavigationState.Thread -> NavigationState.Thread(owner, threadId, currentValue.parentRoom)
|
||||
}
|
||||
@@ -115,8 +98,7 @@ class DefaultAppNavigationStateService(
|
||||
if (!currentValue.assertOwner(owner)) return
|
||||
val newValue: NavigationState.Room = when (currentValue) {
|
||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
||||
is NavigationState.Space -> return logError("onNavigateToRoom()")
|
||||
is NavigationState.Session -> return logError("onNavigateToRoom()")
|
||||
is NavigationState.Room -> return logError("onNavigateToThread()")
|
||||
is NavigationState.Thread -> currentValue.parentRoom
|
||||
}
|
||||
@@ -127,26 +109,11 @@ class DefaultAppNavigationStateService(
|
||||
val currentValue = state.value.navigationState
|
||||
Timber.tag(loggerTag.value).d("Leaving room. Current state: $currentValue")
|
||||
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) {
|
||||
NavigationState.Root -> return logError("onNavigateToSession()")
|
||||
is NavigationState.Session -> return logError("onNavigateToSpace()")
|
||||
is NavigationState.Space -> currentValue.parentSession
|
||||
is NavigationState.Room -> currentValue.parentSpace.parentSession
|
||||
is NavigationState.Thread -> currentValue.parentRoom.parentSpace.parentSession
|
||||
is NavigationState.Session -> return logError("onNavigateToRoom()")
|
||||
is NavigationState.Room -> currentValue.parentSession
|
||||
is NavigationState.Thread -> currentValue.parentRoom.parentSession
|
||||
}
|
||||
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_SESSION_ID
|
||||
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_2
|
||||
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
||||
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_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.FakeAppForegroundStateService
|
||||
import kotlinx.coroutines.flow.first
|
||||
@@ -33,22 +30,17 @@ class DefaultNavigationStateServiceTest {
|
||||
private val navigationStateRoot = NavigationState.Root
|
||||
private val navigationStateSession = NavigationState.Session(
|
||||
owner = A_SESSION_OWNER,
|
||||
sessionId = A_SESSION_ID
|
||||
)
|
||||
private val navigationStateSpace = NavigationState.Space(
|
||||
owner = A_SPACE_OWNER,
|
||||
spaceId = A_SPACE_ID,
|
||||
parentSession = navigationStateSession
|
||||
sessionId = A_SESSION_ID,
|
||||
)
|
||||
private val navigationStateRoom = NavigationState.Room(
|
||||
owner = A_ROOM_OWNER,
|
||||
roomId = A_ROOM_ID,
|
||||
parentSpace = navigationStateSpace
|
||||
parentSession = navigationStateSession,
|
||||
)
|
||||
private val navigationStateThread = NavigationState.Thread(
|
||||
owner = A_THREAD_OWNER,
|
||||
threadId = A_THREAD_ID,
|
||||
parentRoom = navigationStateRoom
|
||||
parentRoom = navigationStateRoom,
|
||||
)
|
||||
|
||||
@Test
|
||||
@@ -57,8 +49,6 @@ class DefaultNavigationStateServiceTest {
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||
service.onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
||||
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)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
||||
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
||||
@@ -67,8 +57,6 @@ class DefaultNavigationStateServiceTest {
|
||||
service.onLeavingThread(A_THREAD_OWNER)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoom)
|
||||
service.onLeavingRoom(A_ROOM_OWNER)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
||||
service.onLeavingSpace(A_SPACE_OWNER)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||
service.onLeavingSession(A_SESSION_OWNER)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||
@@ -77,7 +65,7 @@ class DefaultNavigationStateServiceTest {
|
||||
@Test
|
||||
fun testFailure() = runTest {
|
||||
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)
|
||||
}
|
||||
|
||||
@@ -92,11 +80,6 @@ class DefaultNavigationStateServiceTest {
|
||||
service.navigateToSession()
|
||||
service.onNavigateToThread(A_THREAD_OWNER, A_THREAD_ID)
|
||||
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
|
||||
service.reset()
|
||||
service.navigateToRoom()
|
||||
@@ -116,15 +99,10 @@ class DefaultNavigationStateServiceTest {
|
||||
// From root (no effect)
|
||||
service.onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateRoot)
|
||||
// From session (no effect)
|
||||
// From session
|
||||
service.reset()
|
||||
service.navigateToSession()
|
||||
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)
|
||||
// From room
|
||||
service.reset()
|
||||
@@ -139,35 +117,6 @@ class DefaultNavigationStateServiceTest {
|
||||
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
|
||||
fun testOnNavigateToSession() = runTest {
|
||||
val service = createStateService()
|
||||
@@ -180,11 +129,6 @@ class DefaultNavigationStateServiceTest {
|
||||
// Navigate to another session
|
||||
service.onNavigateToSession(A_SESSION_OWNER, 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
|
||||
service.reset()
|
||||
service.navigateToRoom()
|
||||
@@ -208,11 +152,6 @@ class DefaultNavigationStateServiceTest {
|
||||
service.navigateToSession()
|
||||
service.onLeavingThread(A_THREAD_OWNER)
|
||||
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)
|
||||
service.reset()
|
||||
service.navigateToRoom()
|
||||
@@ -236,16 +175,11 @@ class DefaultNavigationStateServiceTest {
|
||||
service.navigateToSession()
|
||||
service.onLeavingRoom(A_ROOM_OWNER)
|
||||
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
|
||||
service.reset()
|
||||
service.navigateToRoom()
|
||||
service.onLeavingRoom(A_ROOM_OWNER)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSpace)
|
||||
assertThat(service.appNavigationState.first().navigationState).isEqualTo(navigationStateSession)
|
||||
// From thread (no effect)
|
||||
service.reset()
|
||||
service.navigateToThread()
|
||||
@@ -253,34 +187,6 @@ class DefaultNavigationStateServiceTest {
|
||||
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
|
||||
fun testOnLeavingSession() = runTest {
|
||||
val service = createStateService()
|
||||
@@ -292,11 +198,6 @@ class DefaultNavigationStateServiceTest {
|
||||
service.navigateToSession()
|
||||
service.onLeavingSession(A_SESSION_OWNER)
|
||||
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)
|
||||
service.reset()
|
||||
service.navigateToRoom()
|
||||
@@ -318,13 +219,8 @@ class DefaultNavigationStateServiceTest {
|
||||
onNavigateToSession(A_SESSION_OWNER, A_SESSION_ID)
|
||||
}
|
||||
|
||||
private fun AppNavigationStateService.navigateToSpace() {
|
||||
navigateToSession()
|
||||
onNavigateToSpace(A_SPACE_OWNER, A_SPACE_ID)
|
||||
}
|
||||
|
||||
private fun AppNavigationStateService.navigateToRoom() {
|
||||
navigateToSpace()
|
||||
navigateToSession()
|
||||
onNavigateToRoom(A_ROOM_OWNER, A_ROOM_ID)
|
||||
}
|
||||
|
||||
|
||||
@@ -8,21 +8,17 @@
|
||||
|
||||
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.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
import io.element.android.services.appnavstate.api.NavigationState
|
||||
|
||||
const val A_SESSION_OWNER = "aSessionOwner"
|
||||
const val A_SPACE_OWNER = "aSpaceOwner"
|
||||
const val A_ROOM_OWNER = "aRoomOwner"
|
||||
const val A_THREAD_OWNER = "aThreadOwner"
|
||||
|
||||
fun aNavigationState(
|
||||
sessionId: SessionId? = null,
|
||||
spaceId: SpaceId? = MAIN_SPACE,
|
||||
roomId: RoomId? = null,
|
||||
threadId: ThreadId? = null,
|
||||
): NavigationState {
|
||||
@@ -30,14 +26,10 @@ fun aNavigationState(
|
||||
return NavigationState.Root
|
||||
}
|
||||
val session = NavigationState.Session(A_SESSION_OWNER, sessionId)
|
||||
if (spaceId == null) {
|
||||
if (roomId == null) {
|
||||
return session
|
||||
}
|
||||
val space = NavigationState.Space(A_SPACE_OWNER, spaceId, session)
|
||||
if (roomId == null) {
|
||||
return space
|
||||
}
|
||||
val room = NavigationState.Room(A_ROOM_OWNER, roomId, space)
|
||||
val room = NavigationState.Room(A_ROOM_OWNER, roomId, session)
|
||||
if (threadId == null) {
|
||||
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.SessionId
|
||||
import io.element.android.libraries.matrix.api.core.SpaceId
|
||||
import io.element.android.libraries.matrix.api.core.ThreadId
|
||||
import io.element.android.services.appnavstate.api.AppNavigationState
|
||||
import io.element.android.services.appnavstate.api.AppNavigationStateService
|
||||
@@ -28,15 +27,9 @@ class FakeAppNavigationStateService(
|
||||
override fun onNavigateToSession(owner: String, sessionId: SessionId) = 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 onLeavingRoom(owner: String) = Unit
|
||||
|
||||
override fun onNavigateToThread(owner: String, threadId: ThreadId) = Unit
|
||||
|
||||
override fun onLeavingThread(owner: String) = Unit
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user