Remove NavigationState.Space.
We do not have the concept of current space.
This commit is contained in:
parent
5cb5f5f1a4
commit
f93dfbdae4
10 changed files with 22 additions and 210 deletions
|
|
@ -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)
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue