diff --git a/package.json b/package.json index fd8f5c7..f614774 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "altarik-launcher", "author": "Altarik", - "version": "2.1.1", + "version": "2.1.2", "description": "Altarik Launcher", "main": "src/server/main.js", "type": "module", @@ -44,7 +44,7 @@ }, "dependencies": { "decompress": "^4.2.1", - "electron-is-dev": "^2.0.0", + "electron-is-dev": "^3.0.1", "electron-log": "^5.0.3", "electron-squirrel-startup": "^1.0.0", "extract-zip": "^2.0.1", diff --git a/src/client/assets/js/checkingUpdate.js b/src/client/assets/js/checkingUpdate.js index f5386f4..e14ddd7 100644 --- a/src/client/assets/js/checkingUpdate.js +++ b/src/client/assets/js/checkingUpdate.js @@ -1,32 +1,32 @@ const vue = require('vue/dist/vue.cjs.js') app = vue.createApp({ - data() { - return { - displayFullscreen: "block", - fullscreenText: "Recherche de mise à jour...", - downloadLink: null - } + data () { + return { + displayFullscreen: 'block', + fullscreenText: 'Recherche de mise à jour...', + downloadLink: null + } + }, + mounted () { + this.sendCheckingUpdate() + }, + methods: { + sendCheckingUpdate () { + ipcRenderer.send('checking-update') }, - mounted() { - this.sendCheckingUpdate() - }, - methods: { - sendCheckingUpdate() { - ipcRenderer.send("checking-update"); - }, - openLinkExternal() { - shell.openExternal(this.downloadLink) - } - }, -}); + openLinkExternal () { + shell.openExternal(this.downloadLink) + } + } +}) -let root = app.mount("#vue"); +const root = app.mount('#vue') -ipcRenderer.on("update-available", (event, arg) => { - root.fullscreenText = "Mise à jour disponible, téléchargement..." -}); +ipcRenderer.on('update-available', (event, arg) => { + root.fullscreenText = 'Mise à jour disponible, téléchargement...' +}) -ipcRenderer.on("please-download-update", (event, args) => { - root.fullscreenText = `Veuillez télécharger la mise à jour en cliquant sur le lien suivant :` - root.downloadLink = `${args.url}` -}) \ No newline at end of file +ipcRenderer.on('please-download-update', (event, args) => { + root.fullscreenText = 'Veuillez télécharger la mise à jour en cliquant sur le lien suivant :' + root.downloadLink = `${args.url}` +}) diff --git a/src/client/assets/js/index.js b/src/client/assets/js/index.js index 509b37a..c85c7e8 100644 --- a/src/client/assets/js/index.js +++ b/src/client/assets/js/index.js @@ -3,176 +3,175 @@ const totalMem = os.totalmem() / (1.049 * Math.pow(10, 6)) const vue = require('vue/dist/vue.cjs.js') app = vue.createApp({ - data() { - return { - minMemValue: localStorage.getItem("minMem") != null ? localStorage.getItem("minMem") : 1024 , - maxMemValue: localStorage.getItem("maxMem") != null ? localStorage.getItem("maxMem") : 2048, - memStep: 128, - memMax: totalMem, - invalidateButtonText: "Supprimer et retélécharger les bibliothèques", - invalidateButtonDisabled: false, - displayFullscreen: "none", - displaySettings: "none", - displayCredits: "none", - nick: "Chargement", - launchBtnText: "Selectionnez un chapitre", - launchBtnDisable: true, - launchBtnHidden: false, - loadingMessageHidden: true, - loadingMessageText: "Téléchargement de Minecraft en cours...", - fullprogressbarHidden: true, - progressbarWidth: 0, - sidebarContent: "

Chargement en cours

", - modsInformations: [], - modsInformationsLoaded: true, - selectedChapter: -1, - gameLaunching: false - } - - }, - mounted () { - iziToast.settings({ - close: false, - closeOnClick: true, - timeout: 5000, - position: 'topRight', - resetOnHover: true, - }) - setInterval(() => { - ipcRenderer.send("pageReady") - }, 500) - }, - methods: { - invalidateData () { - this.invalidateButtonDisabled = true - this.invalidateButtonText = "Opération en cours" - this.showInfo("Opération en cours", "Suppression des données du jeu en cours") - ipcRenderer.send('invalidateData') - }, - launchBtnClick () { - this.launchBtnHidden = true - this.fullprogressbarHidden = false - this.loadingMessageHidden = false - if(Number(this.minMemValue) <= Number(this.maxMemValue)){ - ipcRenderer.send('launch', { - minMem: this.minMemValue + "M", - maxMem: this.maxMemValue + "M", - chapter: this.selectedChapter - }) - this.launchBtnDisable = true - localStorage.setItem("minMem", this.minMemValue) - localStorage.setItem("maxMem", this.maxMemValue) - this.gameLaunching = true - } else { - this.showError("Erreur de lancement", "La mémoire minimale doit être inférieure ou égale à la mémoire maximale.") - } - }, - changeSelectedChapter(index) { - this.selectedChapter = parseInt(index) - root.launchBtnText = "JOUER" - root.launchBtnDisable = false - }, - disconnectBtn () { - ipcRenderer.send('disconnect') - }, - options () { - if(!this.gameLaunching) { - this.displayFullscreen = "block" - this.displaySettings = "block" - this.displayCredits = "none" - } - }, - discord() { - shell.openExternal("https://discord.gg/b923tMhmRE") - }, - web() { - shell.openExternal("https://altarik.fr") - }, - closeFullscreen () { - this.displayFullscreen = "none" - this.displaySettings = "none" - this.displayCredits = "none" - }, - credits() { - this.displayFullscreen = "block" - this.displaySettings = "none" - this.displayCredits = "block" - }, - updateModsInformations(content) { - this.modsInformations = content - }, - getModsInformations() { - return this.modsInformations - }, - showInfo(title, body) { - iziToast.info({ - title: title, - message: body, - color: 'blue' - }) - }, - showError(title, body) { - iziToast.error({ - title: title, - message: body, - color: 'red', - }) - }, - showWarning(title, body) { - iziToast.warning({ - title: title, - message: body, - color: 'yellow' - }) - }, - showSuccess(title, body) { - iziToast.success({ - title: title, - message: body, - color: 'green' - }) - }, - isSelected(index) { - return this.selectedChapter === index - } + data () { + return { + minMemValue: localStorage.getItem('minMem') != null ? localStorage.getItem('minMem') : 1024, + maxMemValue: localStorage.getItem('maxMem') != null ? localStorage.getItem('maxMem') : 2048, + memStep: 128, + memMax: totalMem, + invalidateButtonText: 'Supprimer et retélécharger les bibliothèques', + invalidateButtonDisabled: false, + displayFullscreen: 'none', + displaySettings: 'none', + displayCredits: 'none', + nick: 'Chargement', + launchBtnText: 'Selectionnez un chapitre', + launchBtnDisable: true, + launchBtnHidden: false, + loadingMessageHidden: true, + loadingMessageText: 'Téléchargement de Minecraft en cours...', + fullprogressbarHidden: true, + progressbarWidth: 0, + sidebarContent: '

Chargement en cours

', + modsInformations: [], + modsInformationsLoaded: true, + selectedChapter: -1, + gameLaunching: false } + }, + mounted () { + iziToast.settings({ + close: false, + closeOnClick: true, + timeout: 5000, + position: 'topRight', + resetOnHover: true + }) + setInterval(() => { + ipcRenderer.send('pageReady') + }, 500) + }, + methods: { + invalidateData () { + this.invalidateButtonDisabled = true + this.invalidateButtonText = 'Opération en cours' + this.showInfo('Opération en cours', 'Suppression des données du jeu en cours') + ipcRenderer.send('invalidateData') + }, + launchBtnClick () { + this.launchBtnHidden = true + this.fullprogressbarHidden = false + this.loadingMessageHidden = false + if (Number(this.minMemValue) <= Number(this.maxMemValue)) { + ipcRenderer.send('launch', { + minMem: this.minMemValue + 'M', + maxMem: this.maxMemValue + 'M', + chapter: this.selectedChapter + }) + this.launchBtnDisable = true + localStorage.setItem('minMem', this.minMemValue) + localStorage.setItem('maxMem', this.maxMemValue) + this.gameLaunching = true + } else { + this.showError('Erreur de lancement', 'La mémoire minimale doit être inférieure ou égale à la mémoire maximale.') + } + }, + changeSelectedChapter (index) { + this.selectedChapter = parseInt(index) + root.launchBtnText = 'JOUER' + root.launchBtnDisable = false + }, + disconnectBtn () { + ipcRenderer.send('disconnect') + }, + options () { + if (!this.gameLaunching) { + this.displayFullscreen = 'block' + this.displaySettings = 'block' + this.displayCredits = 'none' + } + }, + discord () { + shell.openExternal('https://discord.gg/p3EnE6Jumg') + }, + web () { + shell.openExternal('https://altarik.fr') + }, + closeFullscreen () { + this.displayFullscreen = 'none' + this.displaySettings = 'none' + this.displayCredits = 'none' + }, + credits () { + this.displayFullscreen = 'block' + this.displaySettings = 'none' + this.displayCredits = 'block' + }, + updateModsInformations (content) { + this.modsInformations = content + }, + getModsInformations () { + return this.modsInformations + }, + showInfo (title, body) { + iziToast.info({ + title, + message: body, + color: 'blue' + }) + }, + showError (title, body) { + iziToast.error({ + title, + message: body, + color: 'red' + }) + }, + showWarning (title, body) { + iziToast.warning({ + title, + message: body, + color: 'yellow' + }) + }, + showSuccess (title, body) { + iziToast.success({ + title, + message: body, + color: 'green' + }) + }, + isSelected (index) { + return this.selectedChapter === index + } + } }) -let root = app.mount("#vue") +const root = app.mount('#vue') -ipcRenderer.on("invalidated", () => { - root.invalidateButtonDisabled = false - root.invalidateButtonText = "Supprimer et retélécharger les bibliothèques" - root.showSuccess("Opération terminée", "Les données du jeu ont été supprimé avec succès") +ipcRenderer.on('invalidated', () => { + root.invalidateButtonDisabled = false + root.invalidateButtonText = 'Supprimer et retélécharger les bibliothèques' + root.showSuccess('Opération terminée', 'Les données du jeu ont été supprimé avec succès') }) -ipcRenderer.on("progress", (e, args) => { - root.progressbarWidth = (args.task / Math.max(args.total, args.task)) * 100 - root.loadingMessageText = "Téléchargement de " + args.type + ": " + args.task + " sur " + Math.max(args.total, args.task) +ipcRenderer.on('progress', (e, args) => { + root.progressbarWidth = (args.task / Math.max(args.total, args.task)) * 100 + root.loadingMessageText = 'Téléchargement de ' + args.type + ': ' + args.task + ' sur ' + Math.max(args.total, args.task) }) -ipcRenderer.on("close", (_e, _args) => { - root.launchBtnHidden = false - root.fullprogressbarHidden = true - root.loadingMessageHidden = true - root.loadingMessageText = "Chargement de Minecraft en cours..." - root.progressbarWidth = 0 - root.launchBtnDisable = false - root.gameLaunching = false +ipcRenderer.on('close', (_e, _args) => { + root.launchBtnHidden = false + root.fullprogressbarHidden = true + root.loadingMessageHidden = true + root.loadingMessageText = 'Chargement de Minecraft en cours...' + root.progressbarWidth = 0 + root.launchBtnDisable = false + root.gameLaunching = false }) ipcRenderer.on('launch', (_e, _args) => { - root.fullprogressbarHidden = true - root.loadingMessageHidden = true + root.fullprogressbarHidden = true + root.loadingMessageHidden = true }) -ipcRenderer.on("modsInformations", (_e, args) => { - if(args === null) { - root.modsInformationsLoaded = false - } else { - root.modsInformationsLoaded = true - } - root.updateModsInformations(args) +ipcRenderer.on('modsInformations', (_e, args) => { + if (args === null) { + root.modsInformationsLoaded = false + } else { + root.modsInformationsLoaded = true + } + root.updateModsInformations(args) }) -ipcRenderer.on("nick", (_e, args) => root.nick = args.name) \ No newline at end of file +ipcRenderer.on('nick', (_e, args) => root.nick = args.name) diff --git a/src/client/assets/js/login.js b/src/client/assets/js/login.js index 5ea9a4a..077e9cf 100644 --- a/src/client/assets/js/login.js +++ b/src/client/assets/js/login.js @@ -1,89 +1,87 @@ const vue = require('vue/dist/vue.cjs.js') app = vue.createApp({ - data() { - return { - login: "Connexion", - email: "Email", - password: "Mot de passe", - send_credentials: "Se connecter", - microsoft_button: "Connexion avec un compte Microsoft", - } - }, - mounted() { - iziToast.settings({ - close: false, - closeOnClick: true, - timeout: 5000, - position: 'topRight', - resetOnHover: true, - }) - }, - methods: { - formSubmit (e) { - e.preventDefault() - if(!microsoftButton.disabled) { - form.disabled = true - if(user.value) { - ipcRenderer.send("login", { - user: user.value, - pass: password.value - }) - }else{ - this.showWarning("Erreur de connexion", "Veuillez entrer des identifiants") - form.disabled = false - } - } - }, - microsoftButton(e) { - e.preventDefault() - if(!form.disabled) { - microsoftButton.disabled = true - form.disabled = true - ipcRenderer.send("microsoft-login") - } - }, - showInfo(title, body) { - iziToast.info({ - title: title, - message: body, - color: 'blue' - }) - }, - showError(title, body) { - iziToast.error({ - title: title, - message: body, - color: 'red', - }) - }, - showWarning(title, body) { - iziToast.warning({ - title: title, - message: body, - color: 'yellow' - }) - }, - showSuccess(title, body) { - iziToast.success({ - title: title, - message: body, - color: 'green' - }) - } + data () { + return { + login: 'Connexion', + email: 'Email', + password: 'Mot de passe', + send_credentials: 'Se connecter', + microsoft_button: 'Connexion avec un compte Microsoft' } -}); + }, + mounted () { + iziToast.settings({ + close: false, + closeOnClick: true, + timeout: 5000, + position: 'topRight', + resetOnHover: true + }) + }, + methods: { + formSubmit (e) { + e.preventDefault() + if (!microsoftButton.disabled) { + form.disabled = true + if (user.value) { + ipcRenderer.send('login', { + user: user.value, + pass: password.value + }) + } else { + this.showWarning('Erreur de connexion', 'Veuillez entrer des identifiants') + form.disabled = false + } + } + }, + microsoftButton (e) { + e.preventDefault() + if (!form.disabled) { + microsoftButton.disabled = true + form.disabled = true + ipcRenderer.send('microsoft-login') + } + }, + showInfo (title, body) { + iziToast.info({ + title, + message: body, + color: 'blue' + }) + }, + showError (title, body) { + iziToast.error({ + title, + message: body, + color: 'red' + }) + }, + showWarning (title, body) { + iziToast.warning({ + title, + message: body, + color: 'yellow' + }) + }, + showSuccess (title, body) { + iziToast.success({ + title, + message: body, + color: 'green' + }) + } + } +}) -app.mount("#vue"); +app.mount('#vue') // theirs const are declared after vue cause vue modify them when declaring new vue instance const form = document.querySelector('#login-form') const user = document.querySelector('#nickname') const password = document.querySelector('#password') -const microsoftButton = document.querySelector("#microsoft-button") +const microsoftButton = document.querySelector('#microsoft-button') - - -ipcRenderer.on("loginError", () => { - form.disabled = false - microsoftButton.disabled = false +ipcRenderer.on('loginError', () => { + form.disabled = false + microsoftButton.disabled = false }) diff --git a/src/client/assets/js/preload.js b/src/client/assets/js/preload.js index feb32a5..d9f7677 100644 --- a/src/client/assets/js/preload.js +++ b/src/client/assets/js/preload.js @@ -1,29 +1,29 @@ -'use strict'; -const { ipcRenderer, shell } = require('electron'); -let app; -window.addEventListener("DOMContentLoaded", () => { - const minimizeButton = document.getElementById("minimize-btn") - const closeButton = document.getElementById("close-btn") +'use strict' +const { ipcRenderer, shell } = require('electron') +let app +window.addEventListener('DOMContentLoaded', () => { + const minimizeButton = document.getElementById('minimize-btn') + const closeButton = document.getElementById('close-btn') - minimizeButton.addEventListener("click", () => ipcRenderer.send('minimizeWindow')) + minimizeButton.addEventListener('click', () => ipcRenderer.send('minimizeWindow')) - closeButton.addEventListener("click", () => ipcRenderer.send('closeWindow')) + closeButton.addEventListener('click', () => ipcRenderer.send('closeWindow')) }) ipcRenderer.on('notification', (_e, args) => { - app.notificationTitle = args.title - app.notificationMessage = args.body - switch(args.class) { - case "success": - app._component.methods.showSuccess(args.title, args.body) - break; - case "warning": - app._component.methods.showWarning(args.title, args.body) - break; - case "error": - app._component.methods.showError(args.title, args.body) - break; - case "info":default: - app._component.methods.showInfo(args.title, args.body) - } + app.notificationTitle = args.title + app.notificationMessage = args.body + switch (args.class) { + case 'success': + app._component.methods.showSuccess(args.title, args.body) + break + case 'warning': + app._component.methods.showWarning(args.title, args.body) + break + case 'error': + app._component.methods.showError(args.title, args.body) + break + case 'info':default: + app._component.methods.showInfo(args.title, args.body) + } }) diff --git a/src/server/minecraft.js b/src/server/minecraft.js index ac85e4c..746660d 100644 --- a/src/server/minecraft.js +++ b/src/server/minecraft.js @@ -69,6 +69,8 @@ export default class Minecraft { }) }).catch(err => { event.sender.send('loginError') + logger.error('[MS login]' + lst(err)) + this.showNotification('Une erreur de connexion à Xbox est survenue', lst(err), 'error') if (err !== 'error.gui.closed') { logger.error('[MS login] ' + lst(err)) this.showNotification('Une erreur de connexion à Xbox est survenue', lst(err), 'error') diff --git a/yarn.lock b/yarn.lock index 5a63925..92f9da0 100644 --- a/yarn.lock +++ b/yarn.lock @@ -1572,10 +1572,10 @@ ecc-jsbn@~0.1.1: jsbn "~0.1.0" safer-buffer "^2.1.0" -electron-is-dev@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" - integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== +electron-is-dev@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-3.0.1.tgz#1cbc79b1dd046787903acd357efdfab6549dc17a" + integrity sha512-8TjjAh8Ec51hUi3o4TaU0mD3GMTOESi866oRNavj9A3IQJ7pmv+MJVmdZBFGw4GFT36X7bkqnuDNYvkQgvyI8Q== electron-log@^5.0.3: version "5.0.3"