diff --git a/app/assets/js/authmanager.js b/app/assets/js/authmanager.js index d20935deb1..5c2fcfd98b 100644 --- a/app/assets/js/authmanager.js +++ b/app/assets/js/authmanager.js @@ -25,7 +25,7 @@ const Mojang = require('./mojang.js') */ exports.addAccount = async function(username, password){ try { - const session = await Mojang.authenticate(username, password, ConfigManager.getClientToken) + const session = await Mojang.authenticate(username, password, ConfigManager.getClientToken()) const ret = ConfigManager.addAuthAccount(session.selectedProfile.id, session.accessToken, username, session.selectedProfile.name) ConfigManager.save() return ret diff --git a/app/assets/js/scripts/login.js b/app/assets/js/scripts/login.js index cde96089ae..ac96a08f30 100644 --- a/app/assets/js/scripts/login.js +++ b/app/assets/js/scripts/login.js @@ -236,6 +236,8 @@ loginButton.addEventListener('click', () => { switchView(VIEWS.login, VIEWS.landing, 500, 500, () => { loginUsername.value = '' loginPassword.value = '' + $('.circle-loader').toggleClass('load-complete') + $('.checkmark').toggle() loginLoading(false) loginButton.innerHTML = loginButton.innerHTML.replace('SUCCESS', 'LOGIN') formDisabled(false) diff --git a/app/assets/js/scripts/overlay.js b/app/assets/js/scripts/overlay.js index 74b2025c8c..450f8cd7cf 100644 --- a/app/assets/js/scripts/overlay.js +++ b/app/assets/js/scripts/overlay.js @@ -248,12 +248,8 @@ function populateServerListings(){ function populateAccountListings(){ const accountsObj = ConfigManager.getAuthAccounts() const accounts = Array.from(Object.keys(accountsObj), v=>accountsObj[v]); - const selectedUUID = ConfigManager.getSelectedAccount().uuid let htmlString = `` for(let i=0; i
${accounts[i].displayName}
diff --git a/app/assets/js/scripts/uibinder.js b/app/assets/js/scripts/uibinder.js index c9bd6372da..2e1555ca1c 100644 --- a/app/assets/js/scripts/uibinder.js +++ b/app/assets/js/scripts/uibinder.js @@ -13,10 +13,10 @@ let fatalStartupError = false // Mapping of each view to their container IDs. const VIEWS = { - landing: 'landingContainer', - login: 'loginContainer', - settings: 'settingsContainer', - welcome: 'welcomeContainer' + landing: '#landingContainer', + login: '#loginContainer', + settings: '#settingsContainer', + welcome: '#welcomeContainer' } // The currently shown view container. @@ -35,10 +35,10 @@ let currentView = VIEWS.landing * fades in. */ function switchView(current, next, currentFadeTime = 500, nextFadeTime = 500, onCurrentFade = () => {}, onNextFade = () => {}){ - currentView = current - $(`#${current}`).fadeOut(currentFadeTime, () => { + currentView = next + $(`${current}`).fadeOut(currentFadeTime, () => { onCurrentFade() - $(`#${next}`).fadeIn(nextFadeTime, () => { + $(`${next}`).fadeIn(nextFadeTime, () => { onNextFade() }) }) @@ -61,12 +61,22 @@ function showMainUI(){ document.body.style.backgroundImage = `url('assets/images/backgrounds/${document.body.getAttribute('bkid')}.jpg')` $('#main').show() - //validateSelectedAccount() + // If this is enabled in a development environment we'll get ratelimited. + // The relaunch frequency is usually far too high. + if(!isDev){ + validateSelectedAccount().then((v) => { + if(v){ + console.log('%c[AuthManager]', 'color: #209b07; font-weight: bold', 'Account access token validated.') + } else { + console.log('%c[AuthManager]', 'color: #a02d2a; font-weight: bold', 'Account access token is invalid.') + } + }) + } if(ConfigManager.isFirstLaunch()){ - $('#welcomeContainer').fadeIn(1000) + $(VIEWS.welcome).fadeIn(1000) } else { - $('#landingContainer').fadeIn(1000) + $(VIEWS.landing).fadeIn(1000) } setTimeout(() => { @@ -123,10 +133,12 @@ async function validateSelectedAccount(){ if(selectedAcc != null){ const val = await AuthManager.validateSelected() if(!val){ + ConfigManager.removeAuthAccount(selectedAcc.uuid) + ConfigManager.save() const accLen = Object.keys(ConfigManager.getAuthAccounts()).length setOverlayContent( 'Failed to Refresh Login', - `We were unable to refresh the login for ${selectedAcc.displayName}. Please ${accLen > 1 ? 'select another account or ' : ''} login again.`, + `We were unable to refresh the login for ${selectedAcc.displayName}. Please ${accLen > 0 ? 'select another account or ' : ''} login again.`, 'Login', 'Select Another Account' ) @@ -137,25 +149,20 @@ async function validateSelectedAccount(){ toggleOverlay(false) }) setDismissHandler(() => { - if(accLen > 2){ + if(accLen > 1){ prepareAccountSelectionList() $('#overlayContent').fadeOut(250, () => { $('#accountSelectContent').fadeIn(250) }) } else { const accountsObj = ConfigManager.getAuthAccounts() - const accounts = Array.from(Object.keys(accountsObj), v=>accountsObj[v]); - const selectedUUID = ConfigManager.getSelectedAccount().uuid - for(let i=0; i accountsObj[v]); + // This function validates the account switch. + setSelectedAccount(accounts[0].uuid) + toggleOverlay(false) } }) - toggleOverlay(true, accLen > 1) + toggleOverlay(true, accLen > 0) } else { return true } @@ -174,7 +181,7 @@ function setSelectedAccount(uuid){ const authAcc = ConfigManager.setSelectedAccount(uuid) ConfigManager.save() updateSelectedAccount(authAcc) - //validateSelectedAccount() + validateSelectedAccount() } // Synchronous Listener diff --git a/app/login.ejs b/app/login.ejs index eed4478643..9ee38070d8 100644 --- a/app/login.ejs +++ b/app/login.ejs @@ -56,14 +56,4 @@ - - \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 221430a2b7..fc496d684f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "westeroscraftlauncher", - "version": "0.0.1-alpha.5", + "version": "0.0.1-alpha.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -96,9 +96,9 @@ } }, "app-builder-bin": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-1.9.5.tgz", - "integrity": "sha512-Uw8jhfww5gYcAvMVgeRZ9cdlXOv+Ivqy4LSbALPMrQrCHHTmfVXETthkhW3cQKdvDo9pRuYn+Q5egSSn04F+Wg==", + "version": "1.9.11", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-1.9.11.tgz", + "integrity": "sha512-GeB00tbuMeRa5NfYpKAnE3m2Ztj5QKa8pdrYKkg2CxZgyQn3iqJEUzy1EWMS6O1a1pX8wJxPLkEzUghg43bXWQ==", "dev": true }, "argparse": { @@ -318,13 +318,13 @@ "integrity": "sha512-83apNb8KK0Se60UE1+4Ukbe3HbfELJ6UlI4ldtOGs7So4KD26orJM8hIY9lxdzP+UpItH1Yh/Y8GUvNFWFFRxA==" }, "builder-util": { - "version": "5.11.1", - "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-5.11.1.tgz", - "integrity": "sha512-fZu9j33B4VMeUJaeb1q2TubKWrk9tAg2Jwpgjstxk7Mu7sNw7v/XB87/EbpNBlE3RPMrXblG6f8asfCRC8IiNQ==", + "version": "5.11.4", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-5.11.4.tgz", + "integrity": "sha512-H6KnYwoeA9tEDz0EQNqridZ5YuJiyCX61TyhOMZmLiMnfJCuVfpyXbfYKUDMTAP8vmvjiAYJhbU8THkiHpKljA==", "dev": true, "requires": { "7zip-bin": "~4.0.2", - "app-builder-bin": "1.9.5", + "app-builder-bin": "1.9.11", "bluebird-lst": "^1.0.5", "builder-util-runtime": "^4.2.1", "chalk": "^2.4.1", @@ -725,6 +725,90 @@ "js-yaml": "^3.11.0", "parse-color": "^1.0.0", "sanitize-filename": "^1.6.1" + }, + "dependencies": { + "app-builder-bin": { + "version": "1.9.5", + "resolved": "https://registry.npmjs.org/app-builder-bin/-/app-builder-bin-1.9.5.tgz", + "integrity": "sha512-Uw8jhfww5gYcAvMVgeRZ9cdlXOv+Ivqy4LSbALPMrQrCHHTmfVXETthkhW3cQKdvDo9pRuYn+Q5egSSn04F+Wg==", + "dev": true + }, + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "electron-builder-lib": { + "version": "20.14.7", + "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.14.7.tgz", + "integrity": "sha512-sPlpRN5Nea9ZK+nwZcD5ZuGoK2uCj2muQ7enc+9BeXPAxnEu4yYmYanICAi4BQqUdusm4yjjnN9uPowlbvCNzA==", + "dev": true, + "requires": { + "7zip-bin": "~4.0.2", + "app-builder-bin": "1.9.5", + "async-exit-hook": "^2.0.1", + "bluebird-lst": "^1.0.5", + "builder-util": "5.11.1", + "builder-util-runtime": "4.2.1", + "chromium-pickle-js": "^0.2.0", + "debug": "^3.1.0", + "ejs": "^2.6.1", + "electron-osx-sign": "0.4.10", + "electron-publish": "20.14.6", + "fs-extra-p": "^4.6.0", + "hosted-git-info": "^2.6.0", + "is-ci": "^1.1.0", + "isbinaryfile": "^3.0.2", + "js-yaml": "^3.11.0", + "lazy-val": "^1.0.3", + "minimatch": "^3.0.4", + "normalize-package-data": "^2.4.0", + "plist": "^3.0.1", + "read-config-file": "3.0.1", + "sanitize-filename": "^1.6.1", + "semver": "^5.5.0", + "stream-json": "^0.6.1", + "temp-file": "^3.1.2" + }, + "dependencies": { + "builder-util": { + "version": "5.11.1", + "resolved": "https://registry.npmjs.org/builder-util/-/builder-util-5.11.1.tgz", + "integrity": "sha512-fZu9j33B4VMeUJaeb1q2TubKWrk9tAg2Jwpgjstxk7Mu7sNw7v/XB87/EbpNBlE3RPMrXblG6f8asfCRC8IiNQ==", + "dev": true, + "requires": { + "7zip-bin": "~4.0.2", + "app-builder-bin": "1.9.5", + "bluebird-lst": "^1.0.5", + "builder-util-runtime": "^4.2.1", + "chalk": "^2.4.1", + "debug": "^3.1.0", + "fs-extra-p": "^4.6.0", + "is-ci": "^1.1.0", + "js-yaml": "^3.11.0", + "lazy-val": "^1.0.3", + "semver": "^5.5.0", + "source-map-support": "^0.5.6", + "stat-mode": "^0.2.2", + "temp-file": "^3.1.2" + } + } + } + }, + "source-map-support": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.6.tgz", + "integrity": "sha512-N4KXEz7jcKqPf2b2vZF11lQIz9W5ZMuUcIOGj243lduidkf2fjkVKJS9vNxVWn3u/uxX38AcE8U9nnH9FPcq+g==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + } } }, "dot-prop": { @@ -789,17 +873,17 @@ } }, "electron-builder": { - "version": "20.14.7", - "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.14.7.tgz", - "integrity": "sha512-f6k0hDmMof3tKn/RqNMfgNYdSl/UNomFTFw7pizbj8v33iVwCqST02Iqo/xpuXWi0KrJNdBlJvbva1DU/vkYkg==", + "version": "20.15.3", + "resolved": "https://registry.npmjs.org/electron-builder/-/electron-builder-20.15.3.tgz", + "integrity": "sha512-hoZN5+2aFSMH60otpzxYqJAOCxWXdYpLm5c/pMSSyK91LACd0UyLx9IMpFXZadavmHTgf5z/94Blf3/+/2LRgw==", "dev": true, "requires": { "bluebird-lst": "^1.0.5", - "builder-util": "5.11.1", + "builder-util": "5.11.4", "builder-util-runtime": "4.2.1", "chalk": "^2.4.1", "dmg-builder": "4.10.1", - "electron-builder-lib": "20.14.7", + "electron-builder-lib": "20.15.3", "electron-download-tf": "4.3.4", "fs-extra-p": "^4.6.0", "is-ci": "^1.1.0", @@ -885,22 +969,22 @@ } }, "electron-builder-lib": { - "version": "20.14.7", - "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.14.7.tgz", - "integrity": "sha512-sPlpRN5Nea9ZK+nwZcD5ZuGoK2uCj2muQ7enc+9BeXPAxnEu4yYmYanICAi4BQqUdusm4yjjnN9uPowlbvCNzA==", + "version": "20.15.3", + "resolved": "https://registry.npmjs.org/electron-builder-lib/-/electron-builder-lib-20.15.3.tgz", + "integrity": "sha512-qOp0zwXCNICEk9IrRR8Q0sTTPvwjQDO2nWzJ/7lMYg7b71GVfF1I3d2IjMgEmrhPzWsF9XAFIWyPduN1aRLYgA==", "dev": true, "requires": { "7zip-bin": "~4.0.2", - "app-builder-bin": "1.9.5", + "app-builder-bin": "1.9.11", "async-exit-hook": "^2.0.1", "bluebird-lst": "^1.0.5", - "builder-util": "5.11.1", + "builder-util": "5.11.4", "builder-util-runtime": "4.2.1", "chromium-pickle-js": "^0.2.0", "debug": "^3.1.0", "ejs": "^2.6.1", "electron-osx-sign": "0.4.10", - "electron-publish": "20.14.6", + "electron-publish": "20.15.0", "fs-extra-p": "^4.6.0", "hosted-git-info": "^2.6.0", "is-ci": "^1.1.0", @@ -925,6 +1009,21 @@ "requires": { "ms": "2.0.0" } + }, + "electron-publish": { + "version": "20.15.0", + "resolved": "https://registry.npmjs.org/electron-publish/-/electron-publish-20.15.0.tgz", + "integrity": "sha512-0v1jXvbRDlPK5S+LzEZqcvuFHLCSWPKmMYmbDwVheeNRjbJjQLlZyQAINVlV+Ky+yhawChEaAF+dyGLvXEyONg==", + "dev": true, + "requires": { + "bluebird-lst": "^1.0.5", + "builder-util": "^5.11.2", + "builder-util-runtime": "^4.2.1", + "chalk": "^2.4.1", + "fs-extra-p": "^4.6.0", + "lazy-val": "^1.0.3", + "mime": "^2.3.1" + } } } }, @@ -2720,18 +2819,18 @@ } }, "uri-js": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.1.tgz", - "integrity": "sha512-jpKCA3HjsBfSDOEgxRDAxQCNyHfCPSbq57PqCkd3gAyBuPb3IWxw54EHncqESznIdqSetHfw3D7ylThu2Kcc9A==", + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz", + "integrity": "sha512-KY9Frmirql91X2Qgjry0Wd4Y+YTdrdZheS8TFwvkbLWf/G5KNJDCh6pKL5OZctEW4+0Baa5idK2ZQuELRwPznQ==", "dev": true, "requires": { "punycode": "^2.1.0" }, "dependencies": { "punycode": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.0.tgz", - "integrity": "sha1-X4Y+3Im5bbCQdLrXlHvwkFbKTn0=", + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true } } @@ -2782,9 +2881,9 @@ } }, "which": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.0.tgz", - "integrity": "sha512-xcJpopdamTuY5duC/KnTTNBraPK54YwpenP4lzxU8H91GudWpFv38u0CKjclE1Wi2EH2EDz5LRcHcKbCIzqGyg==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "requires": { "isexe": "^2.0.0" diff --git a/package.json b/package.json index 6abe34c3c7..f77d5b8313 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "westeroscraftlauncher", - "version": "0.0.1-alpha.5", + "version": "0.0.1-alpha.6", "description": "Custom modded launcher for Westeroscraft", "productName": "WesterosCraft Launcher", "main": "index.js", @@ -45,7 +45,7 @@ }, "devDependencies": { "electron": "^2.0.2", - "electron-builder": "^20.14.7" + "electron-builder": "^20.15.3" }, "build": { "appId": "westeroscraftlauncher",