diff --git a/html/src/app.js b/html/src/app.js index d46903ec..245f9816 100644 --- a/html/src/app.js +++ b/html/src/app.js @@ -6540,7 +6540,17 @@ speechSynthesis.getVoices(); } }; + $app.data.twoFactorAuthDialogVisible = false; + + API.$on('LOGIN', function () { + $app.twoFactorAuthDialogVisible = false; + }); + $app.methods.promptTOTP = function () { + if (this.twoFactorAuthDialogVisible) { + return; + } + this.twoFactorAuthDialogVisible = true; this.$prompt($t('prompt.totp.description'), $t('prompt.totp.header'), { distinguishCancelAndClose: true, cancelButtonText: $t('prompt.totp.use_otp'), @@ -6564,11 +6574,19 @@ speechSynthesis.getVoices(); } else if (action === 'cancel') { this.promptOTP(); } + }, + beforeClose: (action, instance, done) => { + this.twoFactorAuthDialogVisible = false; + done(); } }); }; $app.methods.promptOTP = function () { + if (this.twoFactorAuthDialogVisible) { + return; + } + this.twoFactorAuthDialogVisible = true; this.$prompt($t('prompt.otp.description'), $t('prompt.otp.header'), { distinguishCancelAndClose: true, cancelButtonText: $t('prompt.otp.use_otp'), @@ -6592,11 +6610,19 @@ speechSynthesis.getVoices(); } else if (action === 'cancel') { this.promptTOTP(); } + }, + beforeClose: (action, instance, done) => { + this.twoFactorAuthDialogVisible = false; + done(); } }); }; $app.methods.promptEmailOTP = function () { + if (this.twoFactorAuthDialogVisible) { + return; + } + this.twoFactorAuthDialogVisible = true; this.$prompt( $t('prompt.email_otp.description'), $t('prompt.email_otp.header'), @@ -6621,6 +6647,10 @@ speechSynthesis.getVoices(); return args; }); } + }, + beforeClose: (action, instance, done) => { + this.twoFactorAuthDialogVisible = false; + done(); } } ); @@ -21955,7 +21985,7 @@ speechSynthesis.getVoices(); API.$on('LOGIN', async function () { $app.avatarHistory = new Set(); var historyArray = await database.getAvatarHistory(); - $app.avatarHistoryArray = historyArray.reverse(); + $app.avatarHistoryArray = historyArray; for (var i = 0; i < historyArray.length; i++) { $app.avatarHistory.add(historyArray[i].id); this.applyAvatar(historyArray[i]); diff --git a/html/src/repository/database.js b/html/src/repository/database.js index 04b71258..52422fb8 100644 --- a/html/src/repository/database.js +++ b/html/src/repository/database.js @@ -1583,7 +1583,7 @@ class Database { updated_at: dbRow[12], version: dbRow[13] }; - data.unshift(row); + data.push(row); }, `SELECT * FROM ${Database.userPrefix}_avatar_history INNER JOIN cache_avatar ON cache_avatar.id = ${Database.userPrefix}_avatar_history.avatar_id ORDER BY ${Database.userPrefix}_avatar_history.created_at DESC LIMIT 100`); return data; }