diff --git a/Jellyfin.Server.Implementations/Devices/DeviceManager.cs b/Jellyfin.Server.Implementations/Devices/DeviceManager.cs
index a4b4c1959..d8eee1246 100644
--- a/Jellyfin.Server.Implementations/Devices/DeviceManager.cs
+++ b/Jellyfin.Server.Implementations/Devices/DeviceManager.cs
@@ -110,21 +110,21 @@ namespace Jellyfin.Server.Implementations.Devices
///
public async Task GetDevice(string id)
{
- Device? device;
var dbContext = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
await using (dbContext.ConfigureAwait(false))
{
- device = await dbContext.Devices
+ var device = await dbContext.Devices
.Where(d => d.DeviceId == id)
.OrderByDescending(d => d.DateLastActivity)
.Include(d => d.User)
+ .SelectMany(d => dbContext.DeviceOptions.Where(o => o.DeviceId == d.DeviceId).DefaultIfEmpty(), (d, o) => new { Device = d, Options = o })
.FirstOrDefaultAsync()
.ConfigureAwait(false);
+
+ var deviceInfo = device is null ? null : ToDeviceInfo(device.Device, device.Options);
+
+ return deviceInfo;
}
-
- var deviceInfo = device is null ? null : ToDeviceInfo(device);
-
- return deviceInfo;
}
///
@@ -172,15 +172,15 @@ namespace Jellyfin.Server.Implementations.Devices
var dbContext = await _dbProvider.CreateDbContextAsync().ConfigureAwait(false);
await using (dbContext.ConfigureAwait(false))
{
- IAsyncEnumerable sessions = dbContext.Devices
+ var sessions = dbContext.Devices
.Include(d => d.User)
.OrderByDescending(d => d.DateLastActivity)
.ThenBy(d => d.DeviceId)
+ .SelectMany(d => dbContext.DeviceOptions.Where(o => o.DeviceId == d.DeviceId).DefaultIfEmpty(), (d, o) => new { Device = d, Options = o })
.AsAsyncEnumerable();
-
if (supportsSync.HasValue)
{
- sessions = sessions.Where(i => GetCapabilities(i.DeviceId).SupportsSync == supportsSync.Value);
+ sessions = sessions.Where(i => GetCapabilities(i.Device.DeviceId).SupportsSync == supportsSync.Value);
}
if (userId.HasValue)
@@ -191,10 +191,10 @@ namespace Jellyfin.Server.Implementations.Devices
throw new ResourceNotFoundException();
}
- sessions = sessions.Where(i => CanAccessDevice(user, i.DeviceId));
+ sessions = sessions.Where(i => CanAccessDevice(user, i.Device.DeviceId));
}
- var array = await sessions.Select(device => ToDeviceInfo(device)).ToArrayAsync().ConfigureAwait(false);
+ var array = await sessions.Select(device => ToDeviceInfo(device.Device, device.Options)).ToArrayAsync().ConfigureAwait(false);
return new QueryResult(array);
}
@@ -226,7 +226,7 @@ namespace Jellyfin.Server.Implementations.Devices
|| !GetCapabilities(deviceId).SupportsPersistentIdentifier;
}
- private DeviceInfo ToDeviceInfo(Device authInfo)
+ private DeviceInfo ToDeviceInfo(Device authInfo, DeviceOptions? options = null)
{
var caps = GetCapabilities(authInfo.DeviceId);
@@ -239,7 +239,8 @@ namespace Jellyfin.Server.Implementations.Devices
LastUserName = authInfo.User.Username,
Name = authInfo.DeviceName,
DateLastActivity = authInfo.DateLastActivity,
- IconUrl = caps.IconUrl
+ IconUrl = caps.IconUrl,
+ CustomName = options?.CustomName,
};
}
}
diff --git a/MediaBrowser.Model/Devices/DeviceInfo.cs b/MediaBrowser.Model/Devices/DeviceInfo.cs
index 7a1c7a738..4962992a0 100644
--- a/MediaBrowser.Model/Devices/DeviceInfo.cs
+++ b/MediaBrowser.Model/Devices/DeviceInfo.cs
@@ -15,6 +15,8 @@ namespace MediaBrowser.Model.Devices
public string Name { get; set; }
+ public string CustomName { get; set; }
+
///
/// Gets or sets the access token.
///