Added mojang account validation UI.

Other minor fixes included. Bumped version from dev to alpha. Testing to begin soon.
This commit is contained in:
Daniel Scalzi
2018-05-09 22:23:37 -04:00
parent 15a83a7736
commit f1a98f2d45
11 changed files with 295 additions and 31 deletions

View File

@@ -4,12 +4,54 @@
*/
// Requirements
const path = require('path')
const AuthManager = require('./assets/js/authmanager.js')
const {AssetGuard} = require('./assets/js/assetguard.js')
const ConfigManager = require('./assets/js/configmanager.js')
let rscShouldLoad = false
let fatalStartupError = false
// Mapping of each view to their container IDs.
const VIEWS = {
landing: 'landingContainer',
login: 'loginContainer',
welcome: 'welcomeContainer'
}
// The currently shown view container.
let currentView = VIEWS.landing
/**
* Switch launcher views.
*
* @param {string} current The ID of the current view container.
* @param {*} next The ID of the next view container.
* @param {*} currentFadeTime Optional. The fade out time for the current view.
* @param {*} nextFadeTime Optional. The fade in time for the next view.
* @param {*} onCurrentFade Optional. Callback function to execute when the current
* view fades out.
* @param {*} onNextFade Optional. Callback function to execute when the next view
* fades in.
*/
function switchView(current, next, currentFadeTime = 500, nextFadeTime = 500, onCurrentFade = () => {}, onNextFade = () => {}){
currentView = current
$(`#${current}`).fadeOut(currentFadeTime, () => {
onCurrentFade()
$(`#${next}`).fadeIn(nextFadeTime, () => {
onNextFade()
})
})
}
/**
* Get the currently shown view container.
*
* @returns {string} The currently shown view container.
*/
function getCurrentView(){
return currentView
}
function showMainUI(){
updateSelectedServer(AssetGuard.getServerById(ConfigManager.getSelectedServer()).name)
refreshServerStatus()
@@ -18,6 +60,8 @@ function showMainUI(){
document.body.style.backgroundImage = `url('assets/images/backgrounds/${document.body.getAttribute('bkid')}.jpg')`
$('#main').show()
//validateSelectedAccount()
if(ConfigManager.isFirstLaunch()){
$('#welcomeContainer').fadeIn(1000)
} else {
@@ -25,7 +69,7 @@ function showMainUI(){
}
setTimeout(() => {
$('#loadingContainer').fadeOut(750, () => {
$('#loadingContainer').fadeOut(500, () => {
$('#loadSpinnerImage').removeClass('rotating')
})
}, 500)
@@ -70,6 +114,59 @@ function refreshDistributionIndex(remote, onSuccess, onError){
}
}
async function validateSelectedAccount(){
const selectedAcc = ConfigManager.getSelectedAccount()
if(selectedAcc != null){
const val = await AuthManager.validateSelected()
if(!val){
const accLen = Object.keys(ConfigManager.getAuthAccounts()).length
setOverlayContent(
'Failed to Refresh Login',
`We were unable to refresh the login for <strong>${selectedAcc.displayName}</strong>. Please ${accLen > 1 ? 'select another account or ' : ''} login again.`,
'Login',
'Select Another Account'
)
setOverlayHandler(() => {
document.getElementById('loginUsername').value = selectedAcc.username
validateEmail(selectedAcc.username)
switchView(getCurrentView(), VIEWS.login)
toggleOverlay(false)
})
setDismissHandler(() => {
if(accLen > 2){
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<accounts.length; i++){
if(accounts[i].uuid !== selectedUUID){
setSelectedAccount(accounts[i].uuid)
toggleOverlay(false)
validateSelectedAccount()
}
}
}
})
toggleOverlay(true, accLen > 1)
} else {
return true
}
} else {
return true
}
}
function setSelectedAccount(uuid){
const authAcc = ConfigManager.setSelectedAccount(uuid)
ConfigManager.save()
updateSelectedAccount(authAcc)
//validateSelectedAccount()
}
// Synchronous Listener
document.addEventListener('readystatechange', function(){