63 lines
1.4 KiB
JavaScript
63 lines
1.4 KiB
JavaScript
|
"use-strict";
|
|||
|
const { objSerialize, notNullElse } = require("./util.js")
|
|||
|
|
|||
|
/**
|
|||
|
* @public
|
|||
|
* @readonly
|
|||
|
* @enum {number}
|
|||
|
*/
|
|||
|
const EDisplayType = {
|
|||
|
"NATIVE": -1,
|
|||
|
"LANDSCAPE": 0,
|
|||
|
"SQUARE": 1,
|
|||
|
"STRETCH": 2
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @public
|
|||
|
* @constructor
|
|||
|
* @params {string} uri
|
|||
|
* @params {string} type
|
|||
|
* @params {string[]} codecs
|
|||
|
* @params {String} size
|
|||
|
* @params {EDisplayType} [displayType=null] size
|
|||
|
* @returns {RadioPreview}
|
|||
|
*/
|
|||
|
const RadioPreview = function (uri, type, codecs, size, displayType=null) {
|
|||
|
this.uri = uri
|
|||
|
this.type = type
|
|||
|
this.codecs = codecs?.length ? codecs : undefined
|
|||
|
this.size = size.replace(/x/g, "×")
|
|||
|
this.display_type = displayType
|
|||
|
return this
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* @public
|
|||
|
* @params {string} uri
|
|||
|
* @params {string} type
|
|||
|
* @params {string[]} codecs
|
|||
|
* @params {String} size
|
|||
|
* @params {EDisplayType} [displayType=null] size
|
|||
|
* @returns {RadioPreview}
|
|||
|
*/
|
|||
|
RadioPreview.new = (uri, type, codecs, size, displayType) => new RadioPreview(uri, type, codecs, size, displayType)
|
|||
|
|
|||
|
/**
|
|||
|
* @deprecated
|
|||
|
* @params {RadioSource} radioSource
|
|||
|
* @returns {Object}
|
|||
|
*/
|
|||
|
RadioPreview.prototype.serialize = function (radioSource) {
|
|||
|
this.display_type = notNullElse(this.display_type, radioSource.type.startsWith("video/") ? EDisplayType.NATIVE : EDisplayType.SQUARE)
|
|||
|
return objSerialize(this, [
|
|||
|
"display_type",
|
|||
|
"type",
|
|||
|
"codecs",
|
|||
|
"size",
|
|||
|
"uri"
|
|||
|
])
|
|||
|
}
|
|||
|
|
|||
|
module.exports = { RadioPreview, EDisplayType }
|