diff --git a/LICENSE.txt b/LICENSE.txt deleted file mode 100644 index 1455dbbb..00000000 --- a/LICENSE.txt +++ /dev/null @@ -1,21 +0,0 @@ -MIT License - -Copyright (c) 2017-2022 Daniel D. Scalzi - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. \ No newline at end of file diff --git a/app/assets/images/minecraft.icns b/app/assets/images/minecraft.icns deleted file mode 100644 index 60ce69d7..00000000 Binary files a/app/assets/images/minecraft.icns and /dev/null differ diff --git a/app/assets/js/authmanager.js b/app/assets/js/authmanager.js index cdc6905c..2f799cd2 100644 --- a/app/assets/js/authmanager.js +++ b/app/assets/js/authmanager.js @@ -12,7 +12,6 @@ const ConfigManager = require('./configmanager') const { LoggerUtil } = require('helios-core') const { RestResponseStatus } = require('helios-core/common') -const { MojangRestAPI, mojangErrorDisplayable, MojangErrorCode } = require('helios-core/mojang') const { MicrosoftAuth, microsoftErrorDisplayable, MicrosoftErrorCode } = require('helios-core/microsoft') const { AZURE_CLIENT_ID } = require('./ipcconstants') @@ -20,43 +19,6 @@ const log = LoggerUtil.getLogger('AuthManager') // Functions -/** - * Add a Mojang account. This will authenticate the given credentials with Mojang's - * authserver. The resultant data will be stored as an auth account in the - * configuration database. - * - * @param {string} username The account username (email if migrated). - * @param {string} password The account password. - * @returns {Promise.} Promise which resolves the resolved authenticated account object. - */ -exports.addMojangAccount = async function(username, password) { - try { - const response = await MojangRestAPI.authenticate(username, password, ConfigManager.getClientToken()) - console.log(response) - if(response.responseStatus === RestResponseStatus.SUCCESS) { - - const session = response.data - if(session.selectedProfile != null){ - const ret = ConfigManager.addMojangAuthAccount(session.selectedProfile.id, session.accessToken, username, session.selectedProfile.name) - if(ConfigManager.getClientToken() == null){ - ConfigManager.setClientToken(session.clientToken) - } - ConfigManager.save() - return ret - } else { - return Promise.reject(mojangErrorDisplayable(MojangErrorCode.ERROR_NOT_PAID)) - } - - } else { - return Promise.reject(mojangErrorDisplayable(response.mojangErrorCode)) - } - - } catch (err){ - log.error(err) - return Promise.reject(mojangErrorDisplayable(MojangErrorCode.UNKNOWN)) - } -} - const AUTH_MODE = { FULL: 0, MS_REFRESH: 1, MC_REFRESH: 2 } /** @@ -156,31 +118,6 @@ exports.addMicrosoftAccount = async function(authCode) { return ret } -/** - * Remove a Mojang account. This will invalidate the access token associated - * with the account and then remove it from the database. - * - * @param {string} uuid The UUID of the account to be removed. - * @returns {Promise.} Promise which resolves to void when the action is complete. - */ -exports.removeMojangAccount = async function(uuid){ - try { - const authAcc = ConfigManager.getAuthAccount(uuid) - const response = await MojangRestAPI.invalidate(authAcc.accessToken, ConfigManager.getClientToken()) - if(response.responseStatus === RestResponseStatus.SUCCESS) { - ConfigManager.removeAuthAccount(uuid) - ConfigManager.save() - return Promise.resolve() - } else { - log.error('Error while removing account', response.error) - return Promise.reject(response.error) - } - } catch (err){ - log.error('Error while removing account', err) - return Promise.reject(err) - } -} - /** * Remove a Microsoft account. It is expected that the caller will invoke the OAuth logout * through the ipc renderer. @@ -199,41 +136,6 @@ exports.removeMicrosoftAccount = async function(uuid){ } } -/** - * Validate the selected account with Mojang's authserver. If the account is not valid, - * we will attempt to refresh the access token and update that value. If that fails, a - * new login will be required. - * - * @returns {Promise.} Promise which resolves to true if the access token is valid, - * otherwise false. - */ -async function validateSelectedMojangAccount(){ - const current = ConfigManager.getSelectedAccount() - const response = await MojangRestAPI.validate(current.accessToken, ConfigManager.getClientToken()) - - if(response.responseStatus === RestResponseStatus.SUCCESS) { - const isValid = response.data - if(!isValid){ - const refreshResponse = await MojangRestAPI.refresh(current.accessToken, ConfigManager.getClientToken()) - if(refreshResponse.responseStatus === RestResponseStatus.SUCCESS) { - const session = refreshResponse.data - ConfigManager.updateMojangAuthAccount(current.uuid, session.accessToken) - ConfigManager.save() - } else { - log.error('Error while validating selected profile:', refreshResponse.error) - log.info('Account access token is invalid.') - return false - } - log.info('Account access token validated.') - return true - } else { - log.info('Account access token validated.') - return true - } - } - -} - /** * Validate the selected account with Microsoft's authserver. If the account is not valid, * we will attempt to refresh the access token and update that value. If that fails, a @@ -304,12 +206,5 @@ async function validateSelectedMicrosoftAccount(){ * otherwise false. */ exports.validateSelected = async function(){ - const current = ConfigManager.getSelectedAccount() - - if(current.type === 'microsoft') { - return await validateSelectedMicrosoftAccount() - } else { - return await validateSelectedMojangAccount() - } - + return await validateSelectedMicrosoftAccount() } \ No newline at end of file diff --git a/app/assets/js/configmanager.js b/app/assets/js/configmanager.js index c0716b72..1ea701ec 100644 --- a/app/assets/js/configmanager.js +++ b/app/assets/js/configmanager.js @@ -213,34 +213,6 @@ exports.getTempNativeFolder = function(){ // System Settings (Unconfigurable on UI) -/** - * Retrieve the news cache to determine - * whether or not there is newer news. - * - * @returns {Object} The news cache object. - */ -exports.getNewsCache = function(){ - return config.newsCache -} - -/** - * Set the new news cache object. - * - * @param {Object} newsCache The new news cache object. - */ -exports.setNewsCache = function(newsCache){ - config.newsCache = newsCache -} - -/** - * Set whether or not the news has been dismissed (checked) - * - * @param {boolean} dismissed Whether or not the news has been dismissed (checked). - */ -exports.setNewsCacheDismissed = function(dismissed){ - config.newsCache.dismissed = dismissed -} - /** * Retrieve the common directory for shared * game files (assets, libraries, etc). @@ -319,42 +291,6 @@ exports.getAuthAccount = function(uuid){ return config.authenticationDatabase[uuid] } -/** - * Update the access token of an authenticated mojang account. - * - * @param {string} uuid The uuid of the authenticated account. - * @param {string} accessToken The new Access Token. - * - * @returns {Object} The authenticated account object created by this action. - */ -exports.updateMojangAuthAccount = function(uuid, accessToken){ - config.authenticationDatabase[uuid].accessToken = accessToken - config.authenticationDatabase[uuid].type = 'mojang' // For gradual conversion. - return config.authenticationDatabase[uuid] -} - -/** - * Adds an authenticated mojang account to the database to be stored. - * - * @param {string} uuid The uuid of the authenticated account. - * @param {string} accessToken The accessToken of the authenticated account. - * @param {string} username The username (usually email) of the authenticated account. - * @param {string} displayName The in game name of the authenticated account. - * - * @returns {Object} The authenticated account object created by this action. - */ -exports.addMojangAuthAccount = function(uuid, accessToken, username, displayName){ - config.selectedAccount = uuid - config.authenticationDatabase[uuid] = { - type: 'mojang', - accessToken, - username: username.trim(), - uuid: uuid.trim(), - displayName: displayName.trim() - } - return config.authenticationDatabase[uuid] -} - /** * Update the tokens of an authenticated microsoft account. * diff --git a/app/assets/js/scripts/landing.js b/app/assets/js/scripts/landing.js index 6b712d7d..6e269f31 100644 --- a/app/assets/js/scripts/landing.js +++ b/app/assets/js/scripts/landing.js @@ -679,95 +679,4 @@ function dlAsync(login = true){ } }) }) -} - -/** - * News Loading Functions - */ - -// DOM Cache -const newsContent = document.getElementById('newsContent') -const newsArticleTitle = document.getElementById('newsArticleTitle') -const newsArticleDate = document.getElementById('newsArticleDate') -const newsArticleAuthor = document.getElementById('newsArticleAuthor') -const newsArticleComments = document.getElementById('newsArticleComments') -const newsNavigationStatus = document.getElementById('newsNavigationStatus') -const newsArticleContentScrollable = document.getElementById('newsArticleContentScrollable') -const nELoadSpan = document.getElementById('nELoadSpan') - -// News slide caches. -let newsActive = false -let newsGlideCount = 0 - -/** - * Show the news UI via a slide animation. - * - * @param {boolean} up True to slide up, otherwise false. - */ -function slide_(up){ - const lCUpper = document.querySelector('#landingContainer > #upper') - const lCLLeft = document.querySelector('#landingContainer > #lower > #left') - const lCLCenter = document.querySelector('#landingContainer > #lower > #center') - const lCLRight = document.querySelector('#landingContainer > #lower > #right') - const newsBtn = document.querySelector('#landingContainer > #lower > #center #content') - const landingContainer = document.getElementById('landingContainer') - const newsContainer = document.querySelector('#landingContainer > #newsContainer') - - newsGlideCount++ - - if(up){ - lCUpper.style.top = '-200vh' - lCLLeft.style.top = '-200vh' - lCLCenter.style.top = '-200vh' - lCLRight.style.top = '-200vh' - newsBtn.style.top = '130vh' - newsContainer.style.top = '0px' - //date.toLocaleDateString('en-US', {month: 'short', day: 'numeric', year: 'numeric', hour: 'numeric', minute: 'numeric'}) - //landingContainer.style.background = 'rgba(29, 29, 29, 0.55)' - landingContainer.style.background = 'rgba(0, 0, 0, 0.50)' - setTimeout(() => { - if(newsGlideCount === 1){ - lCLCenter.style.transition = 'none' - newsBtn.style.transition = 'none' - } - newsGlideCount-- - }, 2000) - } else { - setTimeout(() => { - newsGlideCount-- - }, 2000) - landingContainer.style.background = null - lCLCenter.style.transition = null - newsBtn.style.transition = null - newsContainer.style.top = '100%' - lCUpper.style.top = '0px' - lCLLeft.style.top = '0px' - lCLCenter.style.top = '0px' - lCLRight.style.top = '0px' - newsBtn.style.top = '10px' - } -} - -/** - * Add keyboard controls to the news UI. Left and right arrows toggle - * between articles. If you are on the landing page, the up arrow will - * open the news UI. - */ -document.addEventListener('keydown', (e) => { - if(newsActive){ - if(e.key === 'ArrowRight' || e.key === 'ArrowLeft'){ - document.getElementById(e.key === 'ArrowRight' ? 'newsNavigateRight' : 'newsNavigateLeft').click() - } - // Interferes with scrolling an article using the down arrow. - // Not sure of a straight forward solution at this point. - // if(e.key === 'ArrowDown'){ - // document.getElementById('newsButton').click() - // } - } else { - if(getCurrentView() === VIEWS.landing){ - if(e.key === 'ArrowUp'){ - document.getElementById('newsButton').click() - } - } - } -}) \ No newline at end of file +} \ No newline at end of file diff --git a/app/assets/js/scripts/loginOptions.js b/app/assets/js/scripts/loginOptions.js index cdb1bc8e..ae1cf708 100644 --- a/app/assets/js/scripts/loginOptions.js +++ b/app/assets/js/scripts/loginOptions.js @@ -1,6 +1,5 @@ const loginOptionsCancelContainer = document.getElementById('loginOptionCancelContainer') const loginOptionMicrosoft = document.getElementById('loginOptionMicrosoft') -const loginOptionMojang = document.getElementById('loginOptionMojang') const loginOptionsCancelButton = document.getElementById('loginOptionCancelButton') let loginOptionsCancellable = false @@ -28,14 +27,6 @@ loginOptionMicrosoft.onclick = (e) => { }) } -loginOptionMojang.onclick = (e) => { - switchView(getCurrentView(), VIEWS.login, 500, 500, () => { - loginViewOnSuccess = loginOptionsViewOnLoginSuccess - loginViewOnCancel = loginOptionsViewOnLoginCancel - loginCancelEnabled(true) - }) -} - loginOptionsCancelButton.onclick = (e) => { switchView(getCurrentView(), loginOptionsViewOnCancel, 500, 500, () => { // Clear login values (Mojang login) diff --git a/app/assets/js/scripts/settings.js b/app/assets/js/scripts/settings.js index ae7c2448..ae50fa6f 100644 --- a/app/assets/js/scripts/settings.js +++ b/app/assets/js/scripts/settings.js @@ -318,15 +318,6 @@ settingsNavDone.onclick = () => { const msftLoginLogger = LoggerUtil.getLogger('Microsoft Login') const msftLogoutLogger = LoggerUtil.getLogger('Microsoft Logout') -// Bind the add mojang account button. -document.getElementById('settingsAddMojangAccount').onclick = (e) => { - switchView(getCurrentView(), VIEWS.login, 500, 500, () => { - loginViewOnCancel = VIEWS.settings - loginViewOnSuccess = VIEWS.settings - loginCancelEnabled(true) - }) -} - // Bind the add microsoft account button. document.getElementById('settingsAddMicrosoftAccount').onclick = (e) => { switchView(getCurrentView(), VIEWS.waiting, 500, 500, () => { @@ -598,7 +589,6 @@ function refreshAuthAccountSelected(uuid){ } const settingsCurrentMicrosoftAccounts = document.getElementById('settingsCurrentMicrosoftAccounts') -const settingsCurrentMojangAccounts = document.getElementById('settingsCurrentMojangAccounts') /** * Add auth account elements for each one stored in the authentication database. @@ -612,7 +602,6 @@ function populateAuthAccounts(){ const selectedUUID = ConfigManager.getSelectedAccount().uuid let microsoftAuthAccountStr = '' - let mojangAuthAccountStr = '' authKeys.forEach((val) => { const acc = authAccounts[val] @@ -641,16 +630,12 @@ function populateAuthAccounts(){ ` - if(acc.type === 'microsoft') { - microsoftAuthAccountStr += accHtml - } else { - mojangAuthAccountStr += accHtml - } + microsoftAuthAccountStr += accHtml + }) settingsCurrentMicrosoftAccounts.innerHTML = microsoftAuthAccountStr - settingsCurrentMojangAccounts.innerHTML = mojangAuthAccountStr } /** diff --git a/build/icon.icns b/build/icon.icns deleted file mode 100644 index 0e15df93..00000000 Binary files a/build/icon.icns and /dev/null differ diff --git a/electron-builder.yml b/electron-builder.yml index 2508d0bb..5489d2fd 100644 --- a/electron-builder.yml +++ b/electron-builder.yml @@ -2,7 +2,7 @@ appId: 'lukienlivelauncher' productName: 'LukiEnLiveLauncher' artifactName: '${productName}-setup-${version}.${ext}' -copyright: 'Copyright © 2018-2022 Daniel Scalzi' +copyright: 'Copyright © LukiEnLive' asar: true compression: 'maximum' @@ -26,26 +26,6 @@ nsis: allowElevation: true allowToChangeInstallationDirectory: true -# macOS Configuration -mac: - target: - - target: 'dmg' - arch: - - 'x64' - - 'arm64' - artifactName: '${productName}-setup-${version}-${arch}.${ext}' - category: 'public.app-category.games' - -# Linux Configuration -linux: - target: 'AppImage' - maintainer: 'Daniel Scalzi' - vendor: 'Daniel Scalzi' - synopsis: 'Modded Minecraft Launcher' - description: 'Custom launcher which allows users to join modded servers. All mods, configurations, and updates are handled automatically.' - category: 'Game' - - directories: buildResources: 'build' output: 'dist' \ No newline at end of file