You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
81 lines
1.9 KiB
81 lines
1.9 KiB
import { computed, observable } from "mobx"; |
|
|
|
export class ConnectionState { |
|
/** |
|
* Represents if a client is connected to the sprinklers3 server (eg. via websocket) |
|
* Can be null if there is no client involved |
|
*/ |
|
@observable |
|
clientToServer: boolean | null = null; |
|
|
|
/** |
|
* Represents if the sprinklers3 server is connected to the broker (eg. via mqtt) |
|
* Can be null if there is no broker involved |
|
*/ |
|
@observable |
|
serverToBroker: boolean | null = null; |
|
|
|
/** |
|
* Represents if the device is connected to the broker and we can communicate with it (eg. via mqtt) |
|
* Can be null if there is no device involved |
|
*/ |
|
@observable |
|
brokerToDevice: boolean | null = null; |
|
|
|
/** |
|
* Represents if whoever is trying to access this device has permission to access it. |
|
* Is null if there is no concept of access involved. |
|
*/ |
|
@observable |
|
hasPermission: boolean | null = null; |
|
|
|
@computed |
|
get noPermission() { |
|
return this.hasPermission === false; |
|
} |
|
|
|
@computed |
|
get isAvailable(): boolean { |
|
if (this.hasPermission === false) { |
|
return false; |
|
} |
|
if (this.brokerToDevice != null) { |
|
return true; |
|
} |
|
if (this.serverToBroker != null) { |
|
return this.serverToBroker; |
|
} |
|
if (this.clientToServer != null) { |
|
return this.clientToServer; |
|
} |
|
return false; |
|
} |
|
|
|
@computed |
|
get isDeviceConnected(): boolean | null { |
|
if (this.hasPermission === false) { |
|
return false; |
|
} |
|
if (this.serverToBroker === false || this.clientToServer === false) { |
|
return null; |
|
} |
|
if (this.brokerToDevice != null) { |
|
return this.brokerToDevice; |
|
} |
|
return null; |
|
} |
|
|
|
@computed |
|
get isServerConnected(): boolean | null { |
|
if (this.hasPermission === false) { |
|
return false; |
|
} |
|
if (this.serverToBroker != null) { |
|
return this.serverToBroker; |
|
} |
|
if (this.clientToServer != null) { |
|
return this.brokerToDevice; |
|
} |
|
return null; |
|
} |
|
}
|
|
|