diff options
| -rw-r--r-- | Jellyfin.Data/Entities/User.cs | 42 |
1 files changed, 33 insertions, 9 deletions
diff --git a/Jellyfin.Data/Entities/User.cs b/Jellyfin.Data/Entities/User.cs index e309e54de..26c46a704 100644 --- a/Jellyfin.Data/Entities/User.cs +++ b/Jellyfin.Data/Entities/User.cs @@ -362,7 +362,7 @@ namespace Jellyfin.Data.Entities /// <returns><c>True</c> if the user has the specified permission.</returns> public bool HasPermission(PermissionKind kind) { - return Permissions.First(p => p.Kind == kind).Value; + return Permissions.FirstOrDefault(p => p.Kind == kind)?.Value ?? false; } /// <summary> @@ -372,7 +372,15 @@ namespace Jellyfin.Data.Entities /// <param name="value">The value to set.</param> public void SetPermission(PermissionKind kind, bool value) { - Permissions.First(p => p.Kind == kind).Value = value; + var currentPermission = Permissions.FirstOrDefault(p => p.Kind == kind); + if (currentPermission == null) + { + Permissions.Add(new Permission(kind, value)); + } + else + { + currentPermission.Value = value; + } } /// <summary> @@ -382,9 +390,9 @@ namespace Jellyfin.Data.Entities /// <returns>A string array containing the user's preferences.</returns> public string[] GetPreference(PreferenceKind preference) { - var val = Preferences.First(p => p.Kind == preference).Value; + var val = Preferences.FirstOrDefault(p => p.Kind == preference)?.Value; - return Equals(val, string.Empty) ? Array.Empty<string>() : val.Split(Delimiter); + return string.IsNullOrEmpty(val) ? Array.Empty<string>() : val.Split(Delimiter); } /// <summary> @@ -395,7 +403,7 @@ namespace Jellyfin.Data.Entities /// <returns>A {T} array containing the user's preference.</returns> public T[] GetPreferenceValues<T>(PreferenceKind preference) { - var val = Preferences.First(p => p.Kind == preference).Value; + var val = Preferences.FirstOrDefault(p => p.Kind == preference)?.Value; if (string.IsNullOrEmpty(val)) { return Array.Empty<T>(); @@ -432,8 +440,16 @@ namespace Jellyfin.Data.Entities /// <param name="values">The values.</param> public void SetPreference(PreferenceKind preference, string[] values) { - Preferences.First(p => p.Kind == preference).Value - = string.Join(Delimiter, values); + var value = string.Join(Delimiter, values); + var currentPreference = Preferences.FirstOrDefault(p => p.Kind == preference); + if (currentPreference == null) + { + Preferences.Add(new Preference(preference, value)); + } + else + { + currentPreference.Value = value; + } } /// <summary> @@ -444,8 +460,16 @@ namespace Jellyfin.Data.Entities /// <typeparam name="T">The type of value.</typeparam> public void SetPreference<T>(PreferenceKind preference, T[] values) { - Preferences.First(p => p.Kind == preference).Value - = string.Join(Delimiter, values); + var value = string.Join(Delimiter, values); + var currentPreference = Preferences.FirstOrDefault(p => p.Kind == preference); + if (currentPreference == null) + { + Preferences.Add(new Preference(preference, value)); + } + else + { + currentPreference.Value = value; + } } /// <summary> |
