Fix icon loading on initial game sync
This commit is contained in:
parent
6b5824e920
commit
f63c2ddf2d
3 changed files with 25 additions and 17 deletions
|
@ -90,8 +90,6 @@ namespace LANCommander.PlaynitePlugin
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
var iconUri = new Uri(new Uri(Settings.ServerAddress), $"Games/GetIcon/{game.Id}");
|
|
||||||
|
|
||||||
var metadata = new GameMetadata()
|
var metadata = new GameMetadata()
|
||||||
{
|
{
|
||||||
IsInstalled = false,
|
IsInstalled = false,
|
||||||
|
@ -101,7 +99,7 @@ namespace LANCommander.PlaynitePlugin
|
||||||
GameId = game.Id.ToString(),
|
GameId = game.Id.ToString(),
|
||||||
ReleaseDate = new ReleaseDate(manifest.ReleasedOn),
|
ReleaseDate = new ReleaseDate(manifest.ReleasedOn),
|
||||||
//Version = game.Archives.OrderByDescending(a => a.CreatedOn).FirstOrDefault().Version,
|
//Version = game.Archives.OrderByDescending(a => a.CreatedOn).FirstOrDefault().Version,
|
||||||
Icon = new MetadataFile(iconUri.ToString()),
|
Icon = new MetadataFile($"{Settings.ServerAddress}{manifest.Icon}"),
|
||||||
GameActions = game.Actions.OrderBy(a => a.SortOrder).Select(a => new PN.SDK.Models.GameAction()
|
GameActions = game.Actions.OrderBy(a => a.SortOrder).Select(a => new PN.SDK.Models.GameAction()
|
||||||
{
|
{
|
||||||
Name = a.Name,
|
Name = a.Name,
|
||||||
|
@ -112,14 +110,6 @@ namespace LANCommander.PlaynitePlugin
|
||||||
}).ToList()
|
}).ToList()
|
||||||
};
|
};
|
||||||
|
|
||||||
if (existingGame != null)
|
|
||||||
{
|
|
||||||
metadata.IsInstalled = true;
|
|
||||||
metadata.Version = existingGame.Version;
|
|
||||||
metadata.InstallDirectory = existingGame.InstallDirectory;
|
|
||||||
metadata.InstallSize = existingGame.InstallSize;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (manifest.Genre != null && manifest.Genre.Count() > 0)
|
if (manifest.Genre != null && manifest.Genre.Count() > 0)
|
||||||
metadata.Genres = new HashSet<MetadataProperty>(manifest.Genre.Select(g => new MetadataNameProperty(g)));
|
metadata.Genres = new HashSet<MetadataProperty>(manifest.Genre.Select(g => new MetadataNameProperty(g)));
|
||||||
|
|
||||||
|
@ -285,11 +275,16 @@ namespace LANCommander.PlaynitePlugin
|
||||||
{
|
{
|
||||||
var game = PlayniteApi.Database.Games.First(g => g.GameId == gameId.ToString());
|
var game = PlayniteApi.Database.Games.First(g => g.GameId == gameId.ToString());
|
||||||
|
|
||||||
|
if (game == null)
|
||||||
|
return;
|
||||||
|
|
||||||
if (game.GameActions == null)
|
if (game.GameActions == null)
|
||||||
game.GameActions = new ObservableCollection<PN.SDK.Models.GameAction>();
|
game.GameActions = new ObservableCollection<PN.SDK.Models.GameAction>();
|
||||||
else
|
else
|
||||||
game.GameActions.Clear();
|
game.GameActions.Clear();
|
||||||
|
|
||||||
|
game.Icon = $"{Settings.ServerAddress}{manifest.Icon}";
|
||||||
|
|
||||||
foreach (var action in manifest.Actions.OrderBy(a => a.SortOrder))
|
foreach (var action in manifest.Actions.OrderBy(a => a.SortOrder))
|
||||||
{
|
{
|
||||||
bool isFirstAction = !manifest.Actions.Any(a => a.IsPrimaryAction) && manifest.Actions.First().Name == action.Name;
|
bool isFirstAction = !manifest.Actions.Any(a => a.IsPrimaryAction) && manifest.Actions.First().Name == action.Name;
|
||||||
|
|
|
@ -41,6 +41,8 @@ namespace LANCommander.Controllers.Api
|
||||||
{
|
{
|
||||||
var manifest = await GameService.GetManifest(id);
|
var manifest = await GameService.GetManifest(id);
|
||||||
|
|
||||||
|
manifest.Icon = Url.Action(nameof(GetIcon), new { id = id });
|
||||||
|
|
||||||
return manifest;
|
return manifest;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -64,5 +66,21 @@ namespace LANCommander.Controllers.Api
|
||||||
|
|
||||||
return File(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read), "application/octet-stream", $"{game.Title.SanitizeFilename()}.zip");
|
return File(new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read), "application/octet-stream", $"{game.Title.SanitizeFilename()}.zip");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[AllowAnonymous]
|
||||||
|
[HttpGet("{id}/Icon.png")]
|
||||||
|
public async Task<IActionResult> GetIcon(Guid id)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var game = await GameService.Get(id);
|
||||||
|
|
||||||
|
return File(GameService.GetIcon(game), "image/png");
|
||||||
|
}
|
||||||
|
catch (FileNotFoundException ex)
|
||||||
|
{
|
||||||
|
return NotFound();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ namespace LANCommander.Services
|
||||||
Description = game.Description,
|
Description = game.Description,
|
||||||
ReleasedOn = game.ReleasedOn.GetValueOrDefault(),
|
ReleasedOn = game.ReleasedOn.GetValueOrDefault(),
|
||||||
Singleplayer = game.Singleplayer,
|
Singleplayer = game.Singleplayer,
|
||||||
|
Icon = game.Icon
|
||||||
};
|
};
|
||||||
|
|
||||||
if (game.Genres != null && game.Genres.Count > 0)
|
if (game.Genres != null && game.Genres.Count > 0)
|
||||||
|
@ -57,12 +58,6 @@ namespace LANCommander.Services
|
||||||
if (game.Archives != null && game.Archives.Count > 0)
|
if (game.Archives != null && game.Archives.Count > 0)
|
||||||
manifest.Version = game.Archives.OrderByDescending(a => a.CreatedOn).First().Version;
|
manifest.Version = game.Archives.OrderByDescending(a => a.CreatedOn).First().Version;
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
manifest.Icon = Convert.ToBase64String(GetIcon(game));
|
|
||||||
}
|
|
||||||
catch { }
|
|
||||||
|
|
||||||
if (game.Actions != null && game.Actions.Count > 0)
|
if (game.Actions != null && game.Actions.Count > 0)
|
||||||
{
|
{
|
||||||
manifest.Actions = game.Actions.Select(a => new GameAction()
|
manifest.Actions = game.Actions.Select(a => new GameAction()
|
||||||
|
|
Loading…
Add table
Reference in a new issue