Files
mqtt-explorer/backend/src/DataSource/DataSourceState.ts
Thomas Nordquist 61b64a5ac2 Fix authentication
2019-01-15 22:00:35 +01:00

48 lines
958 B
TypeScript

import { EventDispatcher } from '../../../events'
export interface DataSourceState {
connecting: boolean
connected: boolean
error?: string
}
export class DataSourceStateMachine {
public onUpdate = new EventDispatcher<DataSourceState, DataSourceStateMachine>(this)
private state: DataSourceState = {
error: undefined,
connected: false,
connecting: false,
}
public setConnected(connected: boolean) {
this.state = {
connected,
error: undefined,
connecting: false,
}
this.onUpdate.dispatch(this.state)
}
public setError(error: Error) {
this.state = {
error: error.message,
connected: false,
connecting: false,
}
this.onUpdate.dispatch(this.state)
}
public setConnecting() {
this.state = {
error: undefined,
connected: false,
connecting: true,
}
this.onUpdate.dispatch(this.state)
}
public toJSON() {
return this.state
}
}