Skip to content

Commit

Permalink
fix(FEC-7364): player save values in cache before play request (#52)
Browse files Browse the repository at this point in the history
Attach the local storage manager events only after FIRST_PLAY event.
  • Loading branch information
Dan Ziv authored and OrenMe committed Oct 31, 2017
1 parent d6c0251 commit a72e9c4
Show file tree
Hide file tree
Showing 2 changed files with 42 additions and 31 deletions.
46 changes: 24 additions & 22 deletions src/storage/storage-manager.js
Original file line number Diff line number Diff line change
Expand Up @@ -27,27 +27,29 @@ export default class StorageManager {
*/
static attach(player: Player): void {
StorageManager._logger.debug('Attach local storage');
player.addEventListener(player.Event.MUTE_CHANGE, () => {
StorageWrapper.setItem(StorageManager.StorageKeys.MUTED, player.muted);
});
player.addEventListener(player.Event.VOLUME_CHANGE, () => {
StorageWrapper.setItem(StorageManager.StorageKeys.VOLUME, player.volume);
});
player.addEventListener(player.Event.AUDIO_TRACK_CHANGED, (event) => {
const audioTrack = event.payload.selectedAudioTrack;
StorageWrapper.setItem(StorageManager.StorageKeys.AUDIO_LANG, audioTrack.language);
});
player.addEventListener(player.Event.TEXT_TRACK_CHANGED, (event) => {
const textTrack = event.payload.selectedTextTrack;
StorageWrapper.setItem(StorageManager.StorageKeys.TEXT_LANG, textTrack.language);
});
player.addEventListener(player.Event.TEXT_STYLE_CHANGED, () => {
try {
const textStyle = JSON.stringify(player.textStyle);
StorageWrapper.setItem(StorageManager.StorageKeys.TEXT_STYLE, textStyle);
} catch (e) {
this._logger.error(e.message);
}
player.addEventListener(player.Event.FIRST_PLAY, () => {
player.addEventListener(player.Event.MUTE_CHANGE, () => {
StorageWrapper.setItem(StorageManager.StorageKeys.MUTED, player.muted);
});
player.addEventListener(player.Event.VOLUME_CHANGE, () => {
StorageWrapper.setItem(StorageManager.StorageKeys.VOLUME, player.volume);
});
player.addEventListener(player.Event.AUDIO_TRACK_CHANGED, (event) => {
const audioTrack = event.payload.selectedAudioTrack;
StorageWrapper.setItem(StorageManager.StorageKeys.AUDIO_LANG, audioTrack.language);
});
player.addEventListener(player.Event.TEXT_TRACK_CHANGED, (event) => {
const textTrack = event.payload.selectedTextTrack;
StorageWrapper.setItem(StorageManager.StorageKeys.TEXT_LANG, textTrack.language);
});
player.addEventListener(player.Event.TEXT_STYLE_CHANGED, () => {
try {
const textStyle = JSON.stringify(player.textStyle);
StorageWrapper.setItem(StorageManager.StorageKeys.TEXT_STYLE, textStyle);
} catch (e) {
this._logger.error(e.message);
}
});
});
}

Expand Down Expand Up @@ -93,7 +95,7 @@ export default class StorageManager {

static _getExistingValues(): Object {
let obj = {};
Object.keys(StorageManager.StorageKeys).forEach((key)=>{
Object.keys(StorageManager.StorageKeys).forEach((key) => {
let value = StorageManager.StorageKeys[key];
let item = StorageWrapper.getItem(value);
if (item != null) {
Expand Down
27 changes: 18 additions & 9 deletions test/src/storage/storage-manager.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,31 +67,40 @@ describe('StorageManager', function () {
});
});

it('should attaches listeners', function () {
it('should attaches listeners only after FIRST_PLAY event', function () {
sandbox.stub(StorageWrapper, '_testForLocalStorage').callsFake(() => {
StorageWrapper._isLocalStorageAvailable = true;
});
let fakePlayer = {
listeners: [],
listenersHandlers: {},
Event: {
MUTE_CHANGE: 'mutechange',
VOLUME_CHANGE: 'volumechange',
AUDIO_TRACK_CHANGED: 'audiotrackchanged',
TEXT_TRACK_CHANGED: 'texttrackchanged',
TEXT_STYLE_CHANGED: 'textstylechanged'
TEXT_STYLE_CHANGED: 'textstylechanged',
FIRST_PLAY: 'firstplay'
},
addEventListener: function (eventName) {
addEventListener: function (eventName, callback) {
this.listeners.push(eventName);
this.listenersHandlers[eventName] = callback;
}
};
StorageManager.attach(fakePlayer);
fakePlayer.listeners.should.have.length.of(5);
fakePlayer.listeners.should.have.length.of(1);
fakePlayer.listeners.should.deep.equal([
'mutechange',
'volumechange',
'audiotrackchanged',
'texttrackchanged',
'textstylechanged'
fakePlayer.Event.FIRST_PLAY
]);
fakePlayer.listenersHandlers[fakePlayer.Event.FIRST_PLAY]();
fakePlayer.listeners.should.have.length.of(6);
fakePlayer.listeners.should.deep.equal([
fakePlayer.Event.FIRST_PLAY,
fakePlayer.Event.MUTE_CHANGE,
fakePlayer.Event.VOLUME_CHANGE,
fakePlayer.Event.AUDIO_TRACK_CHANGED,
fakePlayer.Event.TEXT_TRACK_CHANGED,
fakePlayer.Event.TEXT_STYLE_CHANGED
]);
});
});

0 comments on commit a72e9c4

Please sign in to comment.