/**
* @author [Tristan Valcke]{@link https://github.com/Itee}
*/
import { WebAPIMessage } from './WebAPIMessage'
/**
* @class
*/
class WebAPIMessageProgress extends WebAPIMessage {
static isWebAPIMessageProgress = true
/**
*
* @param loaded
* @param total
*/
constructor ( loaded = 0, total = 0 ) {
super( '_progress' )
this.lengthComputable = false
this.loaded = loaded
this.total = total
}
/**
*
* @returns {*}
*/
get loaded () {
return this._loaded
}
set loaded ( value ) {
this._loaded = value
this._checkIfLengthComputable()
}
/**
*
* @returns {*}
*/
get total () {
return this._total
}
set total ( value ) {
this._total = value
this._checkIfLengthComputable()
}
/**
*
* @private
*/
_checkIfLengthComputable () {
this.lengthComputable = false
if (
this._total > 0 &&
this._total < Number.MAX_SAFE_INTEGER &&
this._loaded >= 0 &&
this._loaded < Number.MAX_SAFE_INTEGER
) {
this.lengthComputable = true
}
}
/**
*
* @returns {{loaded: *, lengthComputable: boolean, total: *}}
*/
toJSON () {
return {
...super.toJSON(),
...{
lengthComputable: this.lengthComputable,
loaded: this.loaded,
total: this.total
}
}
}
}
export { WebAPIMessageProgress }