diff --git a/dashboard/package.json b/dashboard/package.json
index febeb0989..be45bba8e 100644
--- a/dashboard/package.json
+++ b/dashboard/package.json
@@ -7,7 +7,7 @@
},
"type": "module",
"dependencies": {
- "@eslint/js": "^9.17.0",
+ "@eslint/js": "^9.18.0",
"@fontsource/arimo": "^5.1.1",
"@fontsource/dm-sans": "^5.1.1",
"@fontsource/inter": "^5.1.1",
@@ -25,9 +25,9 @@
"jquery": "^3.7.1",
"marked": "^15.0.6",
"moment": "^2.30.1",
- "pankow": "^2.6.2",
+ "pankow": "^2.6.3",
"pankow-viewers": "^1.0.11",
- "sass": "^1.83.1",
+ "sass": "^1.83.4",
"vite": "^6.0.7",
"vue": "^3.5.13",
"vue-i18n": "^11.0.1",
diff --git a/dashboard/src/components/ProfileView.vue b/dashboard/src/components/ProfileView.vue
index 574632684..c289fa77b 100644
--- a/dashboard/src/components/ProfileView.vue
+++ b/dashboard/src/components/ProfileView.vue
@@ -22,13 +22,13 @@
| {{ $t('main.displayName') }} |
- {{ user.displayName }}
+ {{ user.displayName }}
|
| {{ $t('profile.primaryEmail') }} |
- {{ user.email }}
+ {{ user.email }}
|
@@ -111,15 +111,15 @@ async function onSelectLanguage(lang) {
async function onChangeDisplayName(currentDisplayName) {
const displayName = await inputDialog.value.prompt({
- message: 'Display Name',
+ message: t('profile.changeDisplayName.title'),
modal: false,
value: currentDisplayName,
confirmStyle: 'success',
- confirmLabel: 'Save',
- rejectLabel: 'Close'
+ confirmLabel: t('main.dialog.save'),
+ rejectLabel: t('main.dialog.cancel')
});
- if (!displayName) return;
+ if (!displayName || currentDisplayName === displayName) return;
const error = await profileModel.setDisplayName(displayName);
if (error) return console.error('Failed to set displayName', error);
@@ -127,6 +127,25 @@ async function onChangeDisplayName(currentDisplayName) {
user.value = await profileModel.get();
}
+async function onChangeEmail(currentEmail) {
+ const result = await inputDialog.value.prompt({
+ message: [ t('profile.changeEmail.title'), t('profile.changeEmail.password') ],
+ type: [ 'email', 'password' ],
+ modal: false,
+ value: [ currentEmail, '' ],
+ confirmStyle: 'success',
+ confirmLabel: t('main.dialog.save'),
+ rejectLabel: t('main.dialog.cancel')
+ });
+
+ if (!result || !result[0] || !result[1] || currentEmail === result[0]) return;
+
+ const error = await profileModel.setEmail(result[0], result[1]);
+ if (error) return console.error('Failed to set email', error);
+
+ user.value = await profileModel.get();
+}
+