diff --git a/CONTRIBUTORS.md b/CONTRIBUTORS.md
index ac53258356..6e085c5853 100644
--- a/CONTRIBUTORS.md
+++ b/CONTRIBUTORS.md
@@ -9,6 +9,7 @@
- [bfayers](https://github.com/bfayers)
- [Bond_009](https://github.com/Bond-009)
- [AnthonyLavado](https://github.com/anthonylavado)
+ - [dkanada](https://github.com/dkanada)
- [sparky8251](https://github.com/sparky8251)
- [LeoVerto](https://github.com/LeoVerto)
- [cvium](https://github.com/cvium)
diff --git a/src/addserver.html b/src/addserver.html
new file mode 100644
index 0000000000..f87e889502
--- /dev/null
+++ b/src/addserver.html
@@ -0,0 +1,22 @@
+
\ No newline at end of file
diff --git a/src/bower_components/emby-webcomponents/router.js b/src/bower_components/emby-webcomponents/router.js
index 3e86eeae05..b5d272c071 100644
--- a/src/bower_components/emby-webcomponents/router.js
+++ b/src/bower_components/emby-webcomponents/router.js
@@ -14,9 +14,6 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
showWelcome: function () {
show('/startup/welcome.html');
},
- showConnectLogin: function () {
- show('/startup/connectlogin.html');
- },
showSettings: function () {
show('/settings/settings.html');
},
@@ -271,14 +268,8 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
// Bounce to the login screen, but not if a password entry fails, obviously
if (!isCurrentAllowed) {
-
showForcedLogoutMessage(globalize.translate('sharedcomponents#AccessRestrictedTryAgainLater'));
-
- if (connectionManager.isLoggedIntoConnect()) {
- appRouter.showConnectLogin();
- } else {
- appRouter.showLocalLogin(apiClient.serverId());
- }
+ appRouter.showLocalLogin(apiClient.serverId());
}
}
@@ -565,7 +556,7 @@ define(['loading', 'globalize', 'events', 'viewManager', 'layoutManager', 'skinM
return;
}
- // This must result in a call to either
+ // This must result in a call to either
// skinManager.loadUserSkin();
// Logout
// Or exit app
diff --git a/src/scripts/addserver.js b/src/scripts/addserver.js
new file mode 100644
index 0000000000..3afb9c68a8
--- /dev/null
+++ b/src/scripts/addserver.js
@@ -0,0 +1,65 @@
+define(["appSettings", "loading", "browser", "emby-linkbutton"], function(appSettings, loading, browser) {
+ "use strict";
+
+ function handleConnectionResult(page, result) {
+ loading.hide();
+ switch (result.State) {
+ case "SignedIn":
+ var apiClient = result.ApiClient;
+ Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient), Dashboard.navigate("home.html");
+ break;
+ case "ServerSignIn":
+ Dashboard.navigate("login.html?serverid=" + result.Servers[0].Id, false, "none");
+ break;
+ case "ServerSelection":
+ Dashboard.navigate("selectserver.html", false, "none");
+ break;
+ case "ServerUpdateNeeded":
+ Dashboard.alert({
+ message: Globalize.translate("ServerUpdateNeeded", 'https://github.com/jellyfin/jellyfin')
+ });
+ break;
+ case "Unavailable":
+ Dashboard.alert({
+ message: Globalize.translate("MessageUnableToConnectToServer"),
+ title: Globalize.translate("HeaderConnectionFailure")
+ });
+ }
+ }
+
+ function submitManualServer(page) {
+ var host = page.querySelector("#txtServerHost").value;
+ var port = page.querySelector("#txtServerPort").value;
+ if (port) {
+ host += ":" + port;
+ }
+
+ loading.show();
+ ConnectionManager.connectToAddress(host, {
+ enableAutoLogin: appSettings.enableAutoLogin()
+ }).then(function(result) {
+ handleConnectionResult(page, result);
+ }, function() {
+ handleConnectionResult(page, {
+ State: "Unavailable"
+ });
+ });
+ }
+
+ return function(view, params) {
+ view.querySelector(".manualServerForm").addEventListener("submit", onManualServerSubmit);
+ view.querySelector(".btnCancelManualServer").addEventListener("click", goBack);
+
+ function onManualServerSubmit(e) {
+ submitManualServer(view);
+ e.preventDefault();
+ return false;
+ }
+
+ function goBack() {
+ require(["appRouter"], function(appRouter) {
+ appRouter.back();
+ });
+ }
+ }
+});
diff --git a/src/scripts/connectlogin.js b/src/scripts/connectlogin.js
deleted file mode 100644
index 8a401a8534..0000000000
--- a/src/scripts/connectlogin.js
+++ /dev/null
@@ -1,168 +0,0 @@
-define(["appSettings", "loading", "browser", "emby-linkbutton"], function(appSettings, loading, browser) {
- "use strict";
-
- function login(page, username, password) {
- loading.show(), appSettings.enableAutoLogin(!0), ConnectionManager.loginToConnect(username, password).then(function() {
- loading.hide(), Dashboard.navigate("selectserver.html")
- }, function() {
- loading.hide(), Dashboard.alert({
- message: Globalize.translate("MessageInvalidUser"),
- title: Globalize.translate("HeaderLoginFailure")
- }), page.querySelector("#txtManualPassword").value = ""
- })
- }
-
- function handleConnectionResult(page, result) {
- switch (loading.hide(), result.State) {
- case "SignedIn":
- var apiClient = result.ApiClient;
- Dashboard.onServerChanged(apiClient.getCurrentUserId(), apiClient.accessToken(), apiClient), Dashboard.navigate("home.html");
- break;
- case "ServerSignIn":
- Dashboard.navigate("login.html?serverid=" + result.Servers[0].Id, !1, "none");
- break;
- case "ServerSelection":
- Dashboard.navigate("selectserver.html", !1, "none");
- break;
- case "ConnectSignIn":
- loadMode(page, "welcome");
- break;
- case "ServerUpdateNeeded":
- Dashboard.alert({
- message: Globalize.translate("ServerUpdateNeeded", 'https://github.com/jellyfin/jellyfin')
- });
- break;
- case "Unavailable":
- Dashboard.alert({
- message: Globalize.translate("MessageUnableToConnectToServer"),
- title: Globalize.translate("HeaderConnectionFailure")
- })
- }
- }
-
- function loadAppConnection(page) {
- loading.show(), ConnectionManager.connect({
- enableAutoLogin: appSettings.enableAutoLogin()
- }).then(function(result) {
- handleConnectionResult(page, result)
- })
- }
-
- function loadPage(page, params) {
- var mode = params.mode || "auto";
- if ("auto" == mode) {
- if (AppInfo.isNativeApp) return void loadAppConnection(page);
- mode = "connect"
- }
- loadMode(page, mode)
- }
-
- function loadMode(page, mode) {
- "welcome" == mode ? (page.querySelector(".connectLoginForm").classList.add("hide"), page.querySelector(".welcomeContainer").classList.remove("hide"), page.querySelector(".manualServerForm").classList.add("hide"), page.querySelector(".signupForm").classList.add("hide")) : "connect" == mode ? (page.querySelector(".connectLoginForm").classList.remove("hide"), page.querySelector(".welcomeContainer").classList.add("hide"), page.querySelector(".manualServerForm").classList.add("hide"), page.querySelector(".signupForm").classList.add("hide")) : "manualserver" == mode ? (page.querySelector(".manualServerForm").classList.remove("hide"), page.querySelector(".connectLoginForm").classList.add("hide"), page.querySelector(".welcomeContainer").classList.add("hide"), page.querySelector(".signupForm").classList.add("hide")) : "signup" == mode && (page.querySelector(".manualServerForm").classList.add("hide"), page.querySelector(".connectLoginForm").classList.add("hide"), page.querySelector(".welcomeContainer").classList.add("hide"), page.querySelector(".signupForm").classList.remove("hide"), initSignup(page))
- }
-
- function skip() {
- Dashboard.navigate("selectserver.html")
- }
-
- function requireCaptcha() {
- return !AppInfo.isNativeApp && 0 == window.location.href.toLowerCase().indexOf("https")
- }
-
- function supportInAppSignup() {
- return AppInfo.isNativeApp || 0 == window.location.href.toLowerCase().indexOf("https")
- }
-
- function initSignup(page) {
- supportInAppSignup() && requireCaptcha() && require(["https://www.google.com/recaptcha/api.js?render=explicit"], function() {
- setTimeout(function() {
- var recaptchaContainer = page.querySelector(".recaptchaContainer");
- greWidgetId = grecaptcha.render(recaptchaContainer, {
- sitekey: "6Le2LAgTAAAAAK06Wvttt_yUnbISTy6q3Azqp9po",
- theme: "dark"
- })
- }, 100)
- })
- }
-
- function submitManualServer(page) {
- var host = page.querySelector("#txtServerHost").value,
- port = page.querySelector("#txtServerPort").value;
- port && (host += ":" + port), loading.show(), ConnectionManager.connectToAddress(host, {
- enableAutoLogin: appSettings.enableAutoLogin()
- }).then(function(result) {
- handleConnectionResult(page, result)
- }, function() {
- handleConnectionResult(page, {
- State: "Unavailable"
- })
- })
- }
-
- function submit(page) {
- login(page, page.querySelector("#txtManualName").value, page.querySelector("#txtManualPassword").value)
- }
- var greWidgetId;
- return function(view, params) {
- function onSubmit(e) {
- return submit(view), e.preventDefault(), !1
- }
-
- function onManualServerSubmit(e) {
- return submitManualServer(view), e.preventDefault(), !1
- }
-
- function onSignupFormSubmit(e) {
- if (!supportInAppSignup()) return e.preventDefault(), !1;
- var page = view,
- greResponse = greWidgetId ? grecaptcha.getResponse(greWidgetId) : null;
- return ConnectionManager.signupForConnect({
- email: page.querySelector("#txtSignupEmail", page).value,
- username: page.querySelector("#txtSignupUsername", page).value,
- password: page.querySelector("#txtSignupPassword", page).value,
- passwordConfirm: page.querySelector("#txtSignupPasswordConfirm", page).value,
- grecaptcha: greResponse
- }).then(function(result) {
- var msg = result.Validated ? Globalize.translate("MessageThankYouForConnectSignUpNoValidation") : Globalize.translate("MessageThankYouForConnectSignUp");
- Dashboard.alert({
- message: msg,
- callback: function() {
- Dashboard.navigate("connectlogin.html?mode=welcome")
- }
- })
- }, function(result) {
- "passwordmatch" == result.errorCode ? Dashboard.alert({
- message: Globalize.translate("ErrorMessagePasswordNotMatchConfirm")
- }) : "USERNAME_IN_USE" == result.errorCode ? Dashboard.alert({
- message: Globalize.translate("ErrorMessageUsernameInUse")
- }) : "EMAIL_IN_USE" == result.errorCode ? Dashboard.alert({
- message: Globalize.translate("ErrorMessageEmailInUse")
- }) : Dashboard.alert({
- message: Globalize.translate("DefaultErrorMessage")
- })
- }), e.preventDefault(), !1
- }
-
- function goBack() {
- require(["appRouter"], function(appRouter) {
- appRouter.back()
- })
- }
- view.querySelector(".btnSkipConnect").addEventListener("click", skip), view.querySelector(".connectLoginForm").addEventListener("submit", onSubmit), view.querySelector(".manualServerForm").addEventListener("submit", onManualServerSubmit), view.querySelector(".signupForm").addEventListener("submit", onSignupFormSubmit), view.querySelector(".btnSignupForConnect").addEventListener("click", function(e) {
- if (supportInAppSignup()) return e.preventDefault(), e.stopPropagation(), Dashboard.navigate("connectlogin.html?mode=signup"), !1
- }), view.querySelector(".btnCancelSignup").addEventListener("click", goBack), view.querySelector(".btnCancelManualServer").addEventListener("click", goBack), view.querySelector(".btnWelcomeNext").addEventListener("click", function() {
- Dashboard.navigate("connectlogin.html?mode=connect")
- });
- var terms = view.querySelector(".terms");
- //FIXME: Link below directs to "jellyfin.media/terms" which is a non existant URL
- terms.innerHTML = Globalize.translate("LoginDisclaimer") + "", AppInfo.isNativeApp ? (terms.classList.add("hide"), view.querySelector(".tvAppInfo").classList.add("hide")) : (terms.classList.remove("hide"), view.querySelector(".tvAppInfo").classList.remove("hide")), view.addEventListener("viewbeforeshow", function() {
- var page = this;
- if (page.querySelector("#txtSignupEmail").value = "", page.querySelector("#txtSignupUsername").value = "", page.querySelector("#txtSignupPassword").value = "", page.querySelector("#txtSignupPasswordConfirm").value = "", browser.safari && AppInfo.isNativeApp) page.querySelector(".embyIntroDownloadMessage").innerHTML = Globalize.translate("EmbyIntroDownloadMessageWithoutLink");
- else {
- page.querySelector(".embyIntroDownloadMessage").innerHTML = Globalize.translate("EmbyIntroDownloadMessage", 'http://jellyfin.media')
- }
- }), view.addEventListener("viewshow", function() {
- loadPage(view, params)
- })
- }
-});
diff --git a/src/scripts/site.js b/src/scripts/site.js
index 070bcb43c5..8c1e6a01a4 100644
--- a/src/scripts/site.js
+++ b/src/scripts/site.js
@@ -375,12 +375,12 @@ var Dashboard = {
autoFocus: !1,
roles: "admin"
}), defineRoute({
- path: "/connectlogin.html",
+ path: "/addserver.html",
dependencies: ["emby-button", "emby-input"],
autoFocus: !1,
anonymous: !0,
startup: !0,
- controller: "scripts/connectlogin"
+ controller: "scripts/addserver"
}), defineRoute({
path: "/dashboard.html",
dependencies: [],
diff --git a/src/selectserver.html b/src/selectserver.html
index 0b41eb5a14..b7832cc147 100644
--- a/src/selectserver.html
+++ b/src/selectserver.html
@@ -13,7 +13,7 @@