Make the onEventReceived type more explicit

This commit is contained in:
Sven van Heugten 2026-01-03 19:06:58 +01:00
parent 31e9312731
commit ae66114ca1
2 changed files with 5 additions and 3 deletions

View file

@ -22,15 +22,17 @@ type Event =
| ReceivedZigbeeEvent of payload: string | ReceivedZigbeeEvent of payload: string
| TimeChanged of DateTime | TimeChanged of DateTime
type ParseEventError = ParseZigbeeEventError of ParseZigbeeEventError
type State = { Time: DateTime } type State = { Time: DateTime }
let onEventReceived (state: State) (event: Event) = let onEventReceived (state: State) (event: Event) : Result<State * ZigbeeCommand seq, ParseEventError> =
result { result {
let partOfDay = getPartOfDay state.Time let partOfDay = getPartOfDay state.Time
match event with match event with
| ReceivedZigbeeEvent payload -> | ReceivedZigbeeEvent payload ->
let! zigbeeEvent = parseZigbeeEvent payload let! zigbeeEvent = parseZigbeeEvent payload |> Result.mapError ParseZigbeeEventError
return return
state, state,

View file

@ -44,7 +44,7 @@ let private handleEvent (mqttClient: IMqttClient) (logger: ILogger) (state: Stat
do! publishZigbeeCommands mqttClient logger commands do! publishZigbeeCommands mqttClient logger commands
return newState return newState
} }
| Error UnknownType -> async.Return state | Error(ParseZigbeeEventError UnknownType) -> async.Return state
| Error e -> | Error e ->
logger.LogError("Error {Error} while {Event}", e, event) logger.LogError("Error {Error} while {Event}", e, event)
async.Return state async.Return state