diff --git a/src/components/playbackSettings/playbackSettings.js b/src/components/playbackSettings/playbackSettings.js
index aa02c1ed22..d351c9e49f 100644
--- a/src/components/playbackSettings/playbackSettings.js
+++ b/src/components/playbackSettings/playbackSettings.js
@@ -10,6 +10,7 @@ import '../../elements/emby-checkbox/emby-checkbox';
import ServerConnections from '../ServerConnections';
import toast from '../toast/toast';
import template from './playbackSettings.template.html';
+import escapeHTML from 'escape-html';
function fillSkipLengths(select) {
const options = [5, 10, 15, 20, 25, 30];
@@ -136,7 +137,7 @@ function showHideQualityFields(context, user, apiClient) {
});
}
-function loadForm(context, user, userSettings, apiClient) {
+function loadForm(context, user, userSettings, systemInfo, apiClient) {
const loggedInUserId = apiClient.getCurrentUserId();
const userId = user.Id;
@@ -186,7 +187,12 @@ function loadForm(context, user, userSettings, apiClient) {
fillChromecastQuality(context.querySelector('.selectChromecastVideoQuality'));
const selectChromecastVersion = context.querySelector('.selectChromecastVersion');
- selectChromecastVersion.value = userSettings.chromecastVersion();
+ let ccAppsHtml = '';
+ for (const app of systemInfo.CastReceiverApplications) {
+ ccAppsHtml += ``;
+ }
+ selectChromecastVersion.innerHTML = ccAppsHtml;
+ selectChromecastVersion.value = user.Configuration.CastReceiverId;
const selectLabelMaxVideoWidth = context.querySelector('.selectLabelMaxVideoWidth');
selectLabelMaxVideoWidth.value = appSettings.maxVideoWidth();
@@ -222,7 +228,7 @@ function saveUser(context, user, userSettingsInstance, apiClient) {
userSettingsInstance.enableNextVideoInfoOverlay(context.querySelector('.chkEnableNextVideoOverlay').checked);
user.Configuration.RememberAudioSelections = context.querySelector('.chkRememberAudioSelections').checked;
user.Configuration.RememberSubtitleSelections = context.querySelector('.chkRememberSubtitleSelections').checked;
- userSettingsInstance.chromecastVersion(context.querySelector('.selectChromecastVersion').value);
+ user.Configuration.CastReceiverId = context.querySelector('.selectChromecastVersion').value;
userSettingsInstance.skipForwardLength(context.querySelector('.selectSkipForwardLength').value);
userSettingsInstance.skipBackLength(context.querySelector('.selectSkipBackLength').value);
@@ -329,10 +335,12 @@ class PlaybackSettings {
const userSettings = self.options.userSettings;
apiClient.getUser(userId).then(user => {
- userSettings.setUserInfo(userId, apiClient).then(() => {
- self.dataLoaded = true;
+ apiClient.getSystemInfo().then(systemInfo => {
+ userSettings.setUserInfo(userId, apiClient).then(() => {
+ self.dataLoaded = true;
- loadForm(context, user, userSettings, apiClient);
+ loadForm(context, user, userSettings, systemInfo, apiClient);
+ });
});
});
}
diff --git a/src/components/playbackSettings/playbackSettings.template.html b/src/components/playbackSettings/playbackSettings.template.html
index 0926737af7..7223b7e7bb 100644
--- a/src/components/playbackSettings/playbackSettings.template.html
+++ b/src/components/playbackSettings/playbackSettings.template.html
@@ -139,10 +139,7 @@
-
+
diff --git a/src/plugins/chromecastPlayer/plugin.js b/src/plugins/chromecastPlayer/plugin.js
index c4c90c15bf..59950b60d2 100644
--- a/src/plugins/chromecastPlayer/plugin.js
+++ b/src/plugins/chromecastPlayer/plugin.js
@@ -58,11 +58,6 @@ const PLAYER_STATE = {
'ERROR': 'ERROR'
};
-// production version registered with google
-// replace this value if you want to test changes on another instance
-const applicationStable = 'F007D354';
-const applicationUnstable = '6F511C87';
-
const messageNamespace = 'urn:x-cast:com.connectsdk';
class CastPlayer {
@@ -98,6 +93,7 @@ class CastPlayer {
initializeCastPlayer() {
const chrome = window.chrome;
if (!chrome) {
+ console.warn('Not initializing chromecast: chrome object is missing');
return;
}
@@ -106,18 +102,25 @@ class CastPlayer {
return;
}
- let applicationID = userSettings.chromecastVersion();
- if (applicationID === 'stable') applicationID = applicationStable;
- if (applicationID === 'unstable') applicationID = applicationUnstable;
+ const apiClient = ServerConnections.currentApiClient();
+ const userId = apiClient.getCurrentUserId();
- // request session
- const sessionRequest = new chrome.cast.SessionRequest(applicationID);
- const apiConfig = new chrome.cast.ApiConfig(sessionRequest,
- this.sessionListener.bind(this),
- this.receiverListener.bind(this));
+ apiClient.getUser(userId).then(user => {
+ const applicationID = user.Configuration.CastReceiverId;
+ if (!applicationID) {
+ console.warn(`Not initializing chromecast: CastReceiverId is ${applicationID}`);
+ return;
+ }
- console.debug(`chromecast.initialize (applicationId=${applicationID})`);
- chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.errorHandler);
+ // request session
+ const sessionRequest = new chrome.cast.SessionRequest(applicationID);
+ const apiConfig = new chrome.cast.ApiConfig(sessionRequest,
+ this.sessionListener.bind(this),
+ this.receiverListener.bind(this));
+
+ console.debug(`chromecast.initialize (applicationId=${applicationID})`);
+ chrome.cast.initialize(apiConfig, this.onInitSuccess.bind(this), this.errorHandler);
+ });
}
/**
@@ -584,7 +587,15 @@ class ChromecastPlayer {
this.isLocalPlayer = false;
this.lastPlayerData = {};
- new CastSenderApi().load().then(initializeChromecast.bind(this));
+ new CastSenderApi().load().then(() => {
+ Events.on(ServerConnections, 'localusersignedin', () => {
+ initializeChromecast.call(this);
+ });
+
+ if (ServerConnections.currentUserId) {
+ initializeChromecast.call(this);
+ }
+ });
}
tryPair() {
diff --git a/src/scripts/settings/userSettings.js b/src/scripts/settings/userSettings.js
index f9fa978b7d..d828eec77c 100644
--- a/src/scripts/settings/userSettings.js
+++ b/src/scripts/settings/userSettings.js
@@ -338,19 +338,6 @@ export class UserSettings {
return this.get('datetimelocale', false);
}
- /**
- * Get or set Chromecast version.
- * @param {string|undefined} val - Chromecast version.
- * @return {string} Chromecast version.
- */
- chromecastVersion(val) {
- if (val !== undefined) {
- return this.set('chromecastVersion', val.toString());
- }
-
- return this.get('chromecastVersion') || 'stable';
- }
-
/**
* Get or set amount of rewind.
* @param {number|undefined} val - Amount of rewind.
@@ -663,7 +650,6 @@ export const detailsBanner = currentSettings.detailsBanner.bind(currentSettings)
export const useEpisodeImagesInNextUpAndResume = currentSettings.useEpisodeImagesInNextUpAndResume.bind(currentSettings);
export const language = currentSettings.language.bind(currentSettings);
export const dateTimeLocale = currentSettings.dateTimeLocale.bind(currentSettings);
-export const chromecastVersion = currentSettings.chromecastVersion.bind(currentSettings);
export const skipBackLength = currentSettings.skipBackLength.bind(currentSettings);
export const skipForwardLength = currentSettings.skipForwardLength.bind(currentSettings);
export const dashboardTheme = currentSettings.dashboardTheme.bind(currentSettings);