Refactored api call logic handling.

This commit is contained in:
ArabCoders
2023-11-13 15:51:06 +03:00
parent 250e795c3b
commit 2a25c5a2e3
4 changed files with 97 additions and 52 deletions

View File

@@ -6,6 +6,7 @@ using System;
using System.Collections.Concurrent;
using System.Collections.Generic;
using System.Globalization;
using System.Reflection;
using System.Threading;
using Jellyfin.Data.Entities;
using MediaBrowser.Controller.Configuration;
@@ -81,6 +82,42 @@ namespace Emby.Server.Implementations.Library
});
}
public void SaveUserData(User user, BaseItem item, UserDataDto userDataDto, UserDataSaveReason reason)
{
ArgumentNullException.ThrowIfNull(user);
ArgumentNullException.ThrowIfNull(item);
ArgumentNullException.ThrowIfNull(reason);
ArgumentNullException.ThrowIfNull(userDataDto);
var userData = GetUserData(user, item);
var parentProperties = userDataDto.GetType().GetProperties();
var childProperties = userData.GetType().GetProperties();
foreach (var parentProperty in parentProperties)
{
foreach (var childProperty in childProperties)
{
if (parentProperty.Name != childProperty.Name)
{
continue;
}
var value = parentProperty.GetValue(userDataDto, null);
if (value is null)
{
continue;
}
childProperty.SetValue(userData, value, null);
break;
}
}
SaveUserData(user, item, userData, reason, CancellationToken.None);
}
/// <summary>
/// Save the provided user data for the given user. Batch operation. Does not fire any events or update the cache.
/// </summary>