pull/1446/head
Rick Carlino 2019-09-17 11:21:43 -05:00
parent 0488c36a1c
commit f47f4754f4
1 changed files with 13 additions and 2 deletions

View File

@ -18,6 +18,17 @@ export const DEFAULT_STATE: ConnectionState = {
};
type PingResultPayload = { id: string, at: number };
function maybeTransition(s: ConnectionState, state: "up" | "down", at: number) {
const stats = s.uptime["bot.mqtt"];
const go = () => s.uptime["bot.mqtt"] = { state, at };
if (stats) {
if (stats.state !== state) {
go();
}
} else {
go();
}
}
export let connectivityReducer =
generateReducer<ConnectionState>(DEFAULT_STATE)
.add<{ id: string }>(Actions.PING_START, (s, { payload }) => {
@ -28,12 +39,12 @@ export let connectivityReducer =
})
.add<PingResultPayload>(Actions.PING_OK, (s, { payload }) => {
s.pings = completePing(s.pings, payload.id, payload.at);
s.uptime["bot.mqtt"] = { state: "up", at: payload.at };
maybeTransition(s, "up", payload.at);
return s;
})
.add<PingResultPayload>(Actions.PING_NO, (s, { payload }) => {
s.pings = failPing(s.pings, payload.id);
s.uptime["bot.mqtt"] = { state: "down", at: payload.at };
maybeTransition(s, "down", payload.at);
return s;
})
.add<EdgeStatus>(Actions.NETWORK_EDGE_CHANGE, (s, { payload }) => {