Skip to content

Commit 493c21f

Browse files
committed
Swap jQuery deferred to custom prototype
Adds a prototype to replace $.deferred. Minor remapping so that all resolutions return a single object instead of multiple vars.
1 parent eb816bb commit 493c21f

11 files changed

Lines changed: 48 additions & 38 deletions

File tree

scripts/control.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@
7070
var deferred, promise, thisObj, mediaTimes;
7171
mediaTimes = {};
7272

73-
deferred = new $.Deferred();
73+
deferred = new this.defer();
7474
promise = deferred.promise();
7575
thisObj = this;
7676
if (typeof duration !== 'undefined' && typeof elapsed !== 'undefined') {
@@ -95,7 +95,7 @@
9595
// function is called by getMediaTimes, and return value is sanitized there
9696
var deferred, promise, thisObj;
9797

98-
deferred = new $.Deferred();
98+
deferred = new this.defer();
9999
promise = deferred.promise();
100100
thisObj = this;
101101

@@ -143,7 +143,7 @@
143143

144144
var deferred, promise, thisObj;
145145

146-
deferred = new $.Deferred();
146+
deferred = new this.defer();
147147
promise = deferred.promise();
148148
thisObj = this;
149149

@@ -189,7 +189,7 @@
189189
// - 'playing' - Currently playing.
190190

191191
var deferred, promise, thisObj;
192-
deferred = new $.Deferred();
192+
deferred = new this.defer();
193193
promise = deferred.promise();
194194
thisObj = this;
195195

scripts/description.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222

2323
var deferred, promise, thisObj;
2424

25-
deferred = new $.Deferred();
25+
deferred = new this.defer();
2626
promise = deferred.promise();
2727
thisObj = this;
2828

scripts/initialize.js

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -326,7 +326,7 @@
326326

327327
var deferred, promise, thisObj;
328328

329-
deferred = new $.Deferred();
329+
deferred = new this.defer();
330330
promise = deferred.promise();
331331
thisObj = this;
332332

@@ -347,7 +347,7 @@
347347
} else {
348348
// Able Player was initialized with some element other than <video> or <audio>
349349
this.provideFallback();
350-
deferred.fail();
350+
deferred.reject();
351351
return promise;
352352
}
353353

@@ -390,7 +390,7 @@
390390
// Perform one-time setup for this instance of player; called after player is first initialized.
391391
AblePlayer.prototype.setupInstance = function () {
392392

393-
var deferred = new $.Deferred();
393+
var deferred = new this.defer();
394394
var promise = deferred.promise();
395395

396396
if (this.$media.attr('id')) {
@@ -492,7 +492,7 @@
492492

493493
var deferred, promise, thisObj, prefsGroups, i;
494494

495-
deferred = new $.Deferred();
495+
deferred = new this.defer();
496496
promise = deferred.promise();
497497
thisObj = this;
498498

@@ -616,9 +616,9 @@
616616
playerPromise = this.initVimeoPlayer();
617617
}
618618
// After player specific initialization is done, run remaining general initialization.
619-
var deferred = new $.Deferred();
619+
var deferred = new this.defer();
620620
var promise = deferred.promise();
621-
playerPromise.done(
621+
playerPromise.then(
622622
function () { // done/resolved
623623
if (thisObj.useFixedSeekInterval) {
624624
// if fixed seekInterval was not already assigned (using value of data-seek-interval)
@@ -631,7 +631,7 @@
631631
}
632632
deferred.resolve();
633633
}
634-
).fail(function () { // failed
634+
).finally(function () { // failed
635635
deferred.reject();
636636
}
637637
);
@@ -643,7 +643,7 @@
643643

644644
var thisObj, deferred, promise;
645645
thisObj = this;
646-
deferred = new $.Deferred();
646+
deferred = new this.defer();
647647
promise = deferred.promise();
648648

649649
if (this.stenoMode && this.$stenoFrame) {
@@ -769,7 +769,7 @@
769769

770770
AblePlayer.prototype.initHtml5Player = function () {
771771
// Nothing special to do!
772-
var deferred = new $.Deferred();
772+
var deferred = new this.defer();
773773
var promise = deferred.promise();
774774
deferred.resolve();
775775
return promise;

scripts/misc.js

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,15 @@
132132
return Number(Math.floor(value + "e" + decimals) + "e-" + decimals);
133133
};
134134

135+
AblePlayer.prototype.defer = function() {
136+
const self = this;
137+
const promise = new Promise((resolve, reject) => {
138+
self.resolve = resolve;
139+
self.reject = reject;
140+
self.promise = () => promise;
141+
});
142+
}
143+
135144
AblePlayer.prototype.hasAttr = function (object, attribute) {
136145
// surprisingly, there is no hasAttr() function in Jquery as of 3.2.1
137146
// return true if object has attribute; otherwise false

scripts/sign.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122

123123
var thisObj, deferred, promise;
124124
thisObj = this;
125-
deferred = new $.Deferred();
125+
deferred = new this.defer();
126126
promise = deferred.promise();
127127

128128
this.youTubeSignPlayerReady = false;
@@ -155,7 +155,7 @@
155155
// This is called once we're sure the Youtube iFrame API is loaded -- see above
156156
var deferred, promise, thisObj, containerId, ccLoadPolicy, autoplay;
157157

158-
deferred = new $.Deferred();
158+
deferred = new this.defer();
159159
promise = deferred.promise();
160160
thisObj = this;
161161
containerId = this.mediaId + '_youtube_sign';

scripts/track.js

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
thisObj = this;
1010

11-
deferred = new $.Deferred();
11+
deferred = new this.defer();
1212
promise = deferred.promise();
1313

1414
loadingPromises = [];
@@ -53,11 +53,9 @@
5353
var trackLabel = track.label;
5454
var trackDesc = track.desc;
5555

56-
return function (trackSrc, trackText) {
56+
return function (data) {
5757
// these are the two vars returned from loadTextObject
58-
59-
var trackContents = trackText;
60-
var cues = thisObj.parseWebVTT(trackSrc, trackContents).cues;
58+
var cues = thisObj.parseWebVTT(data).cues;
6159
if (thisObj.hasVts) {
6260
// setupVtsTracks() is in vts.js
6361
thisObj.setupVtsTracks(
@@ -66,7 +64,7 @@
6664
trackDesc,
6765
trackLabel,
6866
trackSrc,
69-
trackContents
67+
trackText
7068
);
7169
}
7270
if (kind === 'captions' || kind === 'subtitles') {
@@ -108,7 +106,7 @@
108106
thisObj = this;
109107
hasDefault = false;
110108

111-
deferred = new $.Deferred();
109+
deferred = new this.defer();
112110
promise = deferred.promise();
113111

114112
this.$tracks = this.$media.find('track');
@@ -406,7 +404,7 @@
406404
*/
407405
var deferred, promise, thisObj, $tempDiv;
408406

409-
deferred = new $.Deferred();
407+
deferred = new this.defer();
410408
promise = deferred.promise();
411409
thisObj = this;
412410

@@ -426,7 +424,8 @@
426424
// Load the sanitized content into the $tempDiv
427425
$tempDiv.html(sanitizedTrackText);
428426
// Resolve the promise with the sanitized content
429-
deferred.resolve(src, sanitizedTrackText);
427+
let data = { 'src': src, 'text': sanitizedTrackText };
428+
deferred.resolve(data);
430429
$tempDiv.remove();
431430
})
432431
.catch( error => {

scripts/transcript.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
(function ($) {
22
AblePlayer.prototype.setupTranscript = function () {
3-
var deferred = new $.Deferred();
3+
var deferred = new this.defer();
44
var promise = deferred.promise();
55

66
if (this.usingYouTubeCaptions || this.usingVimeoCaptions || this.hideTranscriptButton ) {

scripts/translation.js

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939

4040
// determine language, then get labels and prompts from corresponding translation var
4141
var deferred, thisObj, supportedLangs, docLang, translationFile, i, similarLangFound;
42-
deferred = $.Deferred();
42+
deferred = new this.defer();
4343
thisObj = this;
4444

4545
supportedLangs = this.getSupportedLangs(); // returns an array

scripts/vimeo.js

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
var thisObj, deferred, promise, containerId, vimeoId, autoplay, options;
66
thisObj = this;
77

8-
deferred = new $.Deferred();
8+
deferred = new this.defer();
99
promise = deferred.promise();
1010

1111
containerId = this.mediaId + '_vimeo';
@@ -115,7 +115,7 @@
115115
AblePlayer.prototype.getVimeoPaused = function () {
116116

117117
var deferred, promise;
118-
deferred = new $.Deferred();
118+
deferred = new this.defer();
119119
promise = deferred.promise();
120120

121121
this.vimeoPlayer.getPaused().then(function (paused) {
@@ -129,7 +129,7 @@
129129
AblePlayer.prototype.getVimeoEnded = function () {
130130

131131
var deferred, promise;
132-
deferred = new $.Deferred();
132+
deferred = new this.defer();
133133
promise = deferred.promise();
134134

135135
this.vimeoPlayer.getEnded().then(function (ended) {
@@ -146,7 +146,7 @@
146146

147147
thisObj = this;
148148

149-
deferred = new $.Deferred();
149+
deferred = new this.defer();
150150
promise = deferred.promise();
151151
promises = [];
152152

@@ -173,7 +173,7 @@
173173
// get data via Vimeo Player API, and push data to this.captions
174174
// Note: Vimeo doesn't expose the caption cues themselves
175175
// so this.captions will only include metadata about caption tracks; not cues
176-
var deferred = new $.Deferred();
176+
var deferred = new this.defer();
177177
var promise = deferred.promise();
178178

179179
var thisObj, i, trackId, isDefaultTrack;

scripts/webvtt.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
(function ($) {
22
// See section 4.1 of dev.w3.org/html5/webvtt for format details.
3-
AblePlayer.prototype.parseWebVTT = function(srcFile,text) {
3+
AblePlayer.prototype.parseWebVTT = function(data) {
44

5+
let srcFile = data.src;
6+
let text = data.text;
57
// Normalize line ends to \n.
68
text = text.replace(/(\r\n|\n|\r)/g,'\n');
79

0 commit comments

Comments
 (0)