4
0
mirror of https://github.com/AltarikMC/Launcher synced 2024-11-22 06:19:50 +01:00

Merge pull request #364 from AltarikMC/dev

Add a notification in case of microsoft login error, update discord link
This commit is contained in:
Quentin Legot 2024-01-16 22:08:28 +01:00 committed by GitHub
commit 7242c71c52
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
7 changed files with 290 additions and 291 deletions

View File

@ -1,7 +1,7 @@
{ {
"name": "altarik-launcher", "name": "altarik-launcher",
"author": "Altarik", "author": "Altarik",
"version": "2.1.1", "version": "2.1.2",
"description": "Altarik Launcher", "description": "Altarik Launcher",
"main": "src/server/main.js", "main": "src/server/main.js",
"type": "module", "type": "module",
@ -44,7 +44,7 @@
}, },
"dependencies": { "dependencies": {
"decompress": "^4.2.1", "decompress": "^4.2.1",
"electron-is-dev": "^2.0.0", "electron-is-dev": "^3.0.1",
"electron-log": "^5.0.3", "electron-log": "^5.0.3",
"electron-squirrel-startup": "^1.0.0", "electron-squirrel-startup": "^1.0.0",
"extract-zip": "^2.0.1", "extract-zip": "^2.0.1",

View File

@ -2,8 +2,8 @@ const vue = require('vue/dist/vue.cjs.js')
app = vue.createApp({ app = vue.createApp({
data () { data () {
return { return {
displayFullscreen: "block", displayFullscreen: 'block',
fullscreenText: "Recherche de mise à jour...", fullscreenText: 'Recherche de mise à jour...',
downloadLink: null downloadLink: null
} }
}, },
@ -12,21 +12,21 @@ app = vue.createApp({
}, },
methods: { methods: {
sendCheckingUpdate () { sendCheckingUpdate () {
ipcRenderer.send("checking-update"); ipcRenderer.send('checking-update')
}, },
openLinkExternal () { openLinkExternal () {
shell.openExternal(this.downloadLink) shell.openExternal(this.downloadLink)
} }
}, }
}); })
let root = app.mount("#vue"); const root = app.mount('#vue')
ipcRenderer.on("update-available", (event, arg) => { ipcRenderer.on('update-available', (event, arg) => {
root.fullscreenText = "Mise à jour disponible, téléchargement..." root.fullscreenText = 'Mise à jour disponible, téléchargement...'
}); })
ipcRenderer.on("please-download-update", (event, args) => { ipcRenderer.on('please-download-update', (event, args) => {
root.fullscreenText = `Veuillez télécharger la mise à jour en cliquant sur le lien suivant :` root.fullscreenText = 'Veuillez télécharger la mise à jour en cliquant sur le lien suivant :'
root.downloadLink = `${args.url}` root.downloadLink = `${args.url}`
}) })

View File

@ -5,30 +5,29 @@ const vue = require('vue/dist/vue.cjs.js')
app = vue.createApp({ app = vue.createApp({
data () { data () {
return { return {
minMemValue: localStorage.getItem("minMem") != null ? localStorage.getItem("minMem") : 1024 , minMemValue: localStorage.getItem('minMem') != null ? localStorage.getItem('minMem') : 1024,
maxMemValue: localStorage.getItem("maxMem") != null ? localStorage.getItem("maxMem") : 2048, maxMemValue: localStorage.getItem('maxMem') != null ? localStorage.getItem('maxMem') : 2048,
memStep: 128, memStep: 128,
memMax: totalMem, memMax: totalMem,
invalidateButtonText: "Supprimer et retélécharger les bibliothèques", invalidateButtonText: 'Supprimer et retélécharger les bibliothèques',
invalidateButtonDisabled: false, invalidateButtonDisabled: false,
displayFullscreen: "none", displayFullscreen: 'none',
displaySettings: "none", displaySettings: 'none',
displayCredits: "none", displayCredits: 'none',
nick: "Chargement", nick: 'Chargement',
launchBtnText: "Selectionnez un chapitre", launchBtnText: 'Selectionnez un chapitre',
launchBtnDisable: true, launchBtnDisable: true,
launchBtnHidden: false, launchBtnHidden: false,
loadingMessageHidden: true, loadingMessageHidden: true,
loadingMessageText: "Téléchargement de Minecraft en cours...", loadingMessageText: 'Téléchargement de Minecraft en cours...',
fullprogressbarHidden: true, fullprogressbarHidden: true,
progressbarWidth: 0, progressbarWidth: 0,
sidebarContent: "<hr><p>Chargement en cours</p>", sidebarContent: '<hr><p>Chargement en cours</p>',
modsInformations: [], modsInformations: [],
modsInformationsLoaded: true, modsInformationsLoaded: true,
selectedChapter: -1, selectedChapter: -1,
gameLaunching: false gameLaunching: false
} }
}, },
mounted () { mounted () {
iziToast.settings({ iziToast.settings({
@ -36,17 +35,17 @@ app = vue.createApp({
closeOnClick: true, closeOnClick: true,
timeout: 5000, timeout: 5000,
position: 'topRight', position: 'topRight',
resetOnHover: true, resetOnHover: true
}) })
setInterval(() => { setInterval(() => {
ipcRenderer.send("pageReady") ipcRenderer.send('pageReady')
}, 500) }, 500)
}, },
methods: { methods: {
invalidateData () { invalidateData () {
this.invalidateButtonDisabled = true this.invalidateButtonDisabled = true
this.invalidateButtonText = "Opération en cours" this.invalidateButtonText = 'Opération en cours'
this.showInfo("Opération en cours", "Suppression des données du jeu en cours") this.showInfo('Opération en cours', 'Suppression des données du jeu en cours')
ipcRenderer.send('invalidateData') ipcRenderer.send('invalidateData')
}, },
launchBtnClick () { launchBtnClick () {
@ -55,21 +54,21 @@ app = vue.createApp({
this.loadingMessageHidden = false this.loadingMessageHidden = false
if (Number(this.minMemValue) <= Number(this.maxMemValue)) { if (Number(this.minMemValue) <= Number(this.maxMemValue)) {
ipcRenderer.send('launch', { ipcRenderer.send('launch', {
minMem: this.minMemValue + "M", minMem: this.minMemValue + 'M',
maxMem: this.maxMemValue + "M", maxMem: this.maxMemValue + 'M',
chapter: this.selectedChapter chapter: this.selectedChapter
}) })
this.launchBtnDisable = true this.launchBtnDisable = true
localStorage.setItem("minMem", this.minMemValue) localStorage.setItem('minMem', this.minMemValue)
localStorage.setItem("maxMem", this.maxMemValue) localStorage.setItem('maxMem', this.maxMemValue)
this.gameLaunching = true this.gameLaunching = true
} else { } else {
this.showError("Erreur de lancement", "La mémoire minimale doit être inférieure ou égale à la mémoire maximale.") this.showError('Erreur de lancement', 'La mémoire minimale doit être inférieure ou égale à la mémoire maximale.')
} }
}, },
changeSelectedChapter (index) { changeSelectedChapter (index) {
this.selectedChapter = parseInt(index) this.selectedChapter = parseInt(index)
root.launchBtnText = "JOUER" root.launchBtnText = 'JOUER'
root.launchBtnDisable = false root.launchBtnDisable = false
}, },
disconnectBtn () { disconnectBtn () {
@ -77,26 +76,26 @@ app = vue.createApp({
}, },
options () { options () {
if (!this.gameLaunching) { if (!this.gameLaunching) {
this.displayFullscreen = "block" this.displayFullscreen = 'block'
this.displaySettings = "block" this.displaySettings = 'block'
this.displayCredits = "none" this.displayCredits = 'none'
} }
}, },
discord () { discord () {
shell.openExternal("https://discord.gg/b923tMhmRE") shell.openExternal('https://discord.gg/p3EnE6Jumg')
}, },
web () { web () {
shell.openExternal("https://altarik.fr") shell.openExternal('https://altarik.fr')
}, },
closeFullscreen () { closeFullscreen () {
this.displayFullscreen = "none" this.displayFullscreen = 'none'
this.displaySettings = "none" this.displaySettings = 'none'
this.displayCredits = "none" this.displayCredits = 'none'
}, },
credits () { credits () {
this.displayFullscreen = "block" this.displayFullscreen = 'block'
this.displaySettings = "none" this.displaySettings = 'none'
this.displayCredits = "block" this.displayCredits = 'block'
}, },
updateModsInformations (content) { updateModsInformations (content) {
this.modsInformations = content this.modsInformations = content
@ -106,28 +105,28 @@ app = vue.createApp({
}, },
showInfo (title, body) { showInfo (title, body) {
iziToast.info({ iziToast.info({
title: title, title,
message: body, message: body,
color: 'blue' color: 'blue'
}) })
}, },
showError (title, body) { showError (title, body) {
iziToast.error({ iziToast.error({
title: title, title,
message: body, message: body,
color: 'red', color: 'red'
}) })
}, },
showWarning (title, body) { showWarning (title, body) {
iziToast.warning({ iziToast.warning({
title: title, title,
message: body, message: body,
color: 'yellow' color: 'yellow'
}) })
}, },
showSuccess (title, body) { showSuccess (title, body) {
iziToast.success({ iziToast.success({
title: title, title,
message: body, message: body,
color: 'green' color: 'green'
}) })
@ -138,24 +137,24 @@ app = vue.createApp({
} }
}) })
let root = app.mount("#vue") const root = app.mount('#vue')
ipcRenderer.on("invalidated", () => { ipcRenderer.on('invalidated', () => {
root.invalidateButtonDisabled = false root.invalidateButtonDisabled = false
root.invalidateButtonText = "Supprimer et retélécharger les bibliothèques" 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") root.showSuccess('Opération terminée', 'Les données du jeu ont été supprimé avec succès')
}) })
ipcRenderer.on("progress", (e, args) => { ipcRenderer.on('progress', (e, args) => {
root.progressbarWidth = (args.task / Math.max(args.total, args.task)) * 100 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) root.loadingMessageText = 'Téléchargement de ' + args.type + ': ' + args.task + ' sur ' + Math.max(args.total, args.task)
}) })
ipcRenderer.on("close", (_e, _args) => { ipcRenderer.on('close', (_e, _args) => {
root.launchBtnHidden = false root.launchBtnHidden = false
root.fullprogressbarHidden = true root.fullprogressbarHidden = true
root.loadingMessageHidden = true root.loadingMessageHidden = true
root.loadingMessageText = "Chargement de Minecraft en cours..." root.loadingMessageText = 'Chargement de Minecraft en cours...'
root.progressbarWidth = 0 root.progressbarWidth = 0
root.launchBtnDisable = false root.launchBtnDisable = false
root.gameLaunching = false root.gameLaunching = false
@ -166,7 +165,7 @@ ipcRenderer.on('launch', (_e, _args) => {
root.loadingMessageHidden = true root.loadingMessageHidden = true
}) })
ipcRenderer.on("modsInformations", (_e, args) => { ipcRenderer.on('modsInformations', (_e, args) => {
if (args === null) { if (args === null) {
root.modsInformationsLoaded = false root.modsInformationsLoaded = false
} else { } else {
@ -175,4 +174,4 @@ ipcRenderer.on("modsInformations", (_e, args) => {
root.updateModsInformations(args) root.updateModsInformations(args)
}) })
ipcRenderer.on("nick", (_e, args) => root.nick = args.name) ipcRenderer.on('nick', (_e, args) => root.nick = args.name)

View File

@ -2,11 +2,11 @@ const vue = require('vue/dist/vue.cjs.js')
app = vue.createApp({ app = vue.createApp({
data () { data () {
return { return {
login: "Connexion", login: 'Connexion',
email: "Email", email: 'Email',
password: "Mot de passe", password: 'Mot de passe',
send_credentials: "Se connecter", send_credentials: 'Se connecter',
microsoft_button: "Connexion avec un compte Microsoft", microsoft_button: 'Connexion avec un compte Microsoft'
} }
}, },
mounted () { mounted () {
@ -15,7 +15,7 @@ app = vue.createApp({
closeOnClick: true, closeOnClick: true,
timeout: 5000, timeout: 5000,
position: 'topRight', position: 'topRight',
resetOnHover: true, resetOnHover: true
}) })
}, },
methods: { methods: {
@ -24,12 +24,12 @@ app = vue.createApp({
if (!microsoftButton.disabled) { if (!microsoftButton.disabled) {
form.disabled = true form.disabled = true
if (user.value) { if (user.value) {
ipcRenderer.send("login", { ipcRenderer.send('login', {
user: user.value, user: user.value,
pass: password.value pass: password.value
}) })
} else { } else {
this.showWarning("Erreur de connexion", "Veuillez entrer des identifiants") this.showWarning('Erreur de connexion', 'Veuillez entrer des identifiants')
form.disabled = false form.disabled = false
} }
} }
@ -39,51 +39,49 @@ app = vue.createApp({
if (!form.disabled) { if (!form.disabled) {
microsoftButton.disabled = true microsoftButton.disabled = true
form.disabled = true form.disabled = true
ipcRenderer.send("microsoft-login") ipcRenderer.send('microsoft-login')
} }
}, },
showInfo (title, body) { showInfo (title, body) {
iziToast.info({ iziToast.info({
title: title, title,
message: body, message: body,
color: 'blue' color: 'blue'
}) })
}, },
showError (title, body) { showError (title, body) {
iziToast.error({ iziToast.error({
title: title, title,
message: body, message: body,
color: 'red', color: 'red'
}) })
}, },
showWarning (title, body) { showWarning (title, body) {
iziToast.warning({ iziToast.warning({
title: title, title,
message: body, message: body,
color: 'yellow' color: 'yellow'
}) })
}, },
showSuccess (title, body) { showSuccess (title, body) {
iziToast.success({ iziToast.success({
title: title, title,
message: body, message: body,
color: 'green' color: 'green'
}) })
} }
} }
}); })
app.mount("#vue"); app.mount('#vue')
// theirs const are declared after vue cause vue modify them when declaring new vue instance // theirs const are declared after vue cause vue modify them when declaring new vue instance
const form = document.querySelector('#login-form') const form = document.querySelector('#login-form')
const user = document.querySelector('#nickname') const user = document.querySelector('#nickname')
const password = document.querySelector('#password') const password = document.querySelector('#password')
const microsoftButton = document.querySelector("#microsoft-button") const microsoftButton = document.querySelector('#microsoft-button')
ipcRenderer.on('loginError', () => {
ipcRenderer.on("loginError", () => {
form.disabled = false form.disabled = false
microsoftButton.disabled = false microsoftButton.disabled = false
}) })

View File

@ -1,29 +1,29 @@
'use strict'; 'use strict'
const { ipcRenderer, shell } = require('electron'); const { ipcRenderer, shell } = require('electron')
let app; let app
window.addEventListener("DOMContentLoaded", () => { window.addEventListener('DOMContentLoaded', () => {
const minimizeButton = document.getElementById("minimize-btn") const minimizeButton = document.getElementById('minimize-btn')
const closeButton = document.getElementById("close-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) => { ipcRenderer.on('notification', (_e, args) => {
app.notificationTitle = args.title app.notificationTitle = args.title
app.notificationMessage = args.body app.notificationMessage = args.body
switch (args.class) { switch (args.class) {
case "success": case 'success':
app._component.methods.showSuccess(args.title, args.body) app._component.methods.showSuccess(args.title, args.body)
break; break
case "warning": case 'warning':
app._component.methods.showWarning(args.title, args.body) app._component.methods.showWarning(args.title, args.body)
break; break
case "error": case 'error':
app._component.methods.showError(args.title, args.body) app._component.methods.showError(args.title, args.body)
break; break
case "info":default: case 'info':default:
app._component.methods.showInfo(args.title, args.body) app._component.methods.showInfo(args.title, args.body)
} }
}) })

View File

@ -69,6 +69,8 @@ export default class Minecraft {
}) })
}).catch(err => { }).catch(err => {
event.sender.send('loginError') 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') { if (err !== 'error.gui.closed') {
logger.error('[MS login] ' + lst(err)) logger.error('[MS login] ' + lst(err))
this.showNotification('Une erreur de connexion à Xbox est survenue', lst(err), 'error') this.showNotification('Une erreur de connexion à Xbox est survenue', lst(err), 'error')

View File

@ -1572,10 +1572,10 @@ ecc-jsbn@~0.1.1:
jsbn "~0.1.0" jsbn "~0.1.0"
safer-buffer "^2.1.0" safer-buffer "^2.1.0"
electron-is-dev@^2.0.0: electron-is-dev@^3.0.1:
version "2.0.0" version "3.0.1"
resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-2.0.0.tgz#833487a069b8dad21425c67a19847d9064ab19bd" resolved "https://registry.yarnpkg.com/electron-is-dev/-/electron-is-dev-3.0.1.tgz#1cbc79b1dd046787903acd357efdfab6549dc17a"
integrity sha512-3X99K852Yoqu9AcW50qz3ibYBWY79/pBhlMCab8ToEWS48R0T9tyxRiQhwylE7zQdXrMnx2JKqUJyMPmt5FBqA== integrity sha512-8TjjAh8Ec51hUi3o4TaU0mD3GMTOESi866oRNavj9A3IQJ7pmv+MJVmdZBFGw4GFT36X7bkqnuDNYvkQgvyI8Q==
electron-log@^5.0.3: electron-log@^5.0.3:
version "5.0.3" version "5.0.3"