applyEvent method
Applies event to state and returns the next state (bead
libspiffy-mmb). state is never modified; eventador's eventHandler
replaces the aggregate's state with the result once the event has
applied, so an event that fails midway changes nothing.
Implementation
@override
ChannelState applyEvent(ChannelState state, Event event) {
if (event is! ChannelEvent) {
throw ArgumentError('Expected ChannelEvent, got ${event.runtimeType}');
}
return switch (event) {
final ChannelRequestedEvent evt => _applyChannelRequested(state, evt),
final ChannelAcceptedEvent evt => _applyChannelAccepted(state, evt),
final ChannelRejectedEvent evt => _applyChannelRejected(state, evt),
final ServerAcceptanceRecordedEvent evt => _applyServerAcceptanceRecorded(state, evt),
final RefundBuiltEvent evt => _applyRefundBuilt(state, evt),
final RefundCountersignedEvent evt => _applyRefundCountersigned(state, evt),
final FundingBroadcastStartedEvent evt => _applyFundingBroadcastStarted(state, evt),
final FundingBroadcastFailedEvent evt => _applyFundingBroadcastFailed(state, evt),
final FundingRecordedInWalletEvent evt => _applyFundingRecordedInWallet(state, evt),
final ChannelOpenedEvent evt => _applyChannelOpened(state, evt),
final PaymentRecordedEvent evt => _applyPaymentRecorded(state, evt),
final PaymentAcknowledgedEvent evt => _applyPaymentAcknowledged(state, evt),
final PaymentCountersignedEvent evt => _applyPaymentCountersigned(state, evt),
final ReturnLegRecordedInWalletEvent evt =>
_applyReturnLegRecordedInWallet(state, evt),
final ChannelClosingEvent evt => _applyChannelClosing(state, evt),
final ChannelClosedEvent evt => _applyChannelClosed(state, evt),
final RefundClaimedEvent evt => _applyRefundClaimed(state, evt),
final ChannelExpiredEvent evt => _applyChannelExpired(state, evt),
_ => throw ArgumentError('Unknown event type: ${event.runtimeType}'),
};
}