mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-05-06 06:46:04 +02:00
Merge branch 'screenshots' of https://github.com/SwingingTeacup/VRCX into screenshots
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
<wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
|
||||||
|
<s:String x:Key="/Default/CodeEditing/Localization/Localizable/@EntryValue">No</s:String></wpf:ResourceDictionary>
|
||||||
+65
-4
@@ -6540,7 +6540,17 @@ speechSynthesis.getVoices();
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$app.data.twoFactorAuthDialogVisible = false;
|
||||||
|
|
||||||
|
API.$on('LOGIN', function () {
|
||||||
|
$app.twoFactorAuthDialogVisible = false;
|
||||||
|
});
|
||||||
|
|
||||||
$app.methods.promptTOTP = function () {
|
$app.methods.promptTOTP = function () {
|
||||||
|
if (this.twoFactorAuthDialogVisible) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.twoFactorAuthDialogVisible = true;
|
||||||
this.$prompt($t('prompt.totp.description'), $t('prompt.totp.header'), {
|
this.$prompt($t('prompt.totp.description'), $t('prompt.totp.header'), {
|
||||||
distinguishCancelAndClose: true,
|
distinguishCancelAndClose: true,
|
||||||
cancelButtonText: $t('prompt.totp.use_otp'),
|
cancelButtonText: $t('prompt.totp.use_otp'),
|
||||||
@@ -6564,11 +6574,19 @@ speechSynthesis.getVoices();
|
|||||||
} else if (action === 'cancel') {
|
} else if (action === 'cancel') {
|
||||||
this.promptOTP();
|
this.promptOTP();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
beforeClose: (action, instance, done) => {
|
||||||
|
this.twoFactorAuthDialogVisible = false;
|
||||||
|
done();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.promptOTP = function () {
|
$app.methods.promptOTP = function () {
|
||||||
|
if (this.twoFactorAuthDialogVisible) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.twoFactorAuthDialogVisible = true;
|
||||||
this.$prompt($t('prompt.otp.description'), $t('prompt.otp.header'), {
|
this.$prompt($t('prompt.otp.description'), $t('prompt.otp.header'), {
|
||||||
distinguishCancelAndClose: true,
|
distinguishCancelAndClose: true,
|
||||||
cancelButtonText: $t('prompt.otp.use_otp'),
|
cancelButtonText: $t('prompt.otp.use_otp'),
|
||||||
@@ -6592,17 +6610,25 @@ speechSynthesis.getVoices();
|
|||||||
} else if (action === 'cancel') {
|
} else if (action === 'cancel') {
|
||||||
this.promptTOTP();
|
this.promptTOTP();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
beforeClose: (action, instance, done) => {
|
||||||
|
this.twoFactorAuthDialogVisible = false;
|
||||||
|
done();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
$app.methods.promptEmailOTP = function () {
|
$app.methods.promptEmailOTP = function () {
|
||||||
|
if (this.twoFactorAuthDialogVisible) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.twoFactorAuthDialogVisible = true;
|
||||||
this.$prompt(
|
this.$prompt(
|
||||||
$t('prompt.email_otp.description'),
|
$t('prompt.email_otp.description'),
|
||||||
$t('prompt.email_otp.header'),
|
$t('prompt.email_otp.header'),
|
||||||
{
|
{
|
||||||
distinguishCancelAndClose: true,
|
distinguishCancelAndClose: true,
|
||||||
cancelButtonText: $t('prompt.email_otp.cancel'),
|
cancelButtonText: $t('prompt.email_otp.resend'),
|
||||||
confirmButtonText: $t('prompt.email_otp.verify'),
|
confirmButtonText: $t('prompt.email_otp.verify'),
|
||||||
inputPlaceholder: $t('prompt.email_otp.input_placeholder'),
|
inputPlaceholder: $t('prompt.email_otp.input_placeholder'),
|
||||||
inputPattern: /^[0-9]{6}$/,
|
inputPattern: /^[0-9]{6}$/,
|
||||||
@@ -6620,12 +6646,42 @@ speechSynthesis.getVoices();
|
|||||||
API.getCurrentUser();
|
API.getCurrentUser();
|
||||||
return args;
|
return args;
|
||||||
});
|
});
|
||||||
|
} else if (action === 'cancel') {
|
||||||
|
this.resendEmail2fa();
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
beforeClose: (action, instance, done) => {
|
||||||
|
this.twoFactorAuthDialogVisible = false;
|
||||||
|
done();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
$app.methods.resendEmail2fa = function () {
|
||||||
|
if (this.loginForm.lastUserLoggedIn) {
|
||||||
|
var user =
|
||||||
|
this.loginForm.savedCredentials[
|
||||||
|
this.loginForm.lastUserLoggedIn
|
||||||
|
];
|
||||||
|
if (typeof user !== 'undefined') {
|
||||||
|
webApiService.clearCookies();
|
||||||
|
this.relogin(user).then(() => {
|
||||||
|
new Noty({
|
||||||
|
type: 'success',
|
||||||
|
text: 'Successfully relogged in.'
|
||||||
|
}).show();
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
new Noty({
|
||||||
|
type: 'error',
|
||||||
|
text: 'Cannot send 2FA email without saved credentials. Please login again.'
|
||||||
|
}).show();
|
||||||
|
this.promptEmailOTP();
|
||||||
|
};
|
||||||
|
|
||||||
$app.methods.showExportFriendsListDialog = function () {
|
$app.methods.showExportFriendsListDialog = function () {
|
||||||
var {friends} = API.currentUser;
|
var {friends} = API.currentUser;
|
||||||
if (Array.isArray(friends) === false) {
|
if (Array.isArray(friends) === false) {
|
||||||
@@ -6734,6 +6790,8 @@ speechSynthesis.getVoices();
|
|||||||
API.$on('LOGOUT', async function () {
|
API.$on('LOGOUT', async function () {
|
||||||
await $app.updateStoredUser(this.currentUser);
|
await $app.updateStoredUser(this.currentUser);
|
||||||
webApiService.clearCookies();
|
webApiService.clearCookies();
|
||||||
|
// eslint-disable-next-line require-atomic-updates
|
||||||
|
$app.loginForm.lastUserLoggedIn = '';
|
||||||
configRepository.remove('lastUserLoggedIn');
|
configRepository.remove('lastUserLoggedIn');
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -6901,7 +6959,9 @@ speechSynthesis.getVoices();
|
|||||||
API.login({
|
API.login({
|
||||||
username: loginParmas.username,
|
username: loginParmas.username,
|
||||||
password: pwd,
|
password: pwd,
|
||||||
cipher: loginParmas.password
|
cipher: loginParmas.password,
|
||||||
|
endpoint: loginParmas.endpoint,
|
||||||
|
websocket: loginParmas.websocket
|
||||||
})
|
})
|
||||||
.catch((err2) => {
|
.catch((err2) => {
|
||||||
this.loginForm.loading = false;
|
this.loginForm.loading = false;
|
||||||
@@ -6934,9 +6994,10 @@ speechSynthesis.getVoices();
|
|||||||
endpoint: loginParmas.endpoint,
|
endpoint: loginParmas.endpoint,
|
||||||
websocket: loginParmas.websocket
|
websocket: loginParmas.websocket
|
||||||
})
|
})
|
||||||
.catch(() => {
|
.catch((err2) => {
|
||||||
this.loginForm.loading = false;
|
this.loginForm.loading = false;
|
||||||
API.logout();
|
API.logout();
|
||||||
|
reject(err2);
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.loginForm.loading = false;
|
this.loginForm.loading = false;
|
||||||
@@ -21984,7 +22045,7 @@ speechSynthesis.getVoices();
|
|||||||
API.$on('LOGIN', async function () {
|
API.$on('LOGIN', async function () {
|
||||||
$app.avatarHistory = new Set();
|
$app.avatarHistory = new Set();
|
||||||
var historyArray = await database.getAvatarHistory();
|
var historyArray = await database.getAvatarHistory();
|
||||||
$app.avatarHistoryArray = historyArray.reverse();
|
$app.avatarHistoryArray = historyArray;
|
||||||
for (var i = 0; i < historyArray.length; i++) {
|
for (var i = 0; i < historyArray.length; i++) {
|
||||||
$app.avatarHistory.add(historyArray[i].id);
|
$app.avatarHistory.add(historyArray[i].id);
|
||||||
this.applyAvatar(historyArray[i]);
|
this.applyAvatar(historyArray[i]);
|
||||||
|
|||||||
@@ -1073,7 +1073,7 @@
|
|||||||
"email_otp": {
|
"email_otp": {
|
||||||
"header": "Two-factor Authentication",
|
"header": "Two-factor Authentication",
|
||||||
"description": "Enter a numeric code that was sent to your email",
|
"description": "Enter a numeric code that was sent to your email",
|
||||||
"cancel": "Cancel",
|
"resend": "Resend Email",
|
||||||
"verify": "Verify",
|
"verify": "Verify",
|
||||||
"input_placeholder": "Code",
|
"input_placeholder": "Code",
|
||||||
"input_error": "Invalid Code"
|
"input_error": "Invalid Code"
|
||||||
|
|||||||
@@ -1583,7 +1583,7 @@ class Database {
|
|||||||
updated_at: dbRow[12],
|
updated_at: dbRow[12],
|
||||||
version: dbRow[13]
|
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`);
|
}, `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;
|
return data;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user