FlowRedux
FlowRedux copied to clipboard
More unique Exceptions
trafficstars
Please separate your exceptions more uniquely as there is no way of operating special use-cases.
Functions throwing a IllegalStateException:
spec(2x)dispatchcheckSpecBlockSet
Maybe create something like this? Didn't create PR as I'm not sure how you want to adopt things, but here a simple example:
sealed interface FlowReduxException {
data object AlreadyInitialized : IllegalStateException(
"State machine spec has already been set. " +
"It's only allowed to call spec {...} once.",
), FlowReduxException
data object AlreadyCollected : IllegalStateException(
"Can not collect state more than once at the same time. Make sure the" +
"previous collection is cancelled before starting a new one. " +
"Collecting state in parallel would lead to subtle bugs.",
), FlowReduxException
data object NotInitialized : IllegalStateException(
"""
No state machine specs are defined. Did you call spec { ... } in init {...}?
Example usage:
class MyStateMachine : FlowReduxStateMachine<State, Action>(InitialState) {
init{
spec {
inState<FooState> {
on<BarAction> { ... }
}
...
}
}
}
""".trimIndent(),
), FlowReduxException
data class NotCollected(val action: A) : IllegalStateException(
"Cannot dispatch action $action because state Flow of this " +
"FlowReduxStateMachine is not collected yet. " +
"Start collecting the state Flow before dispatching any action.",
), FlowReduxException
}