Sha256: 70aa7f4ab3413c73784d9614cd79c8367ce5167bb6a0d15b7f5d8fe43f607edb

Contents?: true

Size: 914 Bytes

Versions: 67

Compression:

Stored size: 914 Bytes

Contents

/**
 * Calling seek before the media tag is ready causes InvalidState
 * exeption. If this happens, we wait for the next progress event and
 * retry. We resolve a promise once seeking succeeded.
 *
 * @api private
 */
pageflow.AudioPlayer.seekWithInvalidStateHandling = function(player) {
  var originalSeek = player.seek;

  player.seek = function(time) {
    return retryOnProgress(function() {
      originalSeek.call(player, time);
    });
  };

  function retryOnProgress(fn) {
    var tries = 0;

    return new $.Deferred(function(deferred) {
      function tryOrWaitForProgress() {
        tries += 1;

        if (tries >= 50) {
          deferred.reject();
          return;
        }

        try {
          fn();
          deferred.resolve();
        }
        catch(e) {
          player.one('progress', tryOrWaitForProgress);
        }
      }

      tryOrWaitForProgress();
    }).promise();
  }
};

Version data entries

67 entries across 67 versions & 1 rubygems

Version Path
pageflow-14.5.2 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.2 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.1 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.5.1 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.5.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0.rc2 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0.rc1 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0.beta4 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0.beta3 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.4.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0.beta2 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-15.0.0.beta1 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.3.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.2.1 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.2.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.1.1 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.1.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.0.0 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js
pageflow-14.0.0.rc2 app/assets/javascripts/pageflow/audio_player/seek_with_invalid_state_handling.js