@@ -645,9 +648,16 @@ const UserList = () => {
className="text-base font-bold leading-5 transition duration-300 hover:underline"
data-testid="user-list-username-link"
>
- {user.displayName}
+ {user.username ||
+ user.jellyfinUsername ||
+ user.plexUsername ||
+ user.email}
- {user.displayName.toLowerCase() !== user.email && (
+ {(
+ user.username ||
+ user.jellyfinUsername ||
+ user.plexUsername
+ )?.toLowerCase() !== user.email && (
{user.email}
diff --git a/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx b/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx
index 7b100a0d1..3bcf1a049 100644
--- a/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx
+++ b/src/components/UserProfile/UserSettings/UserGeneralSettings/index.tsx
@@ -93,9 +93,14 @@ const UserGeneralSettings = () => {
);
const UserGeneralSettingsSchema = Yup.object().shape({
- email: Yup.string()
- .email(intl.formatMessage(messages.validationemailformat))
- .required(intl.formatMessage(messages.validationemailrequired)),
+ email:
+ user?.id === 1
+ ? Yup.string()
+ .email(intl.formatMessage(messages.validationemailformat))
+ .required(intl.formatMessage(messages.validationemailrequired))
+ : Yup.string().email(
+ intl.formatMessage(messages.validationemailformat)
+ ),
discordId: Yup.string()
.nullable()
.matches(/^\d{17,19}$/, intl.formatMessage(messages.validationDiscordId)),
@@ -134,7 +139,7 @@ const UserGeneralSettings = () => {
{
},
body: JSON.stringify({
username: values.displayName,
- email: values.email,
+ email:
+ values.email || user?.jellyfinUsername || user?.plexUsername,
discordId: values.discordId,
locale: values.locale,
region: values.region,
@@ -264,7 +270,9 @@ const UserGeneralSettings = () => {
name="displayName"
type="text"
placeholder={
- user?.plexUsername ? user.plexUsername : user?.email
+ user?.username ||
+ user?.jellyfinUsername ||
+ user?.plexUsername
}
/>
@@ -289,6 +297,7 @@ const UserGeneralSettings = () => {
name="email"
type="text"
placeholder="example@domain.com"
+ disabled={user?.plexUsername}
className={
user?.warnings.find((w) => w === 'userEmailRequired')
? 'border-2 border-red-400 focus:border-blue-600'
diff --git a/src/hooks/useUser.ts b/src/hooks/useUser.ts
index fa034437d..f1e830066 100644
--- a/src/hooks/useUser.ts
+++ b/src/hooks/useUser.ts
@@ -12,6 +12,7 @@ export interface User {
id: number;
warnings: string[];
plexUsername?: string;
+ jellyfinUsername?: string;
username?: string;
displayName: string;
email: string;
diff --git a/src/i18n/locale/en.json b/src/i18n/locale/en.json
index 390a7e1bb..3dc25214b 100644
--- a/src/i18n/locale/en.json
+++ b/src/i18n/locale/en.json
@@ -1111,7 +1111,6 @@
"components.UserList.creating": "Creating…",
"components.UserList.deleteconfirm": "Are you sure you want to delete this user? All of their request data will be permanently removed.",
"components.UserList.deleteuser": "Delete User",
- "components.UserList.displayName": "Display Name",
"components.UserList.edituser": "Edit User Permissions",
"components.UserList.email": "Email Address",
"components.UserList.importedfromJellyfin": "
{userCount} {mediaServerName} {userCount, plural, one {user} other {users}} imported successfully!",
@@ -1145,9 +1144,11 @@
"components.UserList.userdeleteerror": "Something went wrong while deleting the user.",
"components.UserList.userfail": "Something went wrong while saving user permissions.",
"components.UserList.userlist": "User List",
+ "components.UserList.username": "Username",
"components.UserList.users": "Users",
"components.UserList.userssaved": "User permissions saved successfully!",
- "components.UserList.validationEmail": "You must provide a valid email address",
+ "components.UserList.validationEmail": "Email required",
+ "components.UserList.validationUsername": "You must provide an username",
"components.UserList.validationpasswordminchars": "Password is too short; should be a minimum of 8 characters",
"components.UserProfile.ProfileHeader.joindate": "Joined {joindate}",
"components.UserProfile.ProfileHeader.profile": "View Profile",