refactor(tui-04): remove ConnectSession and DisconnectSession from Effect hierarchy
This commit is contained in:
@@ -56,7 +56,7 @@ fun main(args: Array<String>) {
|
|||||||
state = next
|
state = next
|
||||||
effects.forEach { effect ->
|
effects.forEach { effect ->
|
||||||
effectScope.launch {
|
effectScope.launch {
|
||||||
EffectDispatcher(ws, effectScope) { runner.quit() }.dispatch(effect)
|
EffectDispatcher(ws) { runner.quit() }.dispatch(effect)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,11 +1,8 @@
|
|||||||
package com.correx.apps.tui.reducer
|
package com.correx.apps.tui.reducer
|
||||||
|
|
||||||
import com.correx.apps.server.protocol.ClientMessage
|
import com.correx.apps.server.protocol.ClientMessage
|
||||||
import com.correx.core.events.types.SessionId
|
|
||||||
|
|
||||||
sealed interface Effect {
|
sealed interface Effect {
|
||||||
data class SendWs(val message: ClientMessage) : Effect
|
data class SendWs(val message: ClientMessage) : Effect
|
||||||
data class ConnectSession(val sessionId: SessionId) : Effect
|
|
||||||
data object DisconnectSession: Effect
|
|
||||||
data object Quit : Effect
|
data object Quit : Effect
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,18 +1,14 @@
|
|||||||
package com.correx.apps.tui.reducer
|
package com.correx.apps.tui.reducer
|
||||||
|
|
||||||
import com.correx.apps.tui.ws.TuiWsClient
|
import com.correx.apps.tui.ws.TuiWsClient
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
|
|
||||||
class EffectDispatcher(
|
class EffectDispatcher(
|
||||||
private val wsClient: TuiWsClient,
|
private val wsClient: TuiWsClient,
|
||||||
private val effectScope: CoroutineScope,
|
|
||||||
private val onQuit: () -> Unit,
|
private val onQuit: () -> Unit,
|
||||||
) {
|
) {
|
||||||
suspend fun dispatch(effect: Effect) {
|
suspend fun dispatch(effect: Effect) {
|
||||||
when (effect) {
|
when (effect) {
|
||||||
is Effect.SendWs -> wsClient.send(effect.message)
|
is Effect.SendWs -> wsClient.send(effect.message)
|
||||||
is Effect.ConnectSession -> wsClient.connectSession(effect.sessionId, effectScope)
|
|
||||||
Effect.DisconnectSession -> wsClient.disconnectSession()
|
|
||||||
Effect.Quit -> onQuit()
|
Effect.Quit -> onQuit()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -131,7 +131,7 @@ object SessionsReducer {
|
|||||||
return sessionState.copy(
|
return sessionState.copy(
|
||||||
sessions = sessionState.sessions + summary,
|
sessions = sessionState.sessions + summary,
|
||||||
selectedId = selected,
|
selectedId = selected,
|
||||||
) to listOf(Effect.ConnectSession(msg.sessionId))
|
) to emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun processToolRejectedMessage(
|
private fun processToolRejectedMessage(
|
||||||
@@ -300,21 +300,19 @@ object SessionsReducer {
|
|||||||
sessions: SessionsState,
|
sessions: SessionsState,
|
||||||
msg: ServerMessage.SessionFailed,
|
msg: ServerMessage.SessionFailed,
|
||||||
clock: () -> Long,
|
clock: () -> Long,
|
||||||
): Pair<SessionsState, List<Effect.DisconnectSession>> = touchSession(
|
): Pair<SessionsState, List<Effect>> = touchSession(
|
||||||
sessions,
|
sessions,
|
||||||
msg.sessionId.value,
|
msg.sessionId.value,
|
||||||
"FAILED",
|
"FAILED",
|
||||||
clock,
|
clock,
|
||||||
) to listOf(Effect.DisconnectSession)
|
) to emptyList()
|
||||||
|
|
||||||
private fun processSessionCompletedMessage(
|
private fun processSessionCompletedMessage(
|
||||||
sessions: SessionsState,
|
sessions: SessionsState,
|
||||||
msg: ServerMessage.SessionCompleted,
|
msg: ServerMessage.SessionCompleted,
|
||||||
clock: () -> Long,
|
clock: () -> Long,
|
||||||
): Pair<SessionsState, List<Effect.DisconnectSession>> =
|
): Pair<SessionsState, List<Effect>> =
|
||||||
touchSession(sessions, msg.sessionId.value, "COMPLETED", clock) to listOf(
|
touchSession(sessions, msg.sessionId.value, "COMPLETED", clock) to emptyList()
|
||||||
Effect.DisconnectSession,
|
|
||||||
)
|
|
||||||
|
|
||||||
private fun processSessionPausedMessage(
|
private fun processSessionPausedMessage(
|
||||||
msg: ServerMessage.SessionPaused,
|
msg: ServerMessage.SessionPaused,
|
||||||
|
|||||||
Reference in New Issue
Block a user