1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

update playback components

This commit is contained in:
Luke Pulverenti 2017-01-05 15:18:09 -05:00
parent d6203e5246
commit 62590fc268
6 changed files with 140 additions and 17 deletions

View file

@ -16,12 +16,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.1.110", "version": "1.1.111",
"_release": "1.1.110", "_release": "1.1.111",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.1.110", "tag": "1.1.111",
"commit": "ab24c293c88728733789d3fcdf127d18294a6148" "commit": "6a58b3a503f28eda5198d662643edaedd921abbd"
}, },
"_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git", "_source": "https://github.com/MediaBrowser/Emby.ApiClient.Javascript.git",
"_target": "^1.1.51", "_target": "^1.1.51",

View file

@ -589,7 +589,8 @@
var url = self.getUrl("socket"); var url = self.getUrl("socket");
url = replaceAll(url, 'emby/socket', 'embywebsocket'); url = replaceAll(url, 'emby/socket', 'embywebsocket');
url = replaceAll(url, 'http', 'ws'); url = replaceAll(url, 'https:', 'wss:');
url = replaceAll(url, 'http:', 'ws:');
url += "?api_key=" + accessToken; url += "?api_key=" + accessToken;
url += "&deviceId=" + deviceId; url += "&deviceId=" + deviceId;

View file

@ -14,12 +14,12 @@
}, },
"devDependencies": {}, "devDependencies": {},
"ignore": [], "ignore": [],
"version": "1.4.445", "version": "1.4.446",
"_release": "1.4.445", "_release": "1.4.446",
"_resolution": { "_resolution": {
"type": "version", "type": "version",
"tag": "1.4.445", "tag": "1.4.446",
"commit": "b071fe73b76ee49a7b99f2688d925318680298a8" "commit": "6b6f1772ecf75132f04e1ef08bcd37a5bcb040d1"
}, },
"_source": "https://github.com/MediaBrowser/emby-webcomponents.git", "_source": "https://github.com/MediaBrowser/emby-webcomponents.git",
"_target": "^1.2.1", "_target": "^1.2.1",

View file

@ -514,8 +514,8 @@
} }
console.log('cc: connect'); console.log('cc: connect');
// Reset this so the next query doesn't make it appear like content is playing. // Reset this so that statechange will fire
self.lastPlayerData = {}; self.lastPlayerData = null;
}); });
events.on(castPlayer, "playbackstart", function (e, data) { events.on(castPlayer, "playbackstart", function (e, data) {
@ -551,10 +551,16 @@
console.log('cc: volumechange'); console.log('cc: volumechange');
var state = self.getPlayerStateInternal(data); var state = self.getPlayerStateInternal(data);
events.trigger(self, "volumechange", [state]); events.trigger(self, "volumechange", [state]);
}); });
events.on(castPlayer, "repeatmodechange", function (e, data) {
console.log('cc: repeatmodechange');
var state = self.getPlayerStateInternal(data);
events.trigger(self, "repeatmodechange", [state]);
});
events.on(castPlayer, "playstatechange", function (e, data) { events.on(castPlayer, "playstatechange", function (e, data) {
console.log('cc: playstatechange'); console.log('cc: playstatechange');
@ -611,6 +617,13 @@
}); });
}; };
self.playPause = function () {
castPlayer.sendMessage({
options: {},
command: 'PlayPause'
});
};
self.pause = function () { self.pause = function () {
castPlayer.sendMessage({ castPlayer.sendMessage({
options: {}, options: {},
@ -696,6 +709,12 @@
return state.PositionTicks; return state.PositionTicks;
}; };
self.duration = function() {
var state = self.lastPlayerData || {};
state = state.NowPlayingItem || {};
return state.RunTimeTicks;
};
self.paused = function () { self.paused = function () {
var state = self.lastPlayerData || {}; var state = self.lastPlayerData || {};
state = state.PlayState || {}; state = state.PlayState || {};
@ -723,6 +742,12 @@
} }
}; };
self.getRepeatMode = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.RepeatMode;
};
self.setRepeatMode = function (mode) { self.setRepeatMode = function (mode) {
castPlayer.sendMessage({ castPlayer.sendMessage({
options: { options: {
@ -809,10 +834,22 @@
}); });
}; };
self.getAudioStreamIndex = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.AudioStreamIndex;
};
self.subtitleTracks = function () { self.subtitleTracks = function () {
return []; return [];
}; };
self.getSubtitleStreamIndex = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.SubtitleStreamIndex;
};
self.setSubtitleStreamIndex = function (index) { self.setSubtitleStreamIndex = function (index) {
castPlayer.sendMessage({ castPlayer.sendMessage({
options: { options: {
@ -822,6 +859,31 @@
}); });
}; };
self.getMaxStreamingBitrate = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.MaxStreamingBitrate;
};
self.setMaxStreamingBitrate = function (bitrate) {
castPlayer.sendMessage({
options: {
bitrate: bitrate
},
command: 'SetMaxStreamingBitrate'
});
};
self.isFullscreen = function () {
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.IsFullscreen;
};
self.toggleFullscreen = function () {
// not supported
};
self.nextTrack = function () { self.nextTrack = function () {
castPlayer.sendMessage({ castPlayer.sendMessage({
options: {}, options: {},
@ -892,18 +954,27 @@
self.getPlayerState = function () { self.getPlayerState = function () {
var result = self.getPlayerStateInternal(); return Promise.resolve(self.getPlayerStateInternal());
return Promise.resolve(result);
}; };
self.lastPlayerData = {}; self.lastPlayerData = {};
self.getPlayerStateInternal = function (data) { self.getPlayerStateInternal = function (data) {
var triggerStateChange = false;
if (data && !self.lastPlayerData) {
triggerStateChange = true;
}
data = data || self.lastPlayerData; data = data || self.lastPlayerData;
self.lastPlayerData = data; self.lastPlayerData = data;
console.log(JSON.stringify(data)); //console.log(JSON.stringify(data));
if (triggerStateChange) {
events.trigger(self, "statechange", [data]);
}
return data; return data;
}; };

View file

@ -813,10 +813,14 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g
if (player) { if (player) {
if (player.playPause) {
return player.playPause();
}
if (player.paused()) { if (player.paused()) {
self.unpause(); return self.unpause(player);
} else { } else {
self.pause(); return self.pause(player);
} }
} }
}; };
@ -1236,6 +1240,7 @@ define(['events', 'datetime', 'appSettings', 'pluginManager', 'userSettings', 'g
state.PlayState.IsMuted = player.isMuted(); state.PlayState.IsMuted = player.isMuted();
state.PlayState.IsPaused = player.paused(); state.PlayState.IsPaused = player.paused();
state.PlayState.RepeatMode = self.getRepeatMode(player); state.PlayState.RepeatMode = self.getRepeatMode(player);
state.PlayState.MaxStreamingBitrate = self.getMaxStreamingBitrate(player);
if (streamInfo) { if (streamInfo) {
state.PlayState.PositionTicks = getCurrentTicks(player); state.PlayState.PositionTicks = getCurrentTicks(player);

View file

@ -107,6 +107,24 @@
}); });
}; };
self.currentTime = function (val) {
if (val != null) {
return self.seek(val);
}
var state = self.lastPlayerData || {};
state = state.PlayState || {};
return state.PositionTicks;
};
self.duration = function () {
};
self.paused = function () {
};
self.pause = function () { self.pause = function () {
sendPlayStateCommand('Pause'); sendPlayStateCommand('Pause');
}; };
@ -150,6 +168,10 @@
return []; return [];
}; };
self.getAudioStreamIndex = function() {
};
self.setAudioStreamIndex = function (index) { self.setAudioStreamIndex = function (index) {
sendCommandByName('SetAudioStreamIndex', { sendCommandByName('SetAudioStreamIndex', {
Index: index Index: index
@ -160,12 +182,36 @@
return []; return [];
}; };
self.getSubtitleStreamIndex = function () {
};
self.setSubtitleStreamIndex = function (index) { self.setSubtitleStreamIndex = function (index) {
sendCommandByName('SetSubtitleStreamIndex', { sendCommandByName('SetSubtitleStreamIndex', {
Index: index Index: index
}); });
}; };
self.getMaxStreamingBitrate = function () {
};
self.setMaxStreamingBitrate = function (bitrate) {
};
self.isFullscreen = function () {
};
self.toggleFullscreen = function () {
};
self.getRepeatMode = function () {
};
self.setRepeatMode = function (mode) { self.setRepeatMode = function (mode) {
sendCommandByName('SetRepeatMode', { sendCommandByName('SetRepeatMode', {