mirror of
https://github.com/dscalzi/HeliosLauncher.git
synced 2024-12-22 19:52:14 -08:00
848440ed1c
The registry scan function exited early if no Java Development Key was found. This has been corrected by redoing the exit checks. Social media buttons now lose focus after they are clicked to prevent a sticky appearance. Changed the load spinner to have the text rotate within the center image.
178 lines
7.1 KiB
JavaScript
178 lines
7.1 KiB
JavaScript
/**
|
|
* Core UI functions are initialized in this file. This prevents
|
|
* unexpected errors from breaking the core features. Specifically,
|
|
* actions in this file should not require the usage of any internal
|
|
* modules, excluding dependencies.
|
|
*/
|
|
// Requirements
|
|
const $ = require('jquery');
|
|
const {ipcRenderer, remote, shell, webFrame} = require('electron')
|
|
const isDev = require('electron-is-dev')
|
|
|
|
// Disable eval function.
|
|
// eslint-disable-next-line
|
|
window.eval = global.eval = function () {
|
|
throw new Error('Sorry, this app does not support window.eval().')
|
|
}
|
|
|
|
// Display warning when devtools window is opened.
|
|
remote.getCurrentWebContents().on('devtools-opened', () => {
|
|
console.log('%cThe console is dark and full of terrors.', 'color: white; -webkit-text-stroke: 4px #a02d2a; font-size: 60px; font-weight: bold')
|
|
console.log('%cIf you\'ve been told to paste something here, you\'re being scammed.', 'font-size: 16px')
|
|
console.log('%cUnless you know exactly what you\'re doing, close this window.', 'font-size: 16px')
|
|
})
|
|
|
|
// Disable zoom, needed for darwin.
|
|
webFrame.setZoomLevel(0)
|
|
webFrame.setVisualZoomLevelLimits(1, 1)
|
|
webFrame.setLayoutZoomLevelLimits(0, 0)
|
|
|
|
// Initialize auto updates in production environments.
|
|
// TODO Make this the case after implementation is done.
|
|
let updateCheckListener
|
|
if(!isDev){
|
|
ipcRenderer.on('autoUpdateNotification', (event, arg, info) => {
|
|
switch(arg){
|
|
case 'checking-for-update':
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'Checking for update..')
|
|
break
|
|
case 'update-available':
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'New update available', info.version)
|
|
break
|
|
case 'update-downloaded':
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'Update ' + info.version + ' ready to be installed.')
|
|
showUpdateUI(info)
|
|
break
|
|
case 'update-not-available':
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'No new update found.')
|
|
break
|
|
case 'ready':
|
|
updateCheckListener = setInterval(() => {
|
|
ipcRenderer.send('autoUpdateAction', 'checkForUpdate')
|
|
}, 1800000)
|
|
ipcRenderer.send('autoUpdateAction', 'checkForUpdate')
|
|
case 'realerror':
|
|
if(info != null && info.code != null){
|
|
if(info.code === 'ERR_UPDATER_INVALID_RELEASE_FEED'){
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'No suitable releases found.')
|
|
} else if(info.code === 'ERR_XML_MISSED_ELEMENT'){
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'No releases found.')
|
|
} else {
|
|
console.error('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'Error during update check..', info)
|
|
console.debug('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'Error Code:', info.code)
|
|
}
|
|
}
|
|
break
|
|
default:
|
|
console.log('%c[AutoUpdater]', 'color: #a02d2a; font-weight: bold', 'Unknown argument', arg)
|
|
break
|
|
}
|
|
})
|
|
ipcRenderer.send('autoUpdateAction', 'initAutoUpdater')
|
|
}
|
|
|
|
function showUpdateUI(info){
|
|
//TODO Make this message a bit more informative `${info.version}`
|
|
document.getElementById('image_seal_container').setAttribute('update', true)
|
|
document.getElementById('image_seal_container').onclick = () => {
|
|
setOverlayContent('Update Available', 'A new update for the launcher is available. Would you like to install now?', 'Install', 'Later')
|
|
setOverlayHandler(() => {
|
|
if(!isDev){
|
|
ipcRenderer.send('autoUpdateAction', 'installUpdateNow')
|
|
} else {
|
|
console.error('Cannot install updates in development environment.')
|
|
toggleOverlay(false)
|
|
}
|
|
})
|
|
setDismissHandler(() => {
|
|
toggleOverlay(false)
|
|
})
|
|
toggleOverlay(true, true)
|
|
}
|
|
}
|
|
|
|
/* jQuery Example
|
|
$(function(){
|
|
console.log('UICore Initialized');
|
|
})*/
|
|
|
|
document.addEventListener('readystatechange', function () {
|
|
if (document.readyState === 'interactive'){
|
|
console.log('UICore Initializing..');
|
|
|
|
// Bind close button.
|
|
Array.from(document.getElementsByClassName('fCb')).map((val) => {
|
|
val.addEventListener('click', e => {
|
|
const window = remote.getCurrentWindow()
|
|
window.close()
|
|
})
|
|
})
|
|
|
|
// Bind restore down button.
|
|
Array.from(document.getElementsByClassName('fRb')).map((val) => {
|
|
val.addEventListener('click', e => {
|
|
const window = remote.getCurrentWindow()
|
|
if(window.isMaximized()){
|
|
window.unmaximize()
|
|
} else {
|
|
window.maximize()
|
|
}
|
|
document.activeElement.blur()
|
|
})
|
|
})
|
|
|
|
// Bind minimize button.
|
|
Array.from(document.getElementsByClassName('fMb')).map((val) => {
|
|
val.addEventListener('click', e => {
|
|
const window = remote.getCurrentWindow()
|
|
window.minimize()
|
|
document.activeElement.blur()
|
|
})
|
|
})
|
|
|
|
// Remove focus from social media buttons once they're clicked.
|
|
Array.from(document.getElementsByClassName('mediaURL')).map(val => {
|
|
val.addEventListener('click', e => {
|
|
document.activeElement.blur()
|
|
})
|
|
})
|
|
|
|
} else if(document.readyState === 'complete'){
|
|
|
|
//266.01
|
|
//170.8
|
|
//53.21
|
|
// Bind progress bar length to length of bot wrapper
|
|
//const targetWidth = document.getElementById("launch_content").getBoundingClientRect().width
|
|
//const targetWidth2 = document.getElementById("server_selection").getBoundingClientRect().width
|
|
//const targetWidth3 = document.getElementById("launch_button").getBoundingClientRect().width
|
|
|
|
document.getElementById("launch_details").style.maxWidth = 266.01
|
|
document.getElementById("launch_progress").style.width = 170.8
|
|
document.getElementById("launch_details_right").style.maxWidth = 170.8
|
|
document.getElementById("launch_progress_label").style.width = 53.21
|
|
|
|
}
|
|
|
|
}, false)
|
|
|
|
/**
|
|
* Open web links in the user's default browser.
|
|
*/
|
|
$(document).on('click', 'a[href^="http"]', function(event) {
|
|
event.preventDefault();
|
|
//console.log(os.homedir())
|
|
shell.openExternal(this.href)
|
|
})
|
|
|
|
/**
|
|
* Opens DevTools window if you hold (ctrl + shift + i).
|
|
* This will crash the program if you are using multiple
|
|
* DevTools, for example the chrome debugger in VS Code.
|
|
*/
|
|
document.addEventListener('keydown', function (e) {
|
|
if((e.key === 'I' || e.key === 'i') && e.ctrlKey && e.shiftKey){
|
|
let window = remote.getCurrentWindow()
|
|
window.toggleDevTools()
|
|
}
|
|
}) |