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 }
|