rx-player
Version:
Canal+ HTML5 Video Player
129 lines (128 loc) • 4.62 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var log_1 = require("../../log");
var task_canceller_1 = require("../../utils/task_canceller");
/**
* Implementation of an `ITextDisplayerInterface` for the Core, that can run in
* a WebWorker (so, in a different thread than the `ITextDisplayer`).
*
* @class CoreTextDisplayerInterface
*/
var CoreTextDisplayerInterface = /** @class */ (function () {
/**
* @param {string} contentId
* @param {Object} messageSender
*/
function CoreTextDisplayerInterface(contentId, messageSender) {
this._contentId = contentId;
this._messageSender = messageSender;
this._queues = { pushTextData: [], remove: [] };
}
/**
* @see ITextDisplayerInterface
*/
CoreTextDisplayerInterface.prototype.pushTextData = function (infos) {
var _this = this;
return new Promise(function (resolve, reject) {
_this._queues.pushTextData.push({ resolve: resolve, reject: reject });
_this._messageSender({
type: "push-text-data" /* CoreMessageType.PushTextData */,
contentId: _this._contentId,
value: infos,
});
});
};
/**
* @see ITextDisplayerInterface
*/
CoreTextDisplayerInterface.prototype.remove = function (start, end) {
var _this = this;
return new Promise(function (resolve, reject) {
_this._queues.remove.push({ resolve: resolve, reject: reject });
_this._messageSender({
type: "remove-text-data" /* CoreMessageType.RemoveTextData */,
contentId: _this._contentId,
value: { start: start, end: end },
});
});
};
/**
* @see ITextDisplayerInterface
*/
CoreTextDisplayerInterface.prototype.reset = function () {
this._messageSender({
type: "reset-text-displayer" /* CoreMessageType.ResetTextDisplayer */,
contentId: this._contentId,
value: null,
});
this._resetCurrentQueue("WorkerTextDisplayerInterface reset");
};
/**
* @see ITextDisplayerInterface
*/
CoreTextDisplayerInterface.prototype.stop = function (reason) {
this._messageSender({
type: "stop-text-displayer" /* CoreMessageType.StopTextDisplayer */,
contentId: this._contentId,
value: null,
});
this._resetCurrentQueue(reason);
};
CoreTextDisplayerInterface.prototype._resetCurrentQueue = function (reason) {
var error = new task_canceller_1.CancellationError("WorkerTextDisplayerInterface queue", reason !== null && reason !== void 0 ? reason : "reset");
this._queues.pushTextData.forEach(function (elt) {
elt.reject(error);
});
this._queues.pushTextData.length = 0;
this._queues.remove.forEach(function (elt) {
elt.reject(error);
});
this._queues.remove.length = 0;
};
/**
* @param {Array.<Object>} ranges
*/
CoreTextDisplayerInterface.prototype.onPushedTrackSuccess = function (ranges) {
var element = this._queues.pushTextData.shift();
if (element === undefined) {
log_1.default.error("text", "pushTextData success for inexistant operation");
return;
}
element.resolve(ranges);
};
/**
* @param {unknown} err
*/
CoreTextDisplayerInterface.prototype.onPushedTrackError = function (err) {
var element = this._queues.pushTextData.shift();
if (element === undefined) {
log_1.default.error("text", "pushTextData error for inexistant operation");
return;
}
element.reject(err);
};
/**
* @param {Array.<Object>} ranges
*/
CoreTextDisplayerInterface.prototype.onRemoveSuccess = function (ranges) {
var element = this._queues.remove.shift();
if (element === undefined) {
log_1.default.error("text", "remove success for inexistant operation");
return;
}
element.resolve(ranges);
};
/**
* @param {unknown} err
*/
CoreTextDisplayerInterface.prototype.onRemoveError = function (err) {
var element = this._queues.remove.shift();
if (element === undefined) {
log_1.default.error("text", "remove error for inexistant operation");
return;
}
element.reject(err);
};
return CoreTextDisplayerInterface;
}());
exports.default = CoreTextDisplayerInterface;